微軟:Rust 和 LLVM 編譯器中添加了 Windows CFG 支持
微軟方面宣布,該公司已與 LLVM 和 Rust 開(kāi)發(fā)團(tuán)隊(duì)達(dá)成合作,將對(duì) Windows Control Flow Guard(CFG)平臺(tái)安全功能的支持添加到了 Clang 和 Rustc 編譯器中。此前,CFG 僅適用于使用 Microsoft Visual C ++ 編譯的 C/C ++ 代碼。
CFG 是微軟自 Windows 8.1 版本開(kāi)始添加的一項(xiàng)強(qiáng)大的安全功能,目前已在 Windows 10 中被廣泛使用 。該功能可以保護(hù)應(yīng)用程序代碼的執(zhí)行流,以防止惡意代碼(例如內(nèi)存錯(cuò)誤的結(jié)果)劫持本機(jī) “控制流”并使應(yīng)用程序執(zhí)行有害的操作。CFG 是對(duì)其他漏洞利用緩解措施的補(bǔ)充,例如地址空間布局隨機(jī)化(Address Space Layout Randomization,ASLR)和數(shù)據(jù)執(zhí)行保護(hù)(Data Execution Prevention,DEP)。
目前,CFG 功能已在 LLVM 10.0 和 Rust 1.47(當(dāng)前為 Nightly 版本)兩個(gè)版本中可用。
“LLVM 10.0 現(xiàn)在支持 CFG。我們對(duì) CFG 的實(shí)現(xiàn)完全包含在核心庫(kù)中,這使得它可以在基于 LLVM 的任何編譯器中重用–前端編譯器只需要設(shè)置正確的 flags 即可。”
“CFG 在 Rust 1.47(當(dāng)前為 Nightly 版本)中可用。要啟用 CFG,只需添加 -C control-flow-guard flag 即可?!?/p>
值得一提的是,微軟方面透露,將 CFG 支持?jǐn)U展到 LLVM/Clang 的主要驅(qū)動(dòng)器是 Chromium,而 Chromium 代碼庫(kù)是使用 Clang 編譯的。“因此,Chromium 團(tuán)隊(duì)正在努力在 Windows 版本中啟用 CFG,這是在 Google Chrome 和 Microsoft Edge 中采用 CFG 的第一步?!?/p>
詳情可查看官方博客:
https://msrc-blog.microsoft.com/2020/08/17/control-flow-guard-for-clang-llvm-and-rust/