当前位置:首页>Linux>关于Linux Copy Fail(CVE‑2026‑31431)的发现过程

关于Linux Copy Fail(CVE‑2026‑31431)的发现过程

  • 2026-10-11 08:18:04
关于Linux Copy Fail(CVE‑2026‑31431)的发现过程

    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、攻击链闭环:

  • 用户态→ splice () → 只读页缓存 → AF_ALG → authencesn

  • 原地操作使越界写落到页缓存,而非临时缓冲区

  • 结果:普通用户可篡改任意可读文件的页缓存(含 setuid 程序),实现本地提权。

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 优化,打通 “只读页缓存 → 可写操作” 的路径。

单独看每个变更都合规,但组合形成致命漏洞,长期未被人工审计发现。

附:核心发现人信息

  • 发现者:Taeyang Lee(Theori 研究员)

  • AI 工具:Xint Code(Theori 自研)

  • 披露时间:2026-04-29(CVE 编号:CVE-2026-31431)

最新文章

随机文章