跳至正文
Wener Notes

CVE-2026-31431

约 2 分钟阅读
  • Copy Fail - Linux AF_ALG 加密接口错误地原地处理共享页,可导致本地权限提升
  • CVE 记录公开:2026-04-22;研究者公开披露:2026-04-29
  • 上游引入版本:Linux 4.14
  • 严重性:CVSS 3.1 7.8 High(Linux CNA)
    • CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

成因与利用条件

  • algif_aead 的原地处理优化使通过 AF_ALG、splice() 引入的文件页缓存可能进入可写目标散列表
  • 研究者通过 authencesn 路径实现 4 字节的页缓存写入,进而修改特权程序所读取的内容
  • 需要本地执行能力,以及可达的 AF_ALG AEAD 接口、相应加密算法和相关系统调用
    • 普通本地用户可访问该接口时,不需要先取得 root
    • 容器内是否可达取决于宿主机内核、功能配置、seccomp 等限制;不能据此认定所有容器均可逃逸
  • 该公开路径是逻辑错误,不依赖竞态窗口;与 的写时复制竞态不同
  • 页缓存修改不保证持久落盘,但已经获得的权限仍可被用于进一步入侵

修复与缓解

上游分支Linux CNA 列出的修复版本
5.105.10.254
5.155.15.204
6.16.1.170
6.66.6.137
6.126.12.85
6.186.18.22
6.196.19.12
主线正式版7.0
  • 上游修复:a664bf3d603d,撤销相关原地处理优化,改为使用独立输出缓冲区
  • 使用发行版包含修复的内核并确认已运行;表中未列出的老分支需另查厂商回补,不能套用其他分支的版本号
  • 暂时禁用 algif_aead 可阻断相关入口,但应确认模块已卸载并阻止再次加载;内建功能不能靠模块黑名单关闭
    • 会影响实际使用 AF_ALG AEAD 的程序,需按业务评估
  • 对不可信任务限制 AF_ALG socket 创建可以缩小攻击面,但不能据此假定既有或传入的相关文件描述符也已失效
  • 以上 AF_ALG 缓解不覆盖 的网络栈路径

PoC

  • 作者仓库 theori-io/copy-fail-CVE-2026-31431 提供 copy_fail_exp.py
  • 该实现使用 AF_ALG、authencesn 与 splice 路径,目标包含 /usr/bin/su;它是页缓存篡改和提权演示
  • 原理示意:
text
文件页缓存 -> splice -> 加密输入
                       |
                       +-- 错误进入可写输出路径
                                  |
                                  +-- 文件缓存内容被改变
  • 复现应观察目标缓存内容与后续程序行为;脚本成功导入、系统版本命中或接口可用均不能代替漏洞验证
  • 作者列出的测试环境只是其报告的组合,不代表所有同系列发行版都已验证;脚本会影响特权程序的缓存内容

参考

关联信息

反向链接、本文链接的其他页面和外部资料。

站内链接

  • CVE-2016-5195
    笔记 · Dirty COW

    Dirty COW - Linux 写时复制处理中的竞态条件,可导致本地权限提升 · COW / Copy-on-Write / 写时复制 · 公开披露:2016-10-19(Red Hat 公告);2016 年 10 月已发现实际利用 · 攻击者需要能够在目标系统运行本地程序,无需目标文件的写权限

  • CVE-2026-43284
    笔记 · Dirty Frag

    Dirty Frag - xfrm-ESP 共享片段被原地解密,导致文件页缓存被修改,可用于本地提权 · Dirty Frag 原始披露还包含 CVE-2026-43500 的 RxRPC 路径;两者有独立的根因与利用条件 · Dirty Frag 公开披露:2026-05-07;本 CVE 记录公开:2026-05-08

参考资料

GitHub2 条
其他外链4 条
最近更新commit 0c5208b编辑