编译时从未听说过编译器漏洞?

信息安全 开发 缓冲区溢出 源代码
2021-08-18 00:37:04

是否存在任何利用编译器漏洞的真实源代码?我的意思是在编译期间导致编译器中的缓冲区溢出导致执行任意代码的代码。

当有人试图使用特定的编译器版本编译该源代码时,编译会导致一些感染目标机器的漏洞。

我不是在寻找玩具示例或只是研究论文,而是实际上是在寻找一些记录在案的东西,这些东西至少影响了一些具有真实有效载荷的机器。

我从理论上知道这是可能的,但我很好奇这对某人来说是否是一个真正的问题。

1个回答

是的,看看 gcc、llvm 等的更改日志,虽然实际例子很少。IIRC 我至少见过两个实用的 PoC;一个用于 java,另一个用于 C 编译器。如果您将编译的概念扩展为包括 JIT,您可以在 JavaScript、 RubyPHP 引擎中找到更多示例

还有一个编译器通过优化将源代码中可能不存在的漏洞引入编译二进制文件的问题。想到的第一个例子是几年前的这个Linux 内核漏洞利用,其中编译器优化删除了一个检查,该检查本来可以阻止漏洞。

CERT 涵盖了一些可能被优化为不安全的代码示例