Linux 九年漏洞"Copy Fail"曝光:普通用户秒变 root,容器也能逃逸!

1428 字
7 分钟
Linux 九年漏洞"Copy Fail"曝光:普通用户秒变 root,容器也能逃逸!

哈喽各位,这里是「一万AI分享」,我是老被各种漏洞折腾到头秃的一万。今天咱们不搞 AI 部署了,来聊个刺激的。

就在今天,Linux 圈子里炸了个大雷——一个潜伏了整整九年的高危漏洞被公开了,代号叫 “Copy Fail” (CVE-2026-31431)。这个漏洞有多离谱呢?简单来说,哪怕你只是个啥权限都没有的普通小号,只要在这个系统里敲几行代码,就能强行给自己”黄袍加身”,直接拿到最高级别的 root 权限。更要命的是它还能搞”容器逃逸”,如果你把业务跑在 Docker 里,黑客能直接穿透容器,把你宿主机的老底都给掀了。

很多小白看官方那堆诸如 scatterlist、page cache 的原理解释,肯定像看天书一样。一万我用大白话给你们翻译翻译。


这事儿其实是个”代码蝴蝶效应”#

这事儿其实是个极其荒诞的”代码蝴蝶效应”。在这个漏洞里,有三个本来完全独立、单独看毫无毛病的代码提交,在 2017 年那会儿倒霉地撞在了一起:

  1. 第一位老哥(2011年): 写了个叫 authencesn 的底层加密模板。他有个坏习惯,在处理数据时,喜欢把”输出文件筐”当成临时草稿纸,往里写点暂存数据。

  2. 第二位老哥(2015年): 搞了个新功能,允许系统把”只读的文件缓存”直接塞进”输入文件筐”里,为的是少复制一次数据,跑得更快。

  3. 第三位老哥(2017年): 为了搞极致的”性能优化”,一拍脑袋说:既然输入和输出最终是同一批数据,咱们别来回倒腾了,直接让”输入文件筐”和”输出文件筐”变成同一个吧!(这就是所谓的 in-place 原地模式)。

结果这三个机制一碰头,灾难降临了:第三位老哥把”只读文件”和”输出筐”融为了一体,而第一位老哥还在按照老习惯,傻乎乎地往”输出筐”里乱写草稿。这就导致,一个普通用户通过 algif_aead 接口调用这个模块时,能精准地把 4 个字节 的恶意指令写进原本受内核保护的只读文件里!就靠这 4 个字节,黑客就能篡改 /usr/bin/su 等系统关键文件,原地升仙变成 root。


影响范围#

别查了,只要你的 Linux 是 2017 年之后装的主流系统,不管是 Ubuntu、红帽还是亚马逊云的机器,几乎全军覆没。

官方的修复方法很简单粗暴:把第三位老哥的那个”性能优化”给撤了(回退为 out-of-place 模式),宁愿机器跑得稍微慢点,也绝对不让只读文件进到可写的框里。


紧急修复方案#

对咱们自己管服务器、玩 VPS 的玩家来说,现在只有两条路:

方案一:升级内核并重启#

这是官方推荐的彻底解决方案,补丁已合并到内核主线,各主流发行版也在陆续推送修复版本。

Ubuntu/Debian 系列:

Terminal window
# 更新软件源并升级内核
sudo apt update && sudo apt upgrade
# 或者只升级内核包
sudo apt install linux-image-generic linux-headers-generic
# 重启系统
sudo reboot

CentOS/RHEL/Rocky/Alma 系列:

Terminal window
# 更新内核
sudo yum update kernel
# 或使用 dnf(较新版本)
sudo dnf update kernel
# 重启系统
sudo reboot

Amazon Linux 2023:

Terminal window
# 更新系统
sudo yum update
# 重启系统
sudo reboot

重启后验证:

Terminal window
# 查看当前内核版本
uname -r
# 确认补丁已生效(以下命令应该返回空,表示模块被正确禁用)
cat /sys/kernel/crypto/algif_aead 2>/dev/null || echo "模块已禁用或不存在"

我知道各位生产环境的机器大概率是不敢随便重启的,所以方案二才是咱们的”急救药”。

方案二:临时封印大法(极其推荐)#

如果你没法马上重启机器,赶紧登上服务器,把漏洞的调用入口直接封死。打开你的终端,执行以下命令:

Terminal window
# 将 algif_aead 模块加入黑名单,阻止其被加载
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
# 尝试卸载已加载的模块(如果存在)
rmmod algif_aead 2>/dev/null || true
# 详细原理解释:
# 这个漏洞的"根"确实在底层的 authencesn 加密模板,但黑客想利用它,必须通过 algif_aead 这个用户态接口才能触及。
# 我们把 algif_aead 封死,就等于切断了从用户空间到漏洞模块的调用链,让黑客根本没机会触发那个"越界写草稿"的流程。
#
# 这里的 "install" 指令是一个拦截钩子(Hook),告诉内核:
# "当你要加载 algif_aead 这个模块时,不要执行默认动作,而是去执行 /bin/false"。
# /bin/false 只会返回失败状态码,于是模块加载请求被直接阻断。
#
# rmmod 命令则是为了处理"模块已经加载在内存里"的情况——黑名单只能阻止新加载,管不了已经在跑的。
# 执行完这两步,就能在不重启服务器的前提下彻底封堵漏洞入口。
#
# 好消息:官方确认,禁用 algif_aead 不会影响 dm-crypt/LUKS 磁盘加密、IPsec VPN、
# OpenSSL、SSH 等常用功能,因为它们底层走的是其他加密接口,压根不经过这个模块。

赶紧去检查你的服务器打补丁吧,别等机器成了别人的挖矿肉鸡再来拍大腿。干活去了,下期见。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助

评论区

Profile Image of the Author
一万AI分享
技术教程与资源分享
公告
从云端部署到家庭网络,从软件工具到智能硬件。 我会持续更新内容,希望能和大家一起 成长、分享、交流。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
37
分类
5
标签
113
总字数
48,454
运行时长
0
最后活动
0 天前

目录