Android 安卓内存安全漏洞数量大幅下降的原因

谷歌决定使用内存安全的编程语言 Rust 向 Android 代码库中写入新代码,尽管旧代码(用 C/C++ 编写)没有被重写,但内存安全漏洞却大幅减少。

Android 代码库中每年发现的内存安全漏洞数量(来源:谷歌)

Android 不断发展,内存安全漏洞越来越少

Android 团队在 2019 年左右开始优先将新开发过渡到内存安全语言。这一决定是由于管理内存安全漏洞的成本和复杂性不断增加。

不重写旧代码库的选择是基于之前的模拟,而该模拟又基于对漏洞寿命的研究,该研究显示漏洞的平均寿命约为 4 年,并且大多数漏洞存在于新的或最近修改的代码中。

简而言之,他们相信,通过使用内存安全的语言,新功能引入的错误会更少。

随着旧漏洞随着时间的推移而“衰减”,内存安全漏洞的数量预计会下降——事实也确实如此。

尽管大多数 [Android] 代码仍然不安全(但关键是,它们正在逐渐老化),但我们发现内存安全漏洞数量正在大幅下降。

结果与我们模拟的结果一致 (…),甚至更好,这可能是我们同时努力提高内存不安全代码的安全性的结果。

内存安全问题占 2019 年 Android 漏洞的 76%,目前到 2024 年这一比例为 24%,远低于 70% 的行业标准,并且还在继续下降。

从被动解决方案到主动解决方案

随着软件制造商和用户尝试各种解决方案来对抗内存安全漏洞(正如谷歌指出的那样,“与其他类型的漏洞相比,这些漏洞更容易被远程访问、用途更广泛、更容易被恶意利用”)。

措施已逐渐从被动措施(修补)转向主动措施:漏洞缓解策略、通过清理器和模糊器发现漏洞,以及现在通过使用内存安全语言来预防漏洞。

这一转变的基础是安全编码,它通过语言功能、静态分析和 API 设计将安全不变量直接强制到开发平台中。

其结果是设计安全的生态系统,提供大规模的持续保证,避免意外引入漏洞的风险。

安全编码通过将错误查找进一步向左移动,甚至在代码签入之前,提高了代码的正确性和开发人员的工作效率。

我们看到这种转变体现在回滚率(由于意外错误而导致的紧急代码恢复)等重要指标中。

Android 团队观察到 Rust 更改的回滚率不到 C++ 的一半。

本月初,Android 团队分享了有关如何在智能手机固件中逐步引入 Rust 的见解。

内存安全的语言才是出路

美国网络安全和基础设施局 (CISA) 一直在大力提倡使用内存安全语言。

最近发现172个关键且广泛使用的开源项目中有 52% 包含用内存不安全语言编写的代码。

CISA 大力倡导使用内存安全语言,这一举措得到了白宫的响应。

谷歌针对 Android 所采取的策略是放弃对现有代码库的重写,并专注于使互操作性变得安全且方便。

该公司认为,其他软件制造商和组织也可以采用这种策略,而不必担心增加投资和减缓推出新功能的速度。

那些对过渡到内存安全语言时的各种挑战和考虑感兴趣的人应该看看我们最近对开源安全基金会 (OpenSSF) 总经理的专题访谈。(点击下方链接即可阅读👇🏻)

过渡到内存安全语言:挑战和注意事项-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/885058.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

资质申请中常见的错误有哪些?

在申请建筑资质的过程中,企业可能会犯一些常见的错误,以下是一些需要避免的错误: 1. 资料准备不充分: 申请资质需要提交大量的资料,包括企业法人资料、财务报表、业绩证明等。资料不齐全或不准确都可能导致申请失败。…

汽车线束之故障诊断方案-TDR测试

当前,在汽车布局中的线束的性能要求越来越高。无法通过简单的通断测试就能满足性能传输要求。早起对智能化要求不高,比如没有激动雷达、高清摄像、中央CPU等。 近几年的智能驾驶对网络传输要求越来越高,不但是高速率,还需要高稳定…

【C++题目】7.双指针_和为 s 的两个数字

文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: LCR 179.查找总价格为目标值的两个商品 题目描述: 解法 解法一(暴力解法,会超时) 两层 for 循环列出所有两个数字的组合…

一种使用 SUMO + Python 联合仿真平台

一种使用 SUMO Python 联合仿真平台(一) 本文适用人群包括但不仅限于【交通运输】【车辆工程】【自动化控制】【计算机科学与技术】等专业本科生、研究生、博士生。本文通过在Pycharm平台,使用Python语言 Traci工具包,调用SUMO客…

【步联科技身份证】 身份证读取与解析———未来之窗行业应用跨平台架构

一、身份证解析代码 C# function 身份证数据解析_湖南步联科技(wzxx) {var result {};result[xm] wzxx.substr(0, 15);result[xbdm] wzxx.substr(15, 1);result[mzdm] wzxx.substr(16, 2);result[csrq] wzxx.substr(18, 8);result[dzmc] wzxx.substr(26, 35);result[gms…

Ansible-template模块动态生成特定文件

文章目录 一、Jinja2介绍什么是主要特性安装基本用法进阶特性总结 Jinja2与Ansible关系1. 模板引擎2. Ansible 的依赖3. 变量和模板4. 动态生成配置5. 社区和生态系统总结 二、Ansible如何使用Jinja2使用template模块Jinja2文件中使用判断和循环Jinja2文件中使用判断语法 Jinja…

如何在算家云搭建text-generation-webui(文本生成)

一、text-generation-webui 简介 text-generation-webui 是一个流行的用于文本生成的 Gradio Web UI。支持 transformers、GPTQ、AWQ、EXL2、llama.cpp (GGUF)、Llama 模型。 它的特点如下, 3 种界面模式:default (two columns), notebook, chat支持多…

Vue发送邮件攻略:从搭建到实现详细步骤?

vue发送邮件功能实现方法?Vue前端如何实现发送邮件? 随着应用功能的不断扩展,用户交互的复杂性也在增加。其中,发送邮件功能是许多Web应用中不可或缺的一部分。AokSend将详细介绍如何使用Vue.js实现发送邮件功能。 Vue发送邮件&…

Springboot指定扫描路径

方式一:通过在启动类的SpringbootApplication中指定包扫描或类扫描 指定需要扫描的包 scanBasePackages{"待扫描包1","待扫描包2", . . . ," "} 指定需要扫描的类 scanBasePackageClasses{类1.class,类2.class,...} 方式二&#xff…

STM32F103C8----3-1 LED闪烁(跟着江科大学STM32)

一,电路图 接线图 面包板的的使用请参考:《面包板的使用_面包板的详细使用方法-CSDN博客》 二,目的/效果 2.1 推婉输出 外部供电(熄的时间长) 2.2 推婉输出 内部供电(亮的时间长) 三,创建Keil项目 详…

音乐项目总结(终)

总的来说写这个项目还是状态差了,前期中期写太慢,后期疯狂赶。 讲点对写这个项目能想起来解决的问题和写的的感触。 前期:当时觉得时间很充足,有布置算法题,我竟然还花三四天去学算法,,动态规划…

【网络安全】网络基础第一阶段——第三节:网络协议基础---- VLAN、Trunk与三层交换技术

目录 一、交换机 1.1 交换机定义 1.1.1 交换机 1.2 工作原理 1.2.1 数据帧的转发 1.2.2 交换机处理数据帧的三种行为 1.2.3 交换机通信 二、虚拟局域网(VLAN) 2.1 虚拟局域网简介 2.1.1 为什么需要VLAN 2.1.2 广播域的分割与VLAN的必要性 2.…

FPGA实现PCIE图片采集转HDMI输出,基于XDMA中断架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图测试图片QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存Native视频时序生成RGB转HDMI输出模块Windows版本XDMA驱动安装Linux版本XDMA驱动安装工程源码…

Stable Diffusion绘画 | 来训练属于自己的模型:素材处理与打标篇

纵观整个模型训练流程,图片素材准备和打标环节占据的分量比重,绝对超过60%。 上一篇分享了图片素材准备,这一篇,开始对准备好的图片素材进行处理了。 素材处理 我已经收集了 霉霉 的25张图片: 但是,发现…

基于ESP8266—AT指令连接阿里云+MQTT透传数据(1)

在阿里云创建MQTT产品的过程涉及几个关键步骤,主要包括注册阿里云账号、实名认证、开通MQTT服务实例、创建产品与设备等。以下是详细的步骤说明: 一、准备工作 访问阿里云官网,点击注册按钮,填写相关信息(如账号、密码、手机号等)完成注册。注册完成后,需要对账号进行实…

【C++】多态(上)

个人主页~ 多态 一、多态的概念二、多态的定义以及实现1、多态的构成条件2、虚函数3、虚函数的重写虚函数重写的两个特殊情况①协变② 析构函数的重写 4、C11的override和final(1)final(2)override 5、重载、重写、隐藏的对比 三、…

828华为云征文|部署在线文档应用程序 CodeX Docs

828华为云征文|部署在线文档应用程序 CodeX Docs 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 CodeX Docs3.1 CodeX Docs 介绍3.2 CodeX Docs 部署3.3 CodeX…

讯飞星火编排创建智能体学习(三):搜索工具

目录 概述 搜索工具节点 测试结果 和星火网页版对照 概述 在前面两篇博文(讯飞星火编排创建智能体学习(一)最简单的智能体构建-CSDN博客和讯飞星火编排创建智能体学习(二)决策节点-CSDN博客)中&#xf…

Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进

作者:席翁 Nacos 社区刚刚迎来了 Star 突破 30000 的里程碑,从此迈上了一个新的阶段。感谢大家的一路支持、信任和帮助! Nacos /nɑ:kəʊs/是 Dynamic Naming and Configuration Service 的首字母简称,定位于一个更易于构建云原…

视频融合共享平台LntonAIServer视频智能分析抖动检测算法和过亮过暗检测算法

LntonAIServer作为一款智能视频监控平台,集成了多种先进的视频质量诊断功能,其中包括抖动检测和过暗检测算法。这些算法对于提升视频监控系统的稳定性和图像质量具有重要意义。 以下是对抖动检测算法和过暗检测算法的应用场景及优势的详细介绍。 一、L…