最新爆出来的Fragnesia我比较感兴趣,我用ai分析了一下然后深入挖掘后挖到了 根因:net/core/gro.c 的 skb_gro_receive() 在 GRO 合并 skb 分片时,拷贝了 skb_frag_t 结构体,但没有传播 SKBFL_SHARED_FRAG 标志。这导致下游 esp_input() 误判分片不是共享的 page cache 页面,跳过写时复制(skip_cow),直接原地用 AES-GCM 密钥流 XOR 覆盖 page cache 数据。 与 Fragnesia (CVE-2026-46300) 的区别: - Fragnesia 漏洞在 skb_try_coalesce()(TCP 合并层),走 loopback - Dirty Merge 在 skb_gro_receive()(GRO 层),走 veth pair + 双网络命名空间 - Fragnesia 的补丁不覆盖此路径 攻击链:非特权用户创建 user namespace → 双 network namespace + veth pair → GRO 剥离标志 → ESP-in-TCP 原地解密写 page cache → 逐字节覆盖 /usr/bin/su → 192 字节写入后 execve 得到 root shell
不过可惜昨天出去玩了,看到Fragnesia的作者昨天扫了一遍导致没吃上这波https://github.com/q1uf3ng/Dirty-Merge