【开篇】潜伏10年!Linux Copy Fail漏洞:732字节脚本root提权

0 阅读7分钟

潜伏10年!Linux Copy Fail漏洞:732字节脚本root提权


这是我掘金平台开篇,我先把这两天在安全圈已经炸锅的漏洞发布一下,后续我将持续输出安全方面的知识学习过程和实战技巧,欢迎各位大佬关注!

潜伏10年!Linux爆出"Copy Fail"漏洞:732字节脚本root提权。更有阴谋论者说这个是XX国预埋的漏洞,被AI检查出来了!!

2026年4月29日,安全研究团队Theori披露了一个震撼整个Linux社区的高危漏洞——CVE-2026-31431,代号 "Copy Fail"

这不是一个普通的漏洞。

它潜伏在Linux内核中近10年,影响2017年以来所有主流发行版,而利用它只需要一个732字节的Python脚本,无需竞态条件,无需版本适配,一击必杀。


一、漏洞概述:核弹级别的简单

基本信息:

CVE编号CVE-2026-31431
漏洞类型本地权限提升(LPE)/ 容器逃逸
严重程度CVSS 7.8(High,CNA初步评估)
影响组件Linux内核 authencesn加密模块
发现者Theori公司,Taeyang Lee
披露日期2026年4月29日
POC状态已公开

一句话概括: 任何Linux系统的普通用户,只需要运行一个732字节的Python脚本,就能直接拿到root权限。

影响范围:

  • Ubuntu 24.04 LTS
  • Amazon Linux 2023
  • RHEL 10.1
  • SUSE 16 及以上
  • Debian、Arch等所有主流发行版
  • 所有使用默认内核配置(AF_ALG默认启用)的Linux系统

更可怕的是——这个漏洞可以穿透容器边界。受感染的容器可以篡改宿主机上的文件,对Kubernetes节点和多租户云环境构成严重威胁。


二、技术原理:内核把不该写的地址写入了

2.1 漏洞的"三合一"

这个漏洞的形成,需要三个看起来各自合理的内核改动在时间线上交叉:

时间事件当时看起来
2011年authencesn加入内核支持IPsec 64位扩展序列号
2015年AF_ALG新增AEAD支持,splice()可传文件缓存页把文件缓存送进加密操作
2017年关键优化:AEAD改为in-place操作性能优化,无问题

2.2 攻击链路

整个攻击链路可以浓缩成一句话:内核把文件缓存页放进了本不该有写权限的散列表中,然后一个算法不讲武德地往里写了4个字节。

具体步骤:

Step 1:用户通过AF_ALG套接字调用内核加密功能

Linux内核允许任何普通用户使用AF_ALG接口调用内核加密功能,无需任何特殊权限

Step 2:通过splice()把目标文件的缓存页传入加密操作

攻击者使用splice()系统调用,将目标文件(比如/usr/bin/su)的缓存页传入加密操作。

Step 3:内核优化路径将这些缓存页链入可写的散列表

2017年的in-place优化,将这些缓存页直接链入了可写的散列表中。

Step 4:authencesn解密时写入4字节

authencesn算法在解密过程中,把攻击者控制的4个字节写入了缓存页——恰好落在setuid程序的内存副本中

关键代码示意(来自内核源码):

if (req->src == req->dst) {     /* in-place操作:往散列表里写4字节 */     dst[assoclen + cryptlen] = auth_tag; }

结果:内存中的/usr/bin/su被静默篡改,磁盘上的文件纹丝不动。

任何用户执行这个被注入shellcode的su程序,将直接以UID 0(root) 身份运行——root shell手到擒来。


三、横向对比:它比Dirty Cow更可怕

历史上,Linux本地提权漏洞不少,但每一个都有它的"脾气":

特性Dirty Cow (2016)Dirty Pipe (2022)Copy Fail (2026)
利用难度需赢竞态,可能崩溃需精操作管道缓冲区无需竞态,直通执行
版本适配需针对不同内核调整版本相关一套脚本通杀全系
隐蔽性会修改磁盘文件会修改磁盘文件只改内存,磁盘不动
容器穿透可穿透容器边界
成功率不稳定相对稳定极高

Copy Fail的可怕之处:

  1. 利用门槛低到离谱:不需要堆喷、不需要竞态条件、不需要内核版本匹配
  2. 通杀所有版本:同一个Python脚本,在Ubuntu 24.04、Amazon Linux 2023、RHEL 10.1上测试,全部一击必杀
  3. 检测不出来:只改内存缓存,磁盘上的文件MD5/SHA1完全不变,现有完整性监控工具全部失效
  4. 容器穿透:Linux页缓存在容器边界间共享,容器内提权后可以逃逸到宿主机

四、漏洞潜伏9年的原因

一个这么简单的逻辑bug,为什么能潜伏这么久?

答案:每个改动单独审查都"没问题"。

  • 2011年加入authencesn:功能正常
  • 2015年AF_ALG支持splice():加密接口扩展
  • 2017年in-place优化:性能提升这三件事,分开看都是合理的内核改动。但它们的组合,就是一颗定时炸弹。

发现过程中的AI助力:

研究员Taeyang Lee在识别出攻击面后,利用AI辅助审计工具Xint Code扫描crypto/子系统,仅耗时约1小时便定位到这一最高严重性漏洞


五、实战验证:732字节脚本

研究人员放出的POC脚本只有732字节,在四个主流发行版上测试:

  • Ubuntu 24.04 LTS
  • Amazon Linux 2023
  • RHEL 10.1
  • SUSE 16

测试内核版本包括

Linux 6.12、6.17和6.18

结果:每次都成功获取root shell。

POC链接:不公开推荐,有需要的私信给我获取


六、修复方案

6.1 官方补丁(推荐)

内核社区已发布修复补丁,直接回退了2017年的in-place优化,将AF_ALG的AEAD操作改回out-of-place模式。

修复版本:

  • Linux 6.18.22(主线)
  • Linux 6.19.12
  • Linux 7.0

升级命令:

# Ubuntu/Debian sudo apt update && sudo apt upgrade linux-image-$(uname -r)  # RHEL/CentOS sudo dnf update kernel  # 重启生效 sudo reboot

6.2 临时缓解措施

如果无法立即更新内核,可通过禁用algif_aead内核模块来缓解:

# 创建黑名单配置 echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf  # 立即卸载模块(不影响IPsec正常功能) sudo rmmod algif_aead 2>/dev/null || true

6.3 容器环境

在容器/沙箱环境中,可通过seccomp策略阻止AF_ALG套接字创建:

# 使用seccomp禁止AF_ALG docker run --security-opt seccomp=/path/to/af_alg_blocker.json ...

七、紧急建议

立即行动:

  1. 检查你的Linux内核版本:uname -r 或 cat /proc/version
  2. 确认是否在受影响范围内:2017年至补丁发布前构建的内核
  3. 优先修复云服务器和容器宿主机:这些是攻击者最可能突破的目标
  4. 开启内核模块加载审计:监控是否有人尝试加载algif_aead
  5. 检查命令:
# 检查当前内核版本 uname -r  # 检查algif_aead模块状态 lsmod | grep algif_aead   # 如果模块已加载且无法立即更新,执行缓解措施  sudo rmmod algif_aead

结语

Copy Fail的披露,再次提醒我们:最危险的漏洞,往往不是那些复杂的逻辑漏洞,而是多个"合理"改动叠加后产生的意外组合

这个漏洞的利用门槛低到令人发指——732字节Python脚本,无需root权限,无需版本适配,一击必杀。

建议所有Linux用户立即检查并修复。

原创于微信公众号:逆熵寻生