谷歌转向 Rust 编程,Android 内存漏洞减少 52% 网络相关

谷歌透露,作为其安全设计方法的一部分,其向 Rust 等内存安全语言的过渡已导致 Android 中发现的内存安全漏洞百分比在六年内从 76% 下降到 24%。

该科技巨头表示,专注于新功能的安全编码不仅可以降低代码库的整体安全风险,而且还使转换更具“可扩展性和成本效益”。

谷歌的 Jeff Vander Stoep 和 Alex Rebert 在与 The Hacker News 分享的一篇文章中表示,最终,这会导致内存安全漏洞数量下降,因为新的内存不安全开发在一定时间后会放缓,而新的内存安全开发则会占据主导地位。

或许更有趣的是,尽管新的内存不安全代码的数量增加,但内存安全漏洞的数量也会下降。

这种悖论可以通过漏洞呈指数衰减的事实来解释,研究发现,大量漏洞通常存在于新的或最近修改的代码中。

“问题主要在于新代码,因此我们必须从根本上改变代码开发方式,”范德斯托普和雷伯特指出。“随着时间的推移,代码会逐渐成熟,变得更加安全,因此,随着代码变旧,重写等投资的回报也会逐渐减少。”

谷歌早在 2021 年 4 月就正式宣布了在 Android 中支持 Rust 编程语言的计划,并表示它从 2019 年左右开始优先将新开发过渡到内存安全语言。

因此,操作系统中发现的内存安全漏洞数量从2019 年的 223 个下降到 2024 年的不到 50 个。

不言而喻的是,此类缺陷的减少很大程度上归功于对抗这些缺陷的方法的进步,从被动修补到主动缓解,再到使用Clang sanitizers等工具主动发现漏洞。

该科技巨头进一步指出,内存安全策略应该进一步发展,通过纳入安全设计原则,将安全性融入基础,优先考虑“高保证预防”。

“安全编码让我们能够对代码的属性以及基于这些属性可能发生或不可能发生的情况做出强有力的断言,而不是专注于所应用的干预措施(缓解、模糊测试)或试图使用过去的表现来预测未来的安全性。”Vander Stoep 和 Rebert 说。

不仅如此。谷歌表示,它还专注于提供 Rust、C++ 和 Kotlin 之间的互操作性,而不是代码重写,作为一种“实用且渐进的方法”,以拥抱内存安全语言并最终消除整个漏洞类别。

报告称:“在新代码中采用安全编码提供了一种范式转变,使我们能够利用漏洞固有的衰减来发挥我们的优势,即使在现有的大型系统中也是如此。”

“这个概念很简单:一旦我们关闭了新的漏洞,它们就会成倍减少,使我们的所有代码更安全,提高安全设计的有效性,并减轻与现有内存安全策略相关的可扩展性挑战,以便可以更有效地有针对性地应用它们。”

目前,谷歌宣称正在加强与 Arm 产品安全和图形处理单元 (GPU) 工程团队的合作,以标记多个缺陷并提高整个 Android 生态系统中 GPU 软件/固件堆栈的整体安全性。

其中包括在 Pixel 自定义驱动程序代码中发现两个内存问题(CVE-2023-48409 和 CVE-2023-48421),以及在 Arm Valhall GPU 固件和第五代 GPU 架构固件中发现另一个内存问题(CVE-2024-0153)。

谷歌和 Arm表示:“主动测试是一种良好的卫生习惯,因为它可以在新漏洞被利用之前检测并解决它们。”

标签: Rust

之参博客 发布于  2024-9-26 11:42 

严重的“BatBadBut”Rust 漏洞使 Windows 系统面临攻击 网络相关


Rust 标准库中的一个关键安全漏洞可能会被利用来针对 Windows 用户并发起命令注入攻击。

该漏洞的编号为CVE-2024-24576,CVSS 评分为 10.0,表明严重程度最高。也就是说,它仅影响在 Windows 上使用不受信任的参数调用批处理文件的场景。

Rust 安全响应工作组在 2024 年 4 月 9 日发布的公告中表示: “在 Windows 上使用 Command API 调用批处理文件(带有 bat 和 cmd 扩展名)时,Rust 标准库没有正确转义参数。”

“能够控制传递给生成进程的参数的攻击者可以通过绕过转义来执行任意 shell 命令。”

该缺陷影响 1.77.2 之前的所有 Rust 版本。安全研究员RyotaK被认为发现了该错误并向 CERT 协调中心 ( CERT/CC ) 报告。

RyotaK 表示,该漏洞(代号为 BatBadBut)会影响多种编程语言,并且当“编程语言包装 [Windows 中] 的 CreateProcess 函数并添加命令参数的转义机制”时,就会出现该漏洞。

但鉴于并非所有编程语言都解决了该问题,建议开发人员在 Windows 上执行命令时要小心谨慎。

RyotaK在给用户的建议中表示: “为了防止批处理文件意外执行,您应该考虑将批处理文件移动到不包含在 PATH 环境变量中的目录中。”

“在这种情况下,除非指定完整路径,否则批处理文件不会被执行,因此可以防止批处理文件的意外执行。”


之参博客 发布于  2024-4-10 19:50