当前位置:安全资讯 >> 全文

谷歌扩展安卓编译器缓解措施

发布时间:2018-7-2 13:01 标签: 安卓,缓解措施
分享到 0

上周,谷歌宣布扩展安卓版本 P 中的编译器缓解措施,目的是增加 bug 的利用难度并阻止某些具体的问题转变为漏洞。

其中一个缓解措施是控制流完整性 (CFI),即旨在“将程序的控制流限制在编译时间确定的有效目标的调用图。”安卓已在某些组件中支持 CFI 实现,不过谷歌宣布称下一次平台发布将延伸这类支持。

谷歌解释称“这种实现集中于通过间接分支如函数指针和虚拟函数阻止流操纵。”

这样做的理念是使用有效的分支目标减少攻击者能调用的可允许的配置消息目的地,而间接分支用于检测进程放弃的从数据上确定的可允许目标集的运行时侵犯。

通过将控制流限制到少量合法目标,谷歌试图增加代码重用攻击的难度,同时导致内存损坏漏洞的利用更难或甚至不可能遭利用。

CFI 要求通过链接时间(LTO)进行编译,使得二级制规模减小而性能得到提升,尽管编译时间有所增长。谷歌表示,测试结果表明“对代码规模和性能方面的影响可忽略不计。”

在安卓 P 版本中,CFI 在媒体框架和其它安全关键组件如 NFC 和蓝牙中默认启用。

安卓 P 版本还将扩展从整数溢出清洁中获益的二进制数量,使得整个内存损坏类和信息暴露漏洞得到缓解。

谷歌在每次发布安卓版本时扩展了对媒体框架中清洁器的使用,同时改进这些清洁器以降低性能影响。谷歌表示,“在测试过程中,这些改进措施在某些编解码器中,将安卓的32libstagefright 库中的杀毒软件性能损耗降低了75%以上。改进后的安卓构建系统支持如更好的诊断支持、更合理的崩溃率以及用于测试的全局清洁整数溢出目标也加快了这些清洁器的推出。”

谷歌决定将整数溢出清洁带入处理复杂的不受信任的输入或者报告安全公告级整数溢出漏洞的库。因此,在安卓 P 版本中,libuilibnllibmediaplayerservicelibexiflibdrmclearkeyplugin libreverbwrapper 库将从这些清洁器中获益。

谷歌表示未来将对这些缓解技术的使用加以扩展,并鼓励供应商在定制化方面做出同样的选择。

本文由360代码卫士编译,不代表360观点,转载请注明“转自360代码卫士www.codesafe.cn”。
原文链接:https://www.securityweek.com/google-expands-androids-compiler-based-mitigations
参与讨论,请先 登录 | 注册

用户评论