近段時間以來,主要軟件供應(yīng)商(例如Adobe和微軟)一直側(cè)重于提高攻擊者編寫漏洞利用代碼的成本,而不是努力減少其產(chǎn)品中的漏洞數(shù)量。供應(yīng)商在意識到完美軟件不可能實現(xiàn)后,開始將重心放在緩解攻擊工作上,他們努力使攻擊者的漏洞利用代碼編寫變得更耗時間且利潤更低。
在Windows 8更新的安全功能中,我們看到微軟在這個方面取得了重大飛躍。即將在10月份推出的新版本操作系統(tǒng)中,增強(qiáng)的內(nèi)存保護(hù)功能將能夠抵御緩沖區(qū)溢出攻擊,這種攻擊主要導(dǎo)致針對應(yīng)用程序或內(nèi)核的特權(quán)提升攻擊。
Coverity公司的高級安全科學(xué)家兼研究員Chris Valasek和Azimuth安全公司的高級漏洞研究員Tarjei Mandt對Windows 8的早期公開發(fā)布版本(從開發(fā)者預(yù)覽版到最新的發(fā)布預(yù)覽版)進(jìn)行了研究,特別是Windows 8的堆安全功能。在黑帽2012大會上,這兩位研究人員將展示他們的研究結(jié)果。
“從堆損壞(heap corruption)漏洞的角度來看,如果我是攻擊者,我更愿意為Windows 7編寫漏洞利用代碼,而不是Windows 8,”Valasek表示,“微軟已經(jīng)走過了漫長的道路,他們?yōu)榇送度肓瞬簧傩乃肌?rdquo;
堆緩沖區(qū)溢出比基于堆棧的緩沖區(qū)溢出更難以實現(xiàn)。基于堆的攻擊通過惡意可執(zhí)行文件來超出內(nèi)存空間的限額,并在根本上“欺騙”操作系統(tǒng)來執(zhí)行該命令。通常情況下,攻擊者可以遠(yuǎn)程攻擊系統(tǒng),并且,如果緩沖區(qū)溢出攻擊成功的話,攻擊者能夠獲取與被攻擊應(yīng)用程序相同的系統(tǒng)特權(quán),或者能夠獲得對內(nèi)核的根級訪問權(quán)限。
Windows 8新增功能包括更新的內(nèi)存管理器、Windows堆管理器(Heap Manager)和Windows內(nèi)核池分配器(Kernel Pool Allocator)。堆管理器隨機(jī)分配內(nèi)存空間,這讓攻擊者很難預(yù)測緩沖區(qū)溢出攻擊應(yīng)該在哪里注入惡意代碼。而在以前版本的Windows系統(tǒng)中,內(nèi)存空間分配不是隨機(jī)的。Windows 8還包括AppContainers,這是為Windows應(yīng)用程序確定權(quán)限的安全沙盒。Valasek表示,與Windows Vista或者Windows 7相比,Windows 8的應(yīng)用程序受到更嚴(yán)格的控制,畢竟Windows Vista和Windows 7依賴于完整性級別(Integrity Level)來控制應(yīng)用程序功能,要知道,完整性級別比AppContainers更加寬松。
Windows 8這些更新的安全功能并不是微軟第一次向操作系統(tǒng)內(nèi)置安全保護(hù)功能。從Windows Vista開始,微軟就使用地址空間布局隨機(jī)化(ASLR)和數(shù)據(jù)執(zhí)行保護(hù)(DEP)加強(qiáng)應(yīng)用程序安全和內(nèi)核保護(hù)。ASLR和DEP并不是默認(rèn)啟用的,這與Windows 8的內(nèi)存保護(hù)不同。“這些緩解措施已經(jīng)部署到位以解決安全問題,”Valasek表示,“它們確實讓利用技術(shù)更難實現(xiàn)了。然而,漏洞利用是無時不在的。”