CVE-2026-31431 · Linux 内核高危漏洞披露风波
2026 年 4 月底,一个编号 CVE-2026-31431、绰号 「CopyFail」 的 Linux 内核本地提权漏洞悄然公开。漏洞本身很严重,但更让安全社区炸锅的,是它背后暴露的一个老问题:Linux 内核修了漏洞、发了 CVE,但各大发行版压根不知道。
事件速览:CVE-2026-31431 在漏洞公开时,Ubuntu、Debian、Fedora、Arch、NixOS、Gentoo 等主流发行版均未事先收到通知,黑客拿到 exploit 的时间与发行版打补丁的时间几乎同步——攻击窗口大开。
漏洞本身:一个存在近十年的炸弹
CopyFail 的根源在于 Linux 内核的 AF_ALG 套接字接口——一个 2017 年(内核 4.14)引入的加密 API,允许用户态程序直接调用内核加密功能。它的初衷是好的:给嵌入式设备、硬件加速卡提供统一接口。但它的问题也很明显:
本地提权
漏洞危害级别
make-me-root 级别
具体漏洞模块是 authencesn——一个 IPsec 实现细节,原本只应在内核内部使用,却被 AF_ALG 暴露给了无权限的用户态程序。内核密码学研究者直接评价:「AF_ALG 从一开始就不该存在,它暴露了一个庞大的攻击面,而实际使用者寥寥无几——除了 exploit。」
披露流程:发行版被完全跳过
按照正常的安全漏洞协调披露流程,补丁就绪前应给下游发行版留出「禁运期(embargo)」,让他们提前打包好补丁,漏洞公开时用户能同步安装。但 Linux 内核的流程不是这样的。
环节
实际情况
漏洞发现
研究者上报内核安全团队
内核修复
4月11日已合并补丁到 6.18.22 / 6.19.12 / 7.0
通知发行版
❌ 无任何预通知
CVE 公开
4月29日发布,发行版仓皇应对
Gentoo 开发者 Sam James 在 oss-security 邮件列表公开炮轰,并附上了一段关键引用:
Note that for Linux kernel vulnerabilities, unless the
reporter chooses to bring it to the linux-distros ML,
there is no heads-up to distributions.
It did not happen here.
-- Sam James, Gentoo Developer
Greg KH 的回应:被法律锁住了手脚
Linux 内核稳定版维护者 Greg Kroah-Hartman 亲自在邮件列表回应,解释了内核安全团队为什么无法提前通知任何发行版:
Greg KH 原话:「Nope, sorry, we are NOT allowed to notify anyone about anything 'ahead of time' otherwise we will have to tell everyone about everything. That's the only policy by which all the legal/governmental agencies have agreed to allow us to operate in, so we are stuck with it.」
白话翻译:内核安全团队受到法律和政府机构的约束——如果要提前告知 A,就必须同时告知所有人;但全球有数百个活跃发行版,其中不乏安全薄弱环节,提前告知所有人反而可能放大泄露风险。规则只能是:谁都不提前告知。
技术层面:AF_ALG 就不该存在?
HN 上这场讨论还引出了对 AF_ALG 本身的质疑。内核密码学开发者给出了明确判断:
① AF_ALG 的设计初衷
为嵌入式设备提供访问硬件加速加密的标准接口;让密钥材料留在内核态;减少内存受限设备的 userspace 库占用。
② 为什么现在成了问题
syzbot 自动化模糊测试 + LLM 辅助漏洞挖掘,使 AF_ALG 的庞大攻击面被持续扫描。而现实中 AF_ALG 几乎没有合法使用者,它主要出现在 exploit PoC 代码里。
③ 临时缓解方案
内核配置中关闭所有 CONFIG_CRYPTO_USER_API_* 选项;或加载 eBPF 规则(GranPC 已开源 CVE-2026-31431-mitigation)。Ubuntu 已有补丁,NixOS kernel 7.0 不受影响,长期支持版(6.12/6.6/6.1/5.15/5.10)补丁尚未就绪。
更深的问题:内核与发行版之间的协调空白
这次事件让一个长期被回避的结构性矛盾再次浮出水面:Linux 内核上游与下游发行版之间,没有任何制度化的漏洞协调机制。
有 HN 用户一针见血:「停止指责漏洞报告者。Linux 内核早就不是玩具项目了,背后有大量全职员工,是时候建立通知发行版的流程了。」
另一个现实困境是:全球有数百个活跃 Linux 发行版,要逐一提前通知既不现实,又可能扩大泄露面。但完全不通知的代价,就是 CVE 公开时大量服务器毫无防备地暴露给攻击者。
CopyFail 事件的核心不是一个漏洞,而是一个治理困境:当 Linux 内核的规模和影响力早已达到全球基础设施级别,它的安全披露流程却还停留在「开源小项目时代」。法律约束是真实的,但「什么都不能做」也不是可以永远维持的答案。开源世界最终需要面对这个问题:谁来填补内核与发行版之间的安全协调空白?
📅 2026年5月1日 · 整理自 oss-security ML / Hacker News