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