如果你在生产服务器上跑 Linux,这篇文章可能价值你花20分钟认真读完。
2026年4月30日,一个名为 CVE-2026-31431 的漏洞震惊了全球安全圈。
不是因为它有多难发现,而是因为它太简单、太基础——以至于过去9年里,没有人意识到它的存在。
攻击者只需要对目标文件有「读」权限,就能在几秒钟内把它变成「超级用户」。不需要破解密码,不需要寻找后门,只需要写入4个字节的数据。
这不是科幻。这是此刻正在运行的Linux 内核。
一个「不可能」的漏洞
4月30日,一个名为 CVE-2026-31431(代号「Copy Fail」)的漏洞公开,引发安全社区震动。
漏洞存在于Linux内核的 authencesn 加密模板中(处理 IPsec 的扩展序列号)。利用这个漏洞,攻击者可以通过一个 732 字节的 Python 脚本 获得 root 权限——无需任何偏移、无需竞争条件、一个脚本通杀所有发行版。
攻击原理
这个漏洞被称为「Copy Fail」,利用 Linux 内核加密 API(AF_ALG)中的一个逻辑缺陷。
具体来说:
漏洞存在于 authencesn 加密模板中(处理 IPsec 扩展序列号)
攻击者使用「 双 splice 」技术:先将文件 splice 到管道,再从管道 splice 到加密 socket
这会在内核内存中造成不一致状态,允许攻击者向任意可读文件的页缓存写入数据
攻击者覆盖 SUID 程序(如 /usr/bin/su)的页缓存,植入提权代码
当其他用户执行该程序时,会以 root 权限运行攻击者的代码
值得注意的是,这个漏洞不是修改磁盘上的文件,而是修改内存中的页缓存。所以重启后修改会消失,但在这之前提权已经完成。
哪些系统受到影响
这不是某个特定版本或特定发行版的问题。
以下是默认受到影响的系统:
Ubuntu(所有版本)
Debian(所有版本)
Fedora
RHEL / CentOS / AlmaLinux
Arch Linux
openSUSE
几乎所有主流 Linux 发行版的默认内核配置都启用了 AF_ALG 加密接口,这就是为什么自2017年以来几乎所有发行版都受影响。
也就是说,你正在使用的服务器 ——无论是 AWS、阿里云、腾讯云还是自建机房——只要运行的是上述发行版的默认配置,都有这个漏洞。
真正的问题是什么
这个漏洞之所以特殊,是因为:
一个脚本通杀所有的发行版: 732 字节的 Python 脚本,无需修改、无需偏移
无需竞争条件:不像 Dirty COW 需要精确的时间窗口,这个漏洞100%可靠
修改内存不修改磁盘:攻击的是页缓存(内存),重启后修改消失
影响面极广:2017年以来的所有主流Linux 内核
正如一位安全研究者所说:
“当你看到漏洞利用的代码可以写得这么简单、这么直接的时候,你会意识到——这个漏洞可能已经被利用了很多年,只是我们没有发现。”
如何排查是否受影响
方法一:检查内核版本
# 查看当前内核版本
uname -a
# 如果内核是在2017年后编译的,都可能受影响
# 2017年之前的内核通常不受影响
方法二:检查模块是否加载
# 检查 AF_ALG 接口是否可用
lsmod | grep af_alg
# 或者尝试创建 AF_ALG socket,如果失败说明可能被阻止
python3 -c "import socket; socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0)" 2>&1
方法三:运行官方检测脚本
GitHub 上有开发者提供了检测脚本:
# 下载检测脚本
git clone https://github.com/rootsecdev/cve_2026_31431.git
cd cve_2026_31431
# 运行检测
python3 test_cve_2026_31431.py
# 返回值含义:
# 0 = 已修复(安全)
# 2 = 存在漏洞(需立即修复)
# 1 = 检测出错
方法四:检查系统日志
# 监控 AF_ALG 接口的异常调用
sudo auditctl -w /proc/sys/crypto -p wa -k crypto_mod
# 查看相关日志
sudo ausearch -k crypto_mod
方法五:排查被利用迹象
如果服务器可能被攻击过,检查以下迹象:
# 检查 /etc/passwd 是否被修改
stat /etc/passwd
# 检查是否有新的未知 root 用户
awk -F: '($3 == "0") {print $1}' /etc/passwd
# 检查近期创建的可疑文件
find / -perm -4000 -type f 2>/dev/null | head -20
快速排查命令汇总
# 一键排查脚本
echo"=== 内核版本 ===" && uname -a
echo"=== AF_ALG状态 ===" && lsmod | grep af_alg || echo"模块未加载"
echo"=== root用户 ===" && awk -F: '($3 == "0") {print $1}' /etc/passwd
方案一:更新内核(推荐)
所有主流发行版已发布官方补丁。执行系统更新即可修复:
| |
|---|
| sudo apt update && sudo apt upgrade |
| sudo dnf update |
| sudo pacman -Syu |
补丁已推送至:Ubuntu , Debian , RHEL , CentOS , Fedora , SUSE, Amazon Linux 2, Arch.
方案二:临时缓解(无需重启)
如果无法立即更新内核,可以禁用有漏洞的 algif_aead 模块:
# 临时缓解,无需重启
echo"install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null || true
验证是否生效:
# 测试PoC是否失效
python3 -c "import socket; socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0)"
此方法经过测试验证,可有效阻止漏洞利用,且对大多数应用没有影响。
立即行动清单
✓
✓
✓
✓
这次漏洞告诉我们什么
在 AI 时代,我们讨论了很多「AI 威胁论」——AI 会不会取代人类、AI 会不会觉醒、AI 会不会失控。
但现实是:在我们担心 AI 之前,我们连操作系统底层的基本防线都还没补好。
当 Linux 内核——这个支撑着全球互联网的底层系统——可以如此容易被突破时,我们需要重新思考「安全」的定义。
它不仅是防火墙,不仅是加密,不仅是权限控制——它是我们对系统架构的每一层假设。
参考来源:GitHub CVE-2026-31431-Advanced-Exploit
参考资料:
GitHub: CVE-2026-31431 检测脚本
Sesame Disk: Linux Privilege Escalation CVE-2026-31431
Sam James: CopyFail CVE-2026-31431 分析
Ubuntu: CVE-2026-31431 安全公告
ByteIOTA: CopyFail CVE-2026-31431 技术分析
Ask Ubuntu: 如何修复 CVE-2026-31431
SentinelOne: CVE-2026-31431 漏洞分析
Debian Security Tracker: CVE-2026-31431
文章声明:本文仅供技术教育用途,请勿用于未经授权的渗透测试。