谷歌的Android11以安全(BYOD相关)和隐私增强为主要卖点,但谷歌明白要从根本上扭转Android安全局面,必须上游和上游开发周期的“左侧”。近日,谷歌Android新安全策略引起了网络安全和移动互联网行业的广泛关注。谷歌正在鼓励开发人员转向内存安全的编程语言,如Java、Kotlin和Rust,并宣称C和C++的安全性需要提高。影响Android操作系统严重高危漏洞的第一威胁:内存安全根据谷歌最新Android安全报告统计(上图),Android操作系统严重高危安全漏洞中59%是内存问题,例如内存损坏和溢出。内存安全是迄今为止排名第一的Android安全问题(59%),其次是权限绕过漏洞,占2019年谷歌安全工程师修复的漏洞的21%。不仅仅是Android,内存安全往往是排名第一的安全漏洞类别适用于Java、Windows10和Chrome等主要平台。谷歌工程师去年表示,70%的Chrome安全漏洞是内存安全问题。此前,一位微软工程师透露,其产品修复的所有错误中有70%是内存安全问题,即允许访问操作系统分配的内存和地址之外的内存和地址的软件漏洞。谷歌认为,使用更安全的开发语言是保护Android免受恶意软件和漏洞攻击的根本措施。“C和C++不像Java、Kotlin和Rust等语言那样提供内存安全。鉴于Android安全报告中的大多数安全漏洞都是内存安全问题(上图),谷歌采取了两种安全策略:改进C/C++的安全性也鼓励使用内存安全语言,”谷歌在Android安全和隐私团队的博客文章中说。出于同样的安全原因,亚马逊(AWS)和微软也在推动Rust的采用。Mozilla创建了Rust来处理Firefox的Gecko引擎中与C++内存相关的安全问题。Rust1.0版于2015年推出,但采用率仍然很低。Microsoft希望将其用于系统编程而不是应用程序开发。AWS使用Rust构建了Bottlerocket,一个基于Linux的容器操作系统。数据驱动的安全强化Google指出,由于Android生态系统的多样性,安全策略和方法,以及缓解措施的优先级决策,都是“数据驱动的”。这种数据驱动的方法产生了可衡量的真实结果。据统计,谷歌在过去一年修复的安卓漏洞绝大多数来自媒体、蓝牙和NFC组件。媒体库也是受谷歌2015年远程利用的高危Android漏洞Stagefright影响的关键组件。如今,谷歌加强Android媒体服务器框架的努力得到了回报,目前还没有关于Android媒体框架的报道整个2020年的远程利用漏洞。除了转向内存安全语言外,谷歌强调的其他Android安全缓解和加固措施包括:沙盒分解高权限大型组件(例如媒体库)提高C/C++的安全性漏洞利用缓解地址空间布局随机化(ASLR)控制流完整性(CFI)StackCanariesMemoryMarkGoogle指出,LLVM项目的控制流完整性(CFI)已于2018年在AndroidPie中针对媒体框架、蓝牙和NFC启用。Google和Microsoft都在尝试为C和C++提供更安全的系统编程功能。Microsoft通过Windows安全功能ControlFlowGuard改进了CFI。去年,微软在Clang和LLVMC++编译器以及Rust中启用了CFG支持。谷歌还需要在不对设备稳定性或用户体验产生负面影响的情况下,权衡每个缓解措施的性能成本与部署和支持缓解措施所需的工作量。缓解措施/组件的开销可能会缩短电池寿命并降低设备响应速度,从而对用户体验产生负面影响。对于像廉价Android手机这样的入门级设备来说尤其如此,但入门级设备也应该受益于强化的安全性。最后,谷歌指出,在启用缓解措施时需要考虑更多因素,例如部署的稳定性和长期支持问题,而不是安全收益和性能成本(例如短期部署和长期支持的成本)).参考:https://security.googleblog.com/2021/01/data-driven-security-hardening-in.html【本文为专栏作者“安全牛”原创文章,转载请通过安全牛(微信)公众号id:gooann-sectv)获取授权】点此阅读本作者更多好文
