
文章架构
引言
1、什么原理
2、没有一点含金量,全靠系统"送"
3、"潜伏10年"的罗生门
4、核心:只改“复印件”,不碰“原件”
5、吹了这么多,怎么防?
结语
引言

732字节有多大?1KB都不到?发条微信朋友圈配张图 📸,都不够的 🤏。
但就在节前,安全圈被这732字节的代码炸了锅 💣。只要你在Linux系统里跑一下它,一个普普通通的用户,瞬间就能原地飞升 🚀,变成掌控整台机器的最高大Boss(root) 👑。
漏洞编号:CVE-2026-31431 🏷️,代号 “Copy Fail” 。
严重程度:高危 🚨。CVSS评分7.8,满分10分 。
攻击效果:从普通用户直接升级成root用户 🆙。root是什么概念?就是Linux系统里的"上帝" 🛐,想干嘛就干嘛,没有权限管得了你 🛡️❌。
攻击代码:732字节的Python脚本 🐍。比这篇文章的一个段落还短 。
如果你觉得"又是一个Linux提权漏洞,老套路了" 🥱,那你就大错特错了 ❌。这玩意儿不仅能让安全研究员拍大腿 🤦♂️,还能让云厂商半夜惊醒 😱。今天我就用大白话,扒一扒这个潜伏了快十年的"copy Fail" 🕵️♂️。
💡什么原理?
大白话解释下,要理解这个漏洞,得先知道两件事💡:
当你运行一个程序的时候,Linux不会每次都去硬盘读文件,太慢了🐢。它会把文件先加载到内存里,这就是页面缓存(Page Cache)💨。
就像你下载电影🎬,第一次要等它慢慢缓冲、完成下载,存到本地硬盘💿后,下次想看直接点开⏯️就行,不用再等加载了。
Linux提供了一套接口,让程序可以用内核级别的加密功能,这就是AF_ALG。你可以理解成Linux内置了一个"加密瑞士军刀",很多安全软件都靠它。
那么问题来了🤔?漏洞就出在这两件事的"合作"上。🤝💥
2017年📅,Linux内核为了提升性能🏎️,对AF_ALG做了一处优化。但这处优化有个bug:它把"源文件"和"目标文件"搞混了🙈。
用大白话来说,就是:你本来想让系统"读取"一个文件做加密处理,结果它把加密后的结果直接写回了原始✍️文件。
加密过程中,系统会往文件末尾追加4个字节的序列号🔢➕。结果因为这个bug,这4个字节被写到了原本只读的文件里📝🚫,这么简单的一个逻辑🤦♂️错误。

搞过安全的都知道,想从普通用户骗到root权限,以前要么得拼手速⏱️(竞争条件),要么得搞玄学(堆风水🔮),费半天劲还不一定能成。
但Copy Fail呢?没有竞争,不用重试,不用拼运气。写个极小的脚本,敲一下回车,啪,权限就到手👑了。这就好比你玩游戏🎮,系统不仅没封你号,还主动跑过来把“无敌外挂”塞你手里🎁,拍拍你的肩膀说:"拿去随便玩。"这操作,简直把“离谱”两个字写在了Linux内核的脑门🤦♂️上。

新闻里都在刷"潜伏10年"🕰️,很多人以为是刚发现了一个10年前写的漏洞。其实不是,这事儿得从盖楼说起🏗️:
所以,"潜伏10年"不是指雷埋了10💣年,而是"这扇门敞着让坏人进出,已经快10年了,居然没一个人发现🚪," 细思极恐🥶。
核心:只改“复印件”,不碰“原件”

这个漏洞为什么叫"Copy Fail"?🤔它最鸡贼的地方,在于它的作案手法。
平时咱们打开个文件,电脑嫌硬盘太慢,会在内存(工作台)里复印一份,这叫"页缓存💾"。
以前的黑客提权,都是想办法去动硬盘里的原件。动了原件,杀毒软件、文件完整性校验工具立马就报警了:"报告!这个文件被改过了🚨!"
Copy Fail微微一笑:谁说要动原件😏了?它盯上了系统里用来提权的程序(比如 /usr/bin/su),然后直接在内存里,把这份复印件偷偷改了几个字节✏️。
系统是个死心眼,它调取文件时看的是复印件。一看复印件:"哎?你写着你是root啊,给给给,钥匙拿去🔑。"
等杀毒软件来查案:拿出硬盘里的原件一比对,一模一样,清清白白。只要你一重启服务器,内存清空,作案痕迹灰飞烟灭,连个屁都查🔍不到。
这叫什么?这叫杀人不见血,借刀不沾血🥷,来看个对比;
Dirty Cow和Dirty Pipe都需要"竞态条件",简单说就是要在特定的时间窗口内完成操作,窗口很小,需要多试几次。
Copy Fail不需要🛤️。 它就是一条直直的路,没有拐弯、没有红灯、没有人拦你。成功率接近100%,小学生照着教程敲都能成👦功。
云厂商看了要连夜拉群。

如果只是黑掉一台虚拟机,大佬们还不至于这么慌。真正让全行业炸锅的,是它的"越狱"能力💥。
现在的云时代,一台物理服务器上虚拟出一堆容器(就像把一套大别墅隔成很多小单间),大家其实是在共享同一块“内存☁️黑板”。
你作为一个租客(黑客),在自己的小单间里用Copy Fail改了黑板上的字,结果不仅你自己提权了,隔壁的、楼上的、甚至整栋别墅(宿主机)的权限,全被你🏢拿下了。
这也就是传说中的容器逃🚪逸。在K8s集群里,只要有一个节点中招,整个集群可能直接沦陷。
云厂商要是没及时打补丁,客户的数据在哪被搬走的都不知道😱。
别慌,对策非常简单直接。
🥇上策:老老实实打补丁。
Ubuntu、红帽、Debian等各大发行版早就把那扇破窗户换成防弹玻璃了。看看你的版本在不在影响范围内,在的话,赶紧升级内核,一步到位,这是最彻底的方案。各大发行版已经发布补丁✅,如果你是用的云厂商,可以联系📞厂商咨询内核升级计划。
🥈下策:实在不能重启,拿木板钉死。
如果这台机器是核心业务,祖宗十八代都不允许重启,那就下命令把出问题的那个内核模块(叫 algif_aead)给禁用掉。
(注:🙏如果你用的系统比较奇葩,把这个功能直接焊死在内核里了,那木板也钉不上,没得商量,乖乖找时间升级吧。)
(1)永久禁用echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif_aead.conf(2)立即卸载该模块sudo rmmod algif_aead 2>/dev/null || true
检查当前是否已加载模块💻
(1)执行 lsmod | grep ^algif_aead,无输出说明当前未加载;(2)检查永久禁用配置是否生效:执行 cat /etc/modprobe.d/disable-algif-aead.conf,输出install algif_aead /bin/false,说明配置正确;(3)验证模块是否可被加载:执行modprobe -n -v algif_aead,若返回install /bin/false则说明加载请求被拦截,禁用生效;(4)(可选)检查是否有进程正在使用AF_ALG接口:lsof | grep AF_ALG,无输出说明无业务依赖

网络安全里有一句老话:所有打着“性能优化”旗号的补丁,最后都可能变成安全人员的噩💡梦。
2017年那个为了“就地操作优化”提交的代码,估计自己都忘了。但代码就是这么现实,你欠下的技术债,十年后它连本带利让你💸还。
好了不说了,我要去催运维老哥打补丁了,咱们下次再巴拉巴拉...🏃♂️