前沿拓展:
在這篇帖子中,我討論了COOP,一種學術(shù)界提出的最新的代碼重用攻擊,并演示怎樣使用它攻擊現(xiàn)代執(zhí)行流完整性的實現(xiàn),例如微軟CFG??偠灾?,COOP相當容易使用,尤其是當把payload分割成更小的chains時。把各個vfgadgets拼接在一起和匯編ROP gadgets并沒有什么不同。也許最耗時的部分就是在目的進程空間中找到并標記各種候選vfgadgets。
微軟的Control Flow Guard被認為是一個粗粒度的CFI實現(xiàn),因此更容易受到這里所述的函數(shù)重用攻擊的影響。相比之下,細粒度的CFI解決方案能夠考慮到給定的間接調(diào)用的元素,例如預期的VTable類型,驗證參數(shù)數(shù)量,甚至參數(shù)類型。權(quán)衡兩種方法的關(guān)鍵是性能,因為在CFI中引入復雜的策略可能會顯著地增加開銷。盡管因為應用程序會因為使用forward-edge和backward-edge CFI而變得難以攻破,防御最新的代碼重用攻擊仍然是很重要的。
為了抵消CFG的一些局限性,微軟似乎專注于多樣化的預防措施,例如在CFG和Arbitrary Code Guard中通過導出表supression保護關(guān)鍵call gates,比如VirtualProtect。然而,這篇帖子的一個關(guān)鍵點挑戰(zhàn)是用戶空間設計和執(zhí)行防御。正如我們幾前前在EMET中看到的那樣,研究人員通過重用EMET本身的代碼解除了EMET的防御。此外,正如2015黑帽大會里演示的那樣,我們同樣利用駐留在用戶空間的關(guān)鍵CFG函數(shù)指針來改變CFG的行為。
相比之下,Endgame的HA-CFI解決方案完全由內(nèi)核和硬件實現(xiàn),即使容易受到函數(shù)重用攻擊,但由于特權(quán)分離,使其更難篡改。在本系列的每二部分,我將使用我們自己的HA-CFI和正在進行的研究來對COOP進行討論,以演示我們的檢測邏輯如何應對最新的代碼重用攻擊。
本文由 看雪翻譯小組 夢野間 翻譯
拓展知識:
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http:///77214.html