Google通過新的緩解技術(shù)使Windows版Chrome能夠更靈活地抵抗漏洞利用
從版本90開始,Chrome for Windows通過采用硬件強制的堆棧保護來提高抵御漏洞利用的能力。
借助Windows 10 20H1或更高版本中可用的緩解技術(shù),在具有控制流實施技術(shù)(CET)的處理器上,處理器可以維護有效返回地址的影子堆棧,這使不良行為者更難編寫漏洞利用程序。
與現(xiàn)有的保護措施一起,堆棧保護應(yīng)減輕各種利用技術(shù)的影響,但如果與將自身加載到Chrome中的軟件不兼容,則可能會影響穩(wěn)定性。
盡管Data Execution Prevention長期以來一直阻止使堆;蚨殉蔀榭蓤(zhí)行文件,但使用面向返回的編程(ROP)可使攻擊者指向他們可以濫用的另一段代碼。
Chrome的多進程體系結(jié)構(gòu)降低了渲染器中漏洞的嚴重性,但是Windows在進程中映射庫的方式使攻擊者可以在Chrome的二進制庫和已加載的庫中搜索ROP小工具。
使用堆棧保護時,CPU只能在現(xiàn)有堆棧旁邊維護一個影子堆棧,該影子堆棧僅存儲返回地址,而程序代碼無法直接對其進行操作。返回地址被壓入兩個堆棧,并且RET(返回)指令驗證其從正常堆棧中獲取的返回地址與影子堆棧中存儲的地址相同。
僅當(dāng)兩個返回地址匹配時,程序才能繼續(xù)工作,否則會引發(fā)異常并被操作系統(tǒng)攔截,該操作系統(tǒng)可以選擇更改陰影區(qū)域并允許程序運行。但是,通常情況下,異常應(yīng)導(dǎo)致程序立即終止。
因此,即使攻擊者設(shè)法成功跳入ROP小工具,當(dāng)嘗試返回其下一個小工具時,它們也會被阻止。
Google解釋說某些軟件可能與該機制不兼容,并且Stack Protection有一些限制,例如Chrome暫時不支持控制流實施的所有方向。
堆棧保護可強制調(diào)用圖的后緣,但不會限制前緣。Google仍然可以在現(xiàn)有代碼之間進行間接跳轉(zhuǎn),因為只有在遇到返回指令時才會驗證堆棧保護,而未驗證調(diào)用目標,” Google解釋說。
此外,在某些情況下,有可能自身繞過堆棧保護,例如當(dāng)攻擊者替換包含函數(shù)指針的對象時,就會欺騙程序來調(diào)用該函數(shù)。但是,大多數(shù)功能對攻擊者沒有用。
該保護措施無法阻止實際的漏洞,尤其是當(dāng)它們可能允許任意寫入而被濫用以運行任意代碼時,尤其如此。