如果一段不到1KB的Python代码,能在你毫无察觉的情况下把普通用户变成系统管理员,你现有的安全防线还剩多少可信度?
这不是假设。安全研究团队Xint.io和Theori最近披露了一个名为"Copy Fail"(CVE-2026-31431)的Linux内核漏洞,CVSS评分7.8。它的攻击载荷极小,影响范围极广——从2017年至今的主流Linux发行版几乎全部中招。
漏洞的底层机制:一次"合法"的内存写入
问题藏在Linux内核的加密子系统里,具体是algif_aead模块。2017年8月的一次代码优化,为这个漏洞埋下了种子。
正常情况下,普通用户不能修改系统文件。但Copy Fail绕过了这个限制:它利用内核的异步加密接口(AF_ALG套接字),把恶意数据"嫁接"进内核的文件页缓存(page cache)。
页缓存是Linux用来加速文件访问的内存区域。多个进程共享同一份缓存——这意味着容器A里的攻击,可以污染容器B读取的系统文件。
攻击流程只有四步:打开加密套接字、构造载荷、向"/usr/bin/su"的缓存副本写入四个字节、执行提权。整个过程不需要竞争条件,不需要猜测内核地址,成功率接近100%。
正方观点:这是一个"完美风暴"级漏洞
支持"极度危险"判断的证据很充分。
首先是可移植性。Xint.io发言人向The Hacker News表示,这个漏洞同时具备四个罕见特性:"可移植、极小、隐蔽、跨容器"。同一段代码在Amazon Linux、RHEL、SUSE、Ubuntu上都能跑通,不需要针对特定发行版调整。
其次是攻击门槛。732字节的Python脚本,任何获得本地shell的低权限用户都能执行。云环境、共享主机、多租户容器平台——这些场景下的隔离假设被直接击穿。
第三是隐蔽性。修改发生在页缓存层面,不触碰磁盘上的原始文件。系统审计工具很难发现异常,因为内核"认为"这是一次正常的加密操作。
第四是持久影响。页缓存污染可以跨进程传播。一个容器被攻破,同主机的其他容器读取相同系统文件时,也会加载被篡改的版本。
Bugcrowd的David Brumley把Copy Fail和2022年的Dirty Pipe(CVE-2022-0847)并列:"同一个攻击原语,换了个子系统。"Dirty Pipe曾让攻击者向只读文件注入数据,Copy Fail更进一步——它针对的是任意可读文件的页缓存。
反方观点:攻击前提限制了实际风险
也有理由认为,这个漏洞的威胁被部分放大。
关键限制是"本地"二字。CVE-2026-31431不能远程利用,攻击者必须先获得系统上的普通用户权限。对于边界防护完善、内部账号管控严格的环境,这第一道门槛就不低。
云厂商的响应速度也构成缓冲。披露后,主流发行版已发布安全公告和补丁。自动更新机制下,大量系统可能在攻击者大规模利用前已完成修复。
此外,现代防御体系的多层设计提供了纵深保护。即使内核被绕过,SELinux、AppArmor等强制访问控制仍可能拦截异常行为。容器运行时的一些安全加固选项,也能限制AF_ALG套接字的使用。
还有声音指出,"跨容器攻击"的场景在真实环境中并不普遍。多数生产容器不会共享同一宿主机的页缓存敏感文件,或者使用了只读根文件系统等隔离手段。
我的判断:架构层面的警钟,而非末日场景
Copy Fail的真正价值,在于它暴露了Linux内核一个长期存在的信任假设漏洞。
2017年的那次优化——让页缓存页面进入加密操作的可写目标列表——在当时看起来是性能提升。但开发者没有意识到,这个"优化"打破了文件权限模型与内存管理之间的边界。普通用户通过"合法"的内核接口,获得了本不该拥有的写入能力。
这不是第一次。Dirty Pipe在2022年用了类似的页缓存操纵手法。两次漏洞间隔四年,攻击原语几乎相同,只是子系统不同。说明内核代码审查中,对"页缓存可写性"的风险认知仍然不足。
对于技术决策者,Copy Fail提出了三个必须回答的问题:
第一,你的多租户隔离是否过度依赖内核的安全承诺?容器、虚拟化、沙箱——这些技术的边界在页缓存层面是模糊的。攻击者不需要逃逸容器,只需要污染共享的缓存内容。
第二,你的入侵检测能否发现"合法"的系统调用序列?Copy Fail的操作在内核看来是正常的加密请求,传统的行为分析可能完全漏过。
第三,你的补丁响应能否跑赢攻击者的脚本分发?732字节的载荷,意味着武器化成本极低。一旦PoC公开,大规模扫描和自动化利用几乎必然发生。
具体行动上,立即检查内核版本并应用发行版补丁是底线操作。更进一步,考虑在容器和敏感工作负载中禁用或限制AF_ALG套接字,审计对setuid二进制文件的访问模式,以及评估是否需要额外的页缓存完整性监控。
Copy Fix不会重写Linux安全史,但它是一面镜子——照出我们在性能与安全性之间的取舍,以及那些以为已经修复、实则换个角落重生的旧问题。内核代码的每一次"优化",都值得多问一句:这个便利,是谁在买单?
热门跟贴