Copy Fail(CVE-2026-31431)由韩国安全公司Theori的研究员Taeyang Lee发现,全程是“人类洞见+AI 代码审计” 的组合,仅约1 小时就定位到核心问题。
背景:研究者的前期积累
Taeyang Lee 长期研究 Linux 内核攻击面,尤其关注AF_ALG(内核加密接口)与splice () 系统调用的组合。他在过往 KernelCTF 工作中意识到:splice () 可把只读文件(含 setuid 二进制)的页缓存直接送入加密子系统的 scatterlist,这是一条未被重视的攻击路径。
AI 辅助扫描(Xint Code)
Theori 自研Xint Code(AI 辅助内核代码审计工具),擅长从用户态系统调用出发,遍历内核代码路径并找出高严重度逻辑漏洞。扫描指令(研究者给出的关键提示):“这是 Linux crypto/ 子系统,请检查所有从用户态系统调用可达的代码路径。重点:splice () 可将只读文件页缓存引用传递给 crypto TX scatterlist。” 扫描对象:crypto/子系统,重点algif_aead.c及关联代码。耗时:约 1 小时,AI 直接标记出最高严重度问题——Copy Fail。
AI 定位到的关键问题链
1、2017 年优化提交(72548b093ee3):AEAD 加密从 “分离缓冲区(out-of-place)” 改为 “原地操作(in-place)”,导致输入 / 输出scatterlist 指向同一内存。
2、authencesn模板缺陷:IPsec 用的 authencesn 算法在处理 AEAD 时,存在越界写 4 字节的逻辑错误。
3、攻击链闭环:
PoC 验证与报告
Taeyang Lee 基于 AI 分析,写出732 字节 Python PoC,在 Ubuntu、RHEL、Amazon Linux、SUSE 上均稳定提权到 root,并于2026-04-29 向 Linux 内核安全团队报告,次日公开披露并发布补丁。
为何潜伏近 10 年
三个独立、看似无害的变更“巧合叠加”:
2011:authencesn 进入内核,用调用者内存作临时缓冲。
2015:AF_ALG 支持 AEAD,splice () 可传递页缓存。
2017:in-place 优化,打通 “只读页缓存 → 可写操作” 的路径。
单独看每个变更都合规,但组合形成致命漏洞,长期未被人工审计发现。
附:核心发现人信息