APP下载

AndroidP扩大编译器缓解漏洞措施,可防范程式码重用攻击

消息来源:baojiabao.com 作者: 发布时间:2024-05-19

报价宝综合消息AndroidP扩大编译器缓解漏洞措施,可防范程式码重用攻击

Google宣布在Android P中扩展编译器缓解漏洞的作法,来让特定类型的漏洞攻击失效。当未定义行为出现时,Android P会让Runtime操作安全的失败,这个做法综合了两部分,分别是控制流程完整性(Control Flow Integrity,CFI)与整数溢位消毒(Integer Overflow Sanitization),以防止程式码重用攻击(Code-Reuse Attack,CRA)以及整数溢位造成类别内存损坏或是资讯泄漏的漏洞。

Google提到,他们从Android N开始便开始预设LLVM/Clang作为平台编译器,已获得更多纵深安全防御的优势,而现在要继续在编译器上耕耘,使特定类型的臭虫难以被骇客发展成攻击漏洞。由于现代攻击链中的关键步骤,是骇客透过破坏函数指标或是回传位置来控制程式流,而这正为程式码重用攻击开了一道大门,让骇客可以执行程式码的任意片段来达成恶意目的。

在Android O中,首先支援了LLVM的CFI实作,透过把程序流控制在预期的函式呼叫图(Call Graph)中,来减缓程式码重用攻击的影响,现在则扩大在Android P的支援。这项实作的重点在于使用间接跳转分支(Indirect Branches)技术,来防止控制流的操作。具有预期函式签章的函式进入点才是合法的分支目标,因此控制流被严谨的控制在一小组合法目标中,因此程式码重用攻击会变得绑手绑脚,而且一些内存损坏的漏洞也会难以利用。

此外,在Android N中,开始引入消毒程序UndefinedBehaviorSanitizer(UBSan)对带号与非带号整数进行溢位清理,检测算术指令溢出带号与非带号整数,这个消毒程序会让执行程序安全的中止,进而减轻了整数溢位造成整个类别内存损坏或是资讯泄漏的漏洞。

由于在Android N中采用效果良好,因此现在于每个释出版本的媒体框架,都会扩大使用这些消毒程序。LLVM的消毒程序经过修改后,透过减少使用ARM 32位元指令以及移除不必要的检查,已经降低对于系统效能的冲击。Google测试显示,这些改进在部分程式中减少了75%的效能影响。同时他们也改进了Android建置系统的支援,像是现在加入更好的诊断支援、更合理的崩溃处理,以及全域整数溢位目标消毒测试,加速了消毒程序的释出。

2018-07-04 10:31:00

相关文章