Lobsters | 📄 原文链接 | 2026-10-19 收录

从 Linux 网络栈打到 KVM 虚拟机逃逸

来源:pwn.ai — 2026-10-18

📋 概述

Vercel 在 2026 年 8 月 18 日挂出百万美元悬赏,邀请研究者击穿其 Sandbox 的隔离边界——既是网络隔离,也是虚拟机到宿主机的边界。PWN.AI 团队用人类主导、模型辅助的研究框架 Omega-Pwn,三天内找到一个位于 Linux 网络栈的原语:来自客户机的校验和元数据,可以在内核已经校验过 IPv4 头之后再改写它。路径是 Linux 的校验和卸载机制——skb 处于 CHECKSUM_PARTIAL 状态时只记录 csum_start 与 csum_offset,真正的写入被推迟;而这段元数据本质上是在「授权一次对包内存的写入」。历史代码里 ip_do_fragment() 先完成校验和、再取 IPv4 头指针并读取 ihl,于是延迟写入可以覆盖已经解析过的头字节:第一字节从 0x45(IHL=5,头长 20 字节)变成 0x4f(IHL=15,头长 60 字节),版本号仍是 4,但头长解释被改。后续分片按这个「晚到的 IHL」拷贝头,读到超出线性数据的部分,于是把宿主机内存当作 IPv4 选项发出——一次 32 字节的宿主内存泄露,最终扩展为完整的客户机到宿主机逃逸。修复是上游提交 6785011f8b16,在完成校验和之前先校验 csum_start。

🔑 核心要点

💡 金句

客户机能够影响的校验和元数据,不只是描述性信息——它授权了一次对包内存的写入;如果这段元数据来自较低信任的来源,那么它的有效性必须撑过准入与完成之间的每一次操作。
← 返回 Lobsters 首页