微软方面宣布,该公司已与 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-guardflag 即可。”
值得一提的是,微软方面透露,将 CFG 支持扩展到 LLVM/Clang 的主要驱动器是 Chromium,而 Chromium 代码库是使用 Clang 编译的。“因此,Chromium 团队正在努力在 Windows 版本中启用 CFG,这是在 Google Chrome 和 Microsoft Edge 中采用CFG 的第一步。”
详情可查看官方博客:https://msrc-blog.microsoft.com/2020/08/17/control-flow-guard-for-clang-llvm-and-rust/