Linux内核潜伏九年提权漏洞曝光:732字节脚本直取root权限,多发行版集体中招
摘要:韩国网络安全公司Theori披露了一项编号为CVE-2026-31431的高危Linux内核漏洞,代号Copy Fail。该缺陷根植于Linux加密子系统的algif_aead模块,自2017年引入后已潜伏近九年。攻击者仅需执行一个不足1KB的Python脚本,即可篡改页缓存中的系统文件映像,从普通用户权限一跃获取root shell。目前该漏洞已确认影响Ubuntu 24.04 LTS、Amazon Linux 2023、RHEL 10.1及SUSE 16等主流发行版,Linux官方已发布内核补丁。
一、九年潜伏:加密子系统里的"老熟人"
Theori旗下的Xint Code研究团队最初接到研究员Taeyang Lee提供的一条模糊线索。团队随后动用了AI驱动的代码审计平台,对内核数百万行代码进行逐层扫描,最终在algif_aead这个看似不起眼的加密接口模块里锁定了问题。
这个模块负责处理AEAD类算法的认证加密任务,常见于TLS、IPsec等场景。2017年某次性能优化提交中,内核开发者为了加速数据处理,采用了一种"原地操作"的内存策略——也就是直接在输入缓冲区上改写数据,而非复制到独立的安全区域。当时没人意识到,这个改动给页缓存埋下了一颗延时九年的雷。
二、页缓存的"暗门":四字节错位如何撕开防线
要理解Copy Fail的杀伤力,得先摸清页缓存(Page Cache)的工作方式。
页缓存是内核在内存中开辟的一片高速缓冲区域,用来临时存放最近读写的文件片段。下次访问相同内容时,系统直接从内存返回,无需再碰磁盘。这种设计大幅提升了I/O效率,但也意味着:如果内存中的页缓存被污染,所有依赖该缓存的进程都会读到脏数据——而磁盘上的原始文件却纹丝不动。
漏洞的触发路径相当精巧。authencesn工具在调用algif_aead进行数据封装时,由于边界检查疏漏,会有4字节数据被写到错误偏移位置。这4字节恰好落入页缓存的某个页面,进而污染了目标文件的内存映像。研究人员在演示中选择了/usr/bin/su作为目标,这个高权限程序在内存中被悄无声息地替换后,攻击者再次调用它时,拿到的已经是被篡改过的版本,root shell随之到手。
整个过程中,磁盘上的su二进制文件哈希值没有任何变化,常规的文件完整性校验完全失效。这也是该漏洞能长期躲避检测的核心原因——它只动内存,不动硬盘,几乎不留下可供溯源的物理痕迹。
三、732字节的"万能钥匙":攻击有多简单?
Xint Code团队放出的PoC脚本只有732字节,用Python写成。把它丢进终端执行,不需要竞争条件,不用碰运气刷时机,更不用堆喷射之类的高端技巧。每次运行都能稳定触发,属于典型的线性逻辑缺陷。
这种"必中"特性让它与大多数内核漏洞区分开来。通常内核利用需要精确掐时间窗口,或者反复尝试才能成功,Copy Fail却像一把万能钥匙——插进去,转一下,门就开了。研究人员把同一脚本扔到不同环境测试,结果令人脊背发凉:
Ubuntu 24.04 LTS
Amazon Linux 2023
Red Hat Enterprise Linux 10.1
SUSE Linux Enterprise 16
全部沦陷。发行版之间的差异——无论是内核配置、编译器版本还是系统调用封装——都没能挡住这个脚本。对于运行共享主机或容器平台的管理员来说,这消息尤其刺耳:页缓存是全局共享的,一个容器内的写入会直接影响宿主机的页缓存,进而波及同一台物理机上的所有租户。
四、从"房子价"到成本重构:安全界的震动
Bugcrowd首席AI与科学官David Brumley在跟Hackread.com交流时,用了个很直白的比喻:如果你把Copy Fail的细节讲给顶尖内核研究员听,他们会告诉你,这类漏洞在黑市上的价格"堪比一栋房子"。
Brumley强调了两点让人无法掉以轻心的现实:
第一,评级陷阱。官方给这个漏洞标的是"高危"而非"严重",但千万别被标签骗了。它的利用门槛低到近乎荒谬,可靠性又是百分之百,实际危害远超纸面评级。
第二,成本拐点。Copy Fail的出现打破了行业内一条默认假设——发现深层内核逻辑漏洞需要极高的人力与资金成本。AI辅助审计工具能在海量代码里精准揪出这类缺陷,意味着"挖洞"的经济门槛可能已经被砍掉一个数量级。未来,类似的逻辑漏洞或许会以更密集的频次浮出水面。
五、怎么修?现在能做些什么
Linux内核主线已在提交记录a664bf3d603d中合入修复。补丁的思路很直接:algif_aead模块不再允许原地修改输入缓冲区,而是强制把数据拷贝到独立的内存区域后再处理,彻底切断污染页缓存的路径。
对于暂时无法重启或升级内核的用户,专家建议立即禁用algif_aead内核模块:
bash
复制
sudo modprobe -r algif_aead echo "blacklist algif_aead" | sudo tee -a /etc/modprobe.d/blacklist.conf这个模块主要服务于需要内核态加密加速的特定应用,日常上网、SSH登录、浏览器访问基本不会受到影响。但如果你的业务依赖IPsec VPN或某些特定的加密卸载场景,禁用前最好先做一次功能测试。
六、结语
Copy Fail像一面镜子,照出了内核代码审计中长期存在的盲区:那些为了性能而妥协的安全边界,那些"看起来没问题"的内存复用策略,在足够长的时间尺度上几乎总会被证明是脆弱的。
九年时间,足够一个漏洞从"新鲜缺陷"熬成"经典老洞"。当AI驱动的代码分析开始规模化扫描内核遗产时,我们或许该重新评估一下:Linux内核里还有多少类似的" sleeper ",正在等待被唤醒。对于运维人员和系统管理员而言,及时跟进内核更新、建立模块白名单机制,已经不再是可选项,而是底线要求
