Rust和LLVM編譯器中添加了Windows CFG支持
微軟方面宣布,該公司已與LLVM和Rust開發團隊達成合作,將對Windows Control Flow Guard(CFG)平台安全功能的支持添加到了Clang和Rustc編譯器中。此前,CFG僅適用於使用Microsoft Visual C ++編譯的C/C ++代碼。CFG是微軟自Windows 8.1版本開始添加的一項強大的安全功能,目前已在Windows 10中被廣泛使用。
(詳情可查看官方博客)
該功能可以保護應用程序代碼的執行流,以防止惡意代碼(例如內存錯誤的結果)劫持本機“控制流”並使應用程序執行有害的操作。CFG 是對其他漏洞利用緩解措施的補充,例如地址空間佈局隨機化(Address Space Layout Randomization,ASLR)和數據執行保護(Data Execution Prevention,DEP)。
目前,CFG 功能已在LLVM 10.0 和Rust 1.47(當前為Nightly 版本)兩個版本中可用。
LLVM 10.0 現在支持CFG。我們對CFG 的實現完全包含在核心庫中,這使得它可以在基於LLVM 的任何編譯器中重用–前端編譯器只需要設置正確的flags 即可。
CFG 在Rust 1.47(當前為Nightly 版本)中可用。要啟用CFG,只需添加-C control-flow-guard flag 即可。
值得一提的是,微軟方面透露,將CFG支持擴展到LLVM/Clang的主要驅動器是Chromium,而Chromium代碼庫是使用Clang編譯的。“因此,Chromium團隊正在努力在Windows版本中啟用CFG,這是在Google Chrome和Microsoft Edge中採用CFG的第一步。”