注意差距

访问原始链接 Google 翻译

作者:Ian Beer,Project Zero

注意:本文讨论的漏洞(CVE-2022-33917)已由上游供应商修复,但在发布时,这些修复尚未推送到下游受影响的Android设备(包括Pixel、三星、小米、Oppo等)。目前,搭载Mali GPU的设备仍然存在漏洞。

引言

2022年6月,Project Zero研究员Maddie Stone在FirstCon22上发表了题为《2022年野外0-day漏洞利用现状……截至目前》的演讲。一个关键结论是,2022年上半年观察到的约50%的0-day漏洞是先前已修复漏洞的变体。这一发现与我们理解的攻击者行为一致:攻击者会选择阻力最小的路径,只要供应商在修复安全漏洞时没有持续进行彻底的根因分析,那么在寻找新漏洞之前,投入时间尝试复活已知漏洞就仍然值得。

演讲讨论了针对Pixel 6的野外漏洞利用,该利用利用了CVE-2021-39793,这是ARM Mali GPU驱动程序中的一个漏洞,被大量其他Android设备使用。ARM的安全公告将该漏洞描述为:

标题:Mali GPU内核驱动程序可能将CPU只读页面提升为可写

CVE:CVE-2022-22706(也在CVE-2021-39793中报告)

发布日期:2022年1月6日

影响:非特权用户可以获取对只读内存页面的写访问权限。

在FirstCon22的前一周,Maddie在内部预演了她的演讲。受到低层内存管理代码中野外漏洞描述的启发,Project Zero研究员Jann Horn开始审计ARM Mali GPU驱动程序。在接下来的三周里,Jann发现了另外五个可利用的漏洞(2325、2327、2331、2333、2334)。

深入探究

其中一个问题(2334)导致内核内存损坏,一个(2331)导致物理内存地址泄露给用户空间,其余三个(2325、2327、2333)导致物理页面释放后重用(use-after-free)的情况。这将使攻击者能够在物理页面被返回系统后继续读写这些页面。

例如,通过强制内核将这些页面重新用作页表,在应用上下文中执行原生代码的攻击者可以获得对系统的完全访问权限,绕过Android的权限模型,并允许广泛访问用户数据。

有趣的是,我们从多个渠道听说,我们报告的Mali问题与0-day市场上可用的漏洞发生了碰撞,我们甚至看到了一个公开引用:

@ProjectZeroBugs\nArm Mali:驱动程序向非特权用户空间暴露物理地址\n\n
 @jgrusko 回复 @ProjectZeroBugs\nRIP那个存在已久但没人想报告的功能 :)

“补丁差距”也适用于供应商

我们在2022年6月至7月发现这五个问题后,立即向ARM报告。ARM在2022年7月和8月迅速修复了这些问题,在其Arm Mali驱动程序漏洞页面上将其披露为安全问题(分配了CVE-2022-36449),并在其公共开发者网站上发布了修补后的驱动程序源代码。

根据我们2021年的披露政策更新,我们随后等待了额外的30天,然后解除了Project Zero跟踪器条目的限制。在2022年8月下旬至9月中旬之间,我们在公共Project Zero跟踪器中解除了这些问题的限制:2325、2327、2331、2333、2334。

在时间允许的情况下,作为额外检查,我们会测试供应商提供的补丁的有效性。这有时会导致后续的错误报告,其中补丁不完整或发现了变体(有关最近整理的示例列表,请参阅本文博客的第一张表格),有时我们会发现修复根本没有到位。

在这种情况下,我们发现我们所有使用Mali的测试设备仍然容易受到这些问题的影响。CVE-2022-36449在任何下游安全公告中均未提及。

结论

正如建议用户在包含安全更新的版本可用后尽快打补丁一样,供应商和公司也应如此。在这些情况下,作为供应商,最小化“补丁差距”可以说更为重要,因为最终用户(或下游的其他供应商)在能够获得补丁的安全益处之前,正等待这一行动。

公司需要保持警惕,密切关注上游来源,并尽最大努力尽快向用户提供完整的补丁。