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