LLVM的BOLT用于分析二进制文件的安全加固
LLVM的BOLT是一个用于优化二进制文件布局的神奇工具,反过来可以带来一些非常有用的性能改进。但是现在,一位Arm编译器工程师利用BOLT创建了一个二进制分析工具来检查安全加固选项的正确性。
Arm编译器工程师Kristof Beyls提出了一个基于bolt的解决方案的初步概念证明,以评估二进制文件的安全加固。
“我们缺乏好的工具来验证安全强化功能的正确代码生成。大多数安全强化特性仅通过少量回归测试进行测试。仅仅运行大量使用安全强化功能编译的代码并不能很好地测试它们:它检查程序是否仍然为给定的输入产生预期的输出,但它不检查它是否使恶意利用二进制文件变得更加困难。
本RFC建议构建一个静态二进制分析器,它可以扫描二进制文件,以验证给定的强化特性是否在整个二进制文件中正确应用。我已经在BOLT的基础上建立了一个原型,并建议对其进行改进,以便能够逆流而上。”
在一篇关于LLVM论述的RFC帖子中,Kristof Beyls概述了他利用BOLT进行安全强化分析的初步工作——远远超出了Facebook/Meta开发BOLT时的原始性能意图。
该工具旨在验证堆栈保护、堆栈冲突保护、分支保护、控制流保护等功能。二进制分析工具将在整个程序中验证加固特性,并且比目前使用的有限的安全加固测试要冗长得多。
最初的代码被称为“llvm-bolt-gadget-scanner”,并处于原型形式。到目前为止的结果是有希望的,并希望一个有用的二进制扫描器可以建立。在其他上游LLVM开发人员的支持下,有希望将这样一个工具上游到代码库中。
In addition to the aforelinked RFC message, the prototype code of this gadget scanner can be found on GitHub.