ASLR對Windows安全的實際意義
想象一下:內建于Windows服務器的安全控制(默認啟用),可在操作系統啟動時就開始攔截惡意軟件。好吧,如果你正在運行Windows Server 2008或R2,那么你已經有這種安全保護了。實際上,如果你的企業客戶使用的是Windows Vista或者Windows 7,他們也有這種機制。這就是所謂的地址空間布局隨機化(address space layout randomization,ASLR)。
ASLR通過將系統可執行程序隨機裝載到內存里,從而防止緩沖溢出攻擊。如果一個動態鏈接庫(DLL)文件的動態重定位(dynamic-relocation)標志設置為真,那么它就會自動地隨機裝載到內存中。那些在特定內存區域尋找特定文件的惡意軟件就會失效,不能再滲透漏洞。實際上,ASLR還能通過讓那些正受攻擊的系統文件崩潰來誤導惡意軟件。
ASLR的另一項卓越功能是它能很好地與動態內存( Dynamic Memory)協同工作。動態內存是Windows Server 2008 R2 SP1中的新功能,能在需要的時候為Hyper-V虛擬機動態地分配內存。此外,ASLR技術對客戶端性能的影響幾乎可以忽略不計。
當然,ASLR并不是多么新鮮的東西。第三方終端保護供應商多年前就已經提供了ASLR。Linux平臺上也有類似的工具。雖然微軟在這方面介入比較晚,但現在唯一重要的是該公司直接在Windows操作系統內建立了免受惡意軟件侵害的預防性機制——可以說最開始就應該這么做。
那么,還需要為ASLR一樣的Windows Server系統的安全控制擔心什么呢?我仍然看到有許多服務器沒有安裝防惡意軟件,可能是因為性能的原因,或是因為“這些服務器除做文件共享和活動目錄管理(Active Directory management)外不作它用”。問題是此類服務器非常容易受到攻擊。攻擊者和他們編寫的程序可不會挑三揀四,只要有大量的惡意軟件和漏洞存在,他們對所有的服務器都一視同仁。
ASLR技術并不是萬能的,所以你不能忘記那些意想不到的教訓,也不能放松警惕。下面是你不應輕視的幾點:
- ASLR對任何支持隨機內存分配的DLL文件有效,這意味著你得相信你的軟件開發者或供應商已經從代碼上支持了這一功能。
- ASLR可能導致人們對Windows系統放松安全意識,進而缺少對傳統惡意軟件、補丁管理和編寫粗糙的程序的維護和監督。
- 隨著運行時間的增加,ASLR會帶來越來越多的內存碎片,有可能導致系統不穩定并造成性能問題。
- 防護技術做成逃避(evasion)技術是不必要的,惡意軟件最終還是能夠檢測/破解那些目標系統文件。然而考慮全盤情況,這就需要深入研究如何降低安全風險,每個人都或多或少會遇到,所以我不建議你為此付出過多努力。
還有一件事需要注意,為了充分利用其功能,ASLR需要與數據執行保護功能(Data Execution Prevention ,DEP)配合使用。DEP是一項內置的內存保護功能,設計用于保護應用程序免受攻擊。幸運的是,DEP在Windows Server 2003 SP1及其以上版本中都默認開啟。
總之,使用ASLR是企業在與惡意軟件做斗爭的過程中邁出的正確的一步,但是,其成效只有時間才能檢驗。
【編輯推薦】