谷歌工程师Ivan Lozano写道,即将推出的Android P(最近发布了beta版)将使用更多基于编译器的安全缓解措施,包括控制流完整性和整数溢出检查。
基于编译器的缓解(LLVM/Clang编译器提供的一组功能)背后的基本思想是在编译时对操作进行增强,以便在运行时捕获会触发未定义行为的操作,并让这些操作失效。LLVM/Clang支持多种 检查器 ,包括除数为零、违反空值、负数组边界和 控制流完整性 。
谷歌开始在Android Nougat(后来作为Android 7发布)中开始使用LLVM/Clang检查器,后来在Android O(Oreo,Android 8.0)中添加了控制流完整性检查。通过Android P,Lozano写道,谷歌已经大大扩展了对操作系统很多组件的检查和控制流完整性的支持,包括媒体框架和其他安全关键的组件,如蓝牙、NFC和内核。
控制流完整性解决了代码重用(code-reuse)攻击问题,攻击者利用现有代码,例如通过查找以ret指令结尾的短代码序列并以任意顺序执行它们。攻击者因此可以控制栈而无需注入任何代码,极大地增加了检测此类攻击的复杂性。为了对抗这种类型的攻击,控制流完整性旨在将程序的控制流限制在编译时确定的调用图。如果程序尝试分支到意外的调用目标,则会被安全终止。Lozano表示,控制流完整性在编译和运行时都会带来一定的开销,但谷歌在Android上的测试显示,它们几乎可以忽略不计。
至于检查器,谷歌已将整数溢出检查器的使用范围扩展到其他库,包括libui、libnl等。整数溢出是攻击者控制程序的常用手段,也是影响以前版本Android的Stagefright漏洞的核心。谷歌在这方面的贡献是改进LLVM整数溢出检查器,在大部分情况下将其开销减少75%以上。
如果你拥有Pixel手机或其他 受支持的设备 ,可以通过 注册 Android P beta计划 访问Android P beta。
查看英文原文: Android P Will Expand its Use of Compiler-based Security Mitigations
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- LLVM接受NVIDIA的“f18” Fortran编译器作为官方Fortran编译器
- 编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(四)结语
- Scala.js 0.6.29 发布,将 Scala 编译成 js 的编译器
- Go 编译器介绍
- Go 编译器介绍
- C++编译器优化
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rework
Jason Fried、David Heinemeier Hansson / Crown Business / 2010-3-9 / USD 22.00
"Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals' success and inspiring us to put them into practice. There's no jarg......一起来看看 《Rework》 这本书的介绍吧!