【突发重大安全漏洞】linux内核再现“史诗级”本地提权漏洞CVE-2026-31431:一个732字节的Python脚本,一键获取root权限
摘要:2026年4月29日,安全研究人员公开披露了Linux内核中存在近十年的高危本地提权漏洞“Copy Fail”(CVE-2026-31431)。该漏洞影响自2017年以来所有主流Linux发行版,攻击者仅凭一个732字节的Python脚本即可从普通用户权限直接提升至root权限,并可能导致容器逃逸、云环境租户隔离被突破等严重后果。
一、漏洞概述
| |
|---|
| 漏洞编号 | |
| 漏洞名称 | |
| 发现者 | Theori公司的Xint Code团队(研究员Taeyang Lee主导) |
| 公开日期 | |
| 危害等级 | |
| 根因提交 | 2017年的优化提交(commit 72548b093ee3)引入 |
| 修复提交 | |
| 漏洞类型 | 内核crypto子系统逻辑缺陷(authencesn模板内的4字节page cache写入) |
一句话描述:漏洞位于Linux内核的algif_aead密码算法接口中,源于2017年引入的一个错误“原地操作”优化。该缺陷允许本地非特权用户通过AF_ALG套接字和splice()系统调用,向内核的页面缓存(page cache)写入4个可控字节,进而篡改setuid二进制文件(如/usr/bin/su),直接获取root权限。
二、漏洞原理(白话解读)
2.1 涉及的内核“机关”
AF_ALG:Linux内核提供的用户态密码运算接口(socket类型),普通用户可直接调用。
AEAD(认证加密):一种带认证的加解密模式,例如AES-GCM。
authencesn模板:一种特定AEAD实现,在执行解密时会向目标缓冲区写入数据。
splice()系统调用:允许在两个文件描述符之间“零拷贝”传输数据,可用于将文件page cache与套接字缓冲区关联。
2.2 核心逻辑缺陷
2017年的优化(commit 72548b093ee3)试图让AEAD加解密操作直接在原地(in-place)完成,以减少内存拷贝。然而在解密路径中,系统错误地将来源不同的数据映射(TX与RX缓冲区)当作相同缓冲区处理,导致:
解密时将文件page cache中的页面链接到了可写的目标scatterlist中。
authencesn解密在验证认证标签(tag)前,便向该页面写入4个字节。
由此,攻击者获得了一个完全可控的、直写文件page cache的4字节写入原语。
2.3 为何如此危险?
无需竞态条件、无需内核特定偏移、无需重试——攻击路线是直线型的。
不标记脏页:写入绕过正常的VFS写路径,被篡改的页面永远不会被内核标记为脏页,因此文件完整性工具(检查磁盘上的签名)根本发现不了。
系统范围可见:page cache是全局共享的,一旦某个文件在内存中的页面被篡改,所有进程读取该文件时看到的都是被篡改的版本。
跨容器传染:容器与宿主机共享同一个页缓存,因此攻击可从容器内发起并影响宿主机。
三、漏洞危害
| | |
|---|
| | |
| 容器内低权限进程可篡改宿主机页面缓存,实现容器逃逸并控制宿主机节点 | |
| CI/CD 流水线(GitHub Actions自托管Runner、GitLab Runner、Jenkins Agent等) | 执行未经验证的PR代码即可让Runner主机被root | |
| 云服务(notebook托管、沙箱、Serverless等) | | |
| 需配合RCE等漏洞链式利用,但一旦获得低权限用户后即可提权 | |
| 本地任意代码执行可轻松获取root,但远程利用需要前置条件 | |
综合来看,此漏洞对共享内核环境(多租户、容器、CI/CD)影响尤为突出。
四、受影响范围
所有2017年至补丁发布前构建的Linux内核均受影响——覆盖绝大多数主流发行版。
4.1 已验证受影响的发行版
4.2 理论受影响的发行版
由于漏洞源于内核主线代码,故所有使用受影响内核的发行版均无法幸免:
Debian
Arch Linux
Fedora
Rocky Linux
AlmaLinux
Oracle Linux
以及大量嵌入式/定制系统
4.3 受影响的内核版本(官方)
请注意:发行版的更新策略各有不同,即使上游主线已修复,部分发行版可能尚未推送补丁。
五、修复建议
5.1 立即更新
首选方案:将内核更新至包含commit a664bf3d603d 的版本。
对于Ubuntu/Debian:关注官方安全公告,尽快安装linux-image相关更新。
对于RHEL/CentOS/Rocky/Alma:关注Red Hat及衍生版的安全更新,RHEL 10、8、9的修复进度目前仍为“Fix deferred”。
对于Amazon Linux:密切关注AWS安全公告,当前修复“pending”。
5.2 临时缓解措施(无法立即更新时)
若业务无法立即重启升级内核,可临时禁用algif_aead内核模块阻止漏洞利用:
bash
# 卸载模块(若当前未使用AEAD套接字)sudo rmmod algif_aead# 或通过modprobe黑名单永久禁用echo"blacklist algif_aead"|sudotee /etc/modprobe.d/blacklist-algif_aead.conf
警告:此操作会禁用用户态AEAD加解密接口,可能影响依赖该接口的应用程序(如某些VPN、TLS库)。
5.3 验证系统是否受影响
六、安全建议(针对不同角色)
| |
|---|
| 立即评估受影响资产,优先修复多用户/容器/CI/CD环境。 |
| 尽快修补宿主机内核,检查所有节点;同时加固容器内权限控制(限制AF_ALG的使用)。 |
| 避免在低权限用户环境下执行不可信代码;CI/CD Runner应使用临时/沙箱化环境。 |
| 更新IDS/IPS规则,检测对AF_ALG的异常调用及splice()与AEAD套接字的组合使用。 |
七、简要总结
一个732字节的Python脚本即可拿下root,不需要任何内核调试功能、无需网络访问、无竞态条件。
漏洞藏身于内核crypto子系统近十年(2017年至2026年),影响面极广。
真正的威胁在于容器逃逸:攻击者可从一个被入侵的容器直接跳到宿主机,打破所有租户隔离。
修复优先级极高,尤其在共享内核场景(云、K8s、CI/CD)必须立即行动。
演示代码:https://github.com/theori-io/copy-fail-CVE-2026-31431
本文仅作安全预警与防御指导,请勿在未授权系统上测试漏洞利用代码。建议所有Linux用户、企业IT部门和安全团队立即评估自身环境并采取修复措施。