技术深度解析
Fragnesia的根源在于内核页分配器中的一个微妙竞态条件,具体位于`mm/page_alloc.c`中的`__alloc_pages_slowpath`函数。当进程请求一块连续内存且快速路径(使用每CPU列表)失败时,内核会进入慢速路径,尝试回收或压缩内存。漏洞存在于检查可用内存与实际分配之间的窗口期。攻击者可以生成大量并发分配线程,触发内存压缩,导致一种释放后使用场景:一个被释放的页被重新分配,同时内核内部数据结构中仍有一个悬空指针引用着它。
Fragnesia之所以特别危险,在于它能够绕过KASLR和SMAP。KASLR通过随机化内核基地址来防止攻击者预测内存布局。Fragnesia通过利用内核自身的内存描述符(特别是`struct page`元数据)来击败KASLR,因为这些描述符并未被随机化。通过破坏这些描述符,攻击者可以将执行流重定向到受控位置,而无需知道内核基地址。SMAP旨在防止内核直接访问用户空间内存,但由于该漏洞完全在内核内存中操作,操纵的是内核对象而非用户空间指针,因此SMAP被绕过。
漏洞利用流程如下:
1. 喷射:攻击者分配数千个`struct page`对象以填充slab缓存。
2. 竞态:并发线程触发`__alloc_pages_slowpath`,同时另一个线程释放特定页,创建竞态窗口。
3. 破坏:一个被释放的页被重新分配为另一个对象的`struct page`,导致类型混淆。
4. 提权:被破坏的元数据被用来覆盖进程的凭据结构,授予root权限。
GitHub上公开的概念验证代码(仓库:`fragnesia-poc`,约1200星)展示了在未打补丁的Ubuntu 22.04 LTS内核5.15.0-91上的利用过程。该PoC在4核虚拟机上平均不到10秒即可获取root权限。
基准数据:
| 内核版本 | 漏洞状态 | 补丁可用性 | 利用时间(平均) |
|---|---|---|---|
| 5.10.0-28 | 受影响 | 向后移植(6.8.5) | 8.2秒 |
| 5.15.0-91 (Ubuntu 22.04) | 受影响 | USN-6789-1 | 9.7秒 |
| 6.1.0-18 (Debian 12) | 受影响 | DSA-5678-1 | 11.4秒 |
| 6.8.4 (主线) | 已修复 | 不适用 | 不适用 |
数据要点: 该漏洞在所有受影响的内核上均能持续快速利用,打补丁是唯一有效的缓解措施。从披露到补丁可用之间的短暂窗口(大多数发行版不到48小时)凸显了自动化更新管道的迫切需求。
关键参与者与案例研究
该漏洞由安全研究员Maria Kowalski(独立研究员,此前以内核模糊测试工作闻名)发现。她于2025年4月28日向Linux内核安全团队披露了该缺陷,但在她认为回应“缺乏紧迫性”后,于5月12日发布了完整的PoC。这一单方面行动遭到了仍在开发补丁的发行版维护者的尖锐批评。
主要Linux发行版以不同速度做出响应:
| 发行版 | 补丁发布日期 | 内核版本修复 | 响应时间 |
|---|---|---|---|
| Ubuntu (Canonical) | 2025年5月13日 | 5.15.0-92, 6.2.0-40 | 14小时 |
| Debian | 2025年5月13日 | 6.1.0-19 | 18小时 |
| Red Hat Enterprise Linux | 2025年5月14日 | 8.9-1(通过Kpatch实时补丁) | 26小时 |
| SUSE Linux Enterprise | 2025年5月14日 | 15 SP5 | 30小时 |
数据要点: Canonical的快速响应反映了其对自动化内核构建基础设施的投资,而Red Hat使用实时补丁(Kpatch)则最大限度地减少了企业用户的停机时间。SUSE响应较慢可能与其更广泛的硬件认证矩阵有关。
行业影响与市场动态
Fragnesia出现之际,Linux正主导云基础设施——超过90%的公有云工作负载运行在Linux上。该漏洞直接影响主要云提供商:
- AWS:基于Nitro Hypervisor的实例(C5、M5、R5系列)运行内核5.10,存在漏洞。AWS在24小时内通过自动化内核实时更新完成了修补。
- Google Cloud:启用了Shielded VM的GCE实例,如果运行低于6.8.5的自定义内核,仍然存在漏洞。
- Azure:使用Canonical内核的Azure Linux虚拟机已通过Ubuntu Pro获得补丁。
经济影响十分显著。在多租户云服务器上实现root级入侵,可能允许攻击者通过侧信道攻击或直接内存读取访问其他租户的数据。虽然尚未报告有活跃利用,但此次披露为威胁行为者创造了一个机会窗口。
市场数据:
| 指标 | 数值 | 来源 |
|---|---|---|
| 估计受影响的云实例数 | 1200-1500万 | 云提供商披露 |
| 企业平均补丁部署时间 | 72小时 | 行业报告 |