由 Microsoft 在最新版本的 Windows 及其编译器中引入的 Control Flow Guard 在缓解面向返回的编程漏洞方面是一种有用的深度防御措施。
我的问题是,在任何其他操作系统和编译器(尤其是 Linux 和 GCC)上是否有任何等效的可用或计划?
由 Microsoft 在最新版本的 Windows 及其编译器中引入的 Control Flow Guard 在缓解面向返回的编程漏洞方面是一种有用的深度防御措施。
我的问题是,在任何其他操作系统和编译器(尤其是 Linux 和 GCC)上是否有任何等效的可用或计划?
在 Linux 中似乎有两种可能的实现。一个由 grsecurity 制作,命名为:“Reuse Attack Protector (RAP)”。另一个是在 llvm 中实现并调用控制流完整性 (cfi)。据我了解:CFG 是 Microsoft 用于控制流完整性的营销名称。
Chrome 团队似乎很好地解决了这个问题。
大部分信息来自Hanno Böck 的 演讲。他还提供了 CFI/CFG 可以提供帮助的更多细节。另外,你可以看看这个。只是你不会觉得这是灵丹妙药。
KarambaSecurity 的 XGuard 是一个经过良好测试的套件,在 GCC 和其他构建环境上实现了 Linux 的控制流完整性
Assaf Harel(首席科学家@Karamba Security)