本文写于2026年5月19日,对过去三周内相继爆发的四个Linux内核重大安全漏洞进行完整的技术剖析、背景还原和前瞻分析。如果你曾看过相关短视频或报道,并对"AI发现的漏洞不算真漏洞""传播漏洞信息是制造恐慌"等观点感到困惑,本文将给出完整的事实依据与独立判断。
写这篇长文的根因:
最近我发布几条关于 Linux 高危内核漏洞的视频,评论区出现一种声音:“你在制造恐慌”“Linus都骂AI乱报漏洞了"“你懂原理吗?”“不就是想红、想业绩吗?”
首先我是一个工作了长达26年的IT工作者,我见过太多因为忽视安全、等到被勒索、数据被删、业务瘫痪才追悔莫及的案例。我做漏洞视频,不为红、不为流量、更没有业绩之说(失业中)。
我不是制造恐慌,我是在提前预警;我不是不懂原理,我讲的正是内核最底层的逻辑缺陷我们该如何面对;我不是为了流量,我只是希望更多人别等到服务器被提权、数据被拖库才后悔。
Linus讨厌的是不懂原理的 AI 灌水报告,而不是 AI !!
一、事情的起点:不到三周,四颗"核弹"
2026年4月29日至5月14日,Linux内核在不到三周的时间里连续曝出四个高危本地提权漏洞。对于全球依赖Linux运行服务器、云平台、容器集群和嵌入式系统的数十亿用户而言,这是近年来最密集的一次内核安全冲击波。
这四个漏洞分别是:
| | | | |
|---|
| Copy Fail | | | | |
| Dirty Frag | CVE-2026-43284 / CVE-2026-43500 | | | |
| Fragnesia | | | | |
| ssh-keysign-pwn | | | | |
每一个都有公开可用的漏洞利用代码(PoC),每一个都影响Ubuntu、RHEL、Debian、Amazon Linux等所有主流发行版,每一个都被紧急收录进CISA的已知被利用漏洞(KEV)目录或受到同等级别的安全响应。
在回答"这是不是真正的威胁"之前,先看清楚每个漏洞的真实面目。
二、四个漏洞的完整技术解剖
2.1 Copy Fail(CVE-2026-31431)——"四个字节撬动整台服务器"
漏洞引入时间: 2017年8月,commit 72548b093ee3
根本原因:
Linux内核的加密API(AF_ALG接口)为了提升AEAD(带关联数据的认证加密)操作性能,引入了一个"原地加密"优化:将req->src和req->dst指向同一个合并的散列表(scatterlist)。这本是无害的性能改进——前提是所有AEAD算法都严格遵守"只写入规定范围"这一隐式契约。
但有一个叫 authencesn 的算法打破了这个从未被写进代码的约定。它用于IPsec的扩展序列号(ESN)处理,在解密操作中会将4个字节写入目标缓冲区之外。由于 splice() 系统调用可以将文件页缓存(page cache)中的只读页面送入这个散列表,而此时目标缓冲区紧邻的就是页缓存页面,那4个字节就被写进了本应只读的页缓存——即任意文件在内存中的镜像。
攻击路径(PoC原理):
非特权用户进程 │ ├─ 打开 AF_ALG socket,绑定到 authencesn(hmac(sha256),cbc(aes)) │ ├─ 通过 splice() 将 /usr/bin/su(setuid二进制)的页缓存页送入加密子系统 │ ├─ 触发 authencesn 解密操作 → 4字节越界写入 → /usr/bin/su 的内存镜像被污染 │ ├─ 内存中的 su 命令现在包含攻击者注入的代码,磁盘文件完好无损 │ └─ 调用 su → 内核执行被污染的内存版本 → root shell
为什么这个漏洞特别危险:
以往的Linux本地提权漏洞(如Dirty Cow、Dirty Pipe)大多依赖竞态条件,需要多次尝试,可能引发系统崩溃。Copy Fail是纯粹的逻辑错误,100%可靠触发,无需竞态,不会崩溃,不留磁盘痕迹(内存修改在重启后消失)。
完整利用代码仅732字节Python脚本,使用标准库,无需编译,无需特殊权限,无需root,无需网络。
影响范围: 2017年至2026年4月间编译的所有Linux内核,包含所有主流发行版。
修复方式: 回滚2017年的原地优化(commit a664bf3d603d),恢复到非原地加密路径。
2.2 Dirty Frag(CVE-2026-43284 / CVE-2026-43500)——"同一模式的第二枪"
漏洞引入时间: ESP部分2017年1月(commit cac2661c53f3);rxrpc部分2023年6月
根本原因:
Copy Fail的核心问题是:内核的加密操作路径可以通过splice()接收来自页缓存的页面,从而获得对只读文件在内存中的写入能力。Dirty Frag在不同子系统中复现了同一攻击面。
IPsec的ESP(封装安全载荷)接收路径和rxrpc协议(用于AFS分布式文件系统)在实现"原地解密快速路径"时,都允许pipe页面通过splice()/sendfile()进入内核socket缓冲区。当内核对这些缓冲区执行原地解密时,非特权进程仍持有对应页面的引用——解密后的明文(攻击者可控)就写入了这些页面,等同于任意写入页缓存。
Dirty Frag由两个独立子漏洞组成,互补彼此的"盲区"——单独使用其中任何一个都不够可靠,链式利用则可以在大多数发行版上立即获得root。
影响范围: ESP部分覆盖2017年至今所有内核;rxrpc部分覆盖2023年至今内核。
2.3 Fragnesia(CVE-2026-46300)——"遗忘的标记"
漏洞引入时间: 随 skb_try_coalesce() 函数改动引入(具体时间待确认)
根本原因:
Linux内核的socket缓冲区(skbuff)在合并页面片段时,函数skb_try_coalesce()没有正确传播SKBFL_SHARED_FRAG标记。这个标记的含义是"这个页面是外部共享的,不能被内核随意修改"。
当标记丢失后,内核"忘记"了某个页面片段是通过外部路径(例如用户空间通过splice注入的页缓存页面)进入的,随后XFRM ESP-in-TCP接收路径对这些页面执行原地AES-GCM解密,将攻击者可控的字节写入不该被写的页缓存区域。
这是对与Dirty Frag相同攻击面的一次独立发现,但根本原因在更底层的skbuff代码中,需要独立的补丁修复。
2.4 ssh-keysign-pwn(CVE-2026-46333)——"六年前就应该修好的"
漏洞引入时间: 至少6年前(2020年 Google 的 Jann Horn 提交同类修复补丁,但未被合并)
根本原因:
这个漏洞完全不同于前三个。它不涉及页缓存、不涉及加密子系统,攻击机制是内核ptrace访问控制中的一个竞态条件。
Linux在关闭一个进程时按固定顺序执行do_exit():先通过exit_mm()释放内存,再通过exit_files()关闭文件描述符。在这两步之间存在一个短暂的窗口:进程没有内存(task->mm == NULL),但文件描述符仍然打开。
内核的__ptrace_may_access()函数在检查是否允许访问时,会检查目标进程是否"可转储"(dumpable)——而mm == NULL会绕过这个检查。攻击者可以在目标进程处于这个短暂窗口时,通过pidfd_getfd(2)系统调用拿到它的文件描述符,访问本不应被访问的root拥有的文件。
实际危害:
利用的目标是具有SUID权限的系统程序。ssh-keysign在正常操作中会打开SSH主机私钥,chage在操作中会读取/etc/shadow。当这些程序退出时,攻击者趁窗口期拿到文件描述符,就能直接读取:
/etc/ssh/ssh_host_*_key/etc/shadow
拿到SSH主机私钥意味着可以实施中间人攻击,伪装成该服务器;拿到shadow文件意味着可以离线破解密码。这是一个信息泄露漏洞,不直接获得root,但危害同样严重。
三、"AI发现的漏洞":这是贬低还是事实?
关于Linus邮件引发的那个质疑——"AI发现的漏洞,有什么好在这里发"——需要把两件完全不同的事情分开来讲。
3.1 Linus邮件说的是什么
2026年5月17日,Linus Torvalds在Linux 7.1-rc4的发布公告中写道:
"AI报告的持续涌入基本上使安全列表变得几乎完全无法管理,由于不同的人使用相同的工具发现相同的问题,产生了大量重复。人们把所有时间都花在将内容转发给正确的人,或者说'那个问题一周/一个月前就已经修复了'并指向公开讨论。"
注意,Linus说的是重复的、低质量的AI生成报告正在淹没内核安全邮件列表,造成维护者无谓消耗。他在说的是流程管理问题,而不是否定AI发现漏洞的价值,更不是否定这四个漏洞本身的真实性。
事实上,Linus同天合并了ssh-keysign-pwn的修复补丁(commit 31e62c2ebbfd)。他当天在抱怨AI报告的泛滥,同时接受了一个被AI相关工具辅助发现的严重漏洞的修复。
这两件事并不矛盾。
3.2 Linus真正反对什么
Torvalds在邮件中对AI辅助的漏洞报告提出了明确的新要求:
反对的:
- 不同研究者用同一工具扫描同一子系统,提交同样的报告到私密安全列表
- 把所有AI扫出的问题都当作"私密安全漏洞"处理(AI能找到的,别人用同样工具也能找到,本质上已经不是秘密)
支持的:
- 如果AI帮你找到了真正严重的漏洞,应该附上补丁和完整分析
- 真正新颖、可被立即利用、影响大量用户的漏洞,私密报告仍然合理
- AI作为"扩大发现范围"的工具,本身是被欢迎的——Copy Fail就是这样被发现的
内核项目已更新文档,要求AI辅助发现的报告要有人类背书(Signed-off-by),AI贡献要标注(Assisted-by),并且明确了什么样的问题才值得走私密报告通道。
3.3 Copy Fail是否因为"AI发现"而变得不算数?
不。Copy Fail(以及随后的Dirty Frag、Fragnesia、ssh-keysign-pwn)是经过多家独立机构验证的真实漏洞,已收录CVE,已进入CISA KEV目录,已由全球所有主流发行版紧急修复,已有在野利用活动的迹象被Microsoft Defender记录到。
"AI发现的漏洞"和"真实漏洞"是两个完全不同维度的描述。前者说的是发现手段,后者说的是漏洞的客观存在。用发现手段来否定漏洞的真实性,在逻辑上站不住脚。
Theori安全团队研究员Tim Becker的表述是准确的:人类研究员识别攻击面,AI工具在复杂代码路径中寻找满足条件的具体缺陷。这和"人类写代码、编译器优化"没有本质区别——我们不会因为代码经过编译器处理就说"这不是真的程序"。
四、漏洞从何而来?Linux安全神话的裂缝
"Linux是最安全的操作系统"这句话不是谎言,但它隐含了一个危险的完整句:"Linux是在开放审计和快速修复文化下,迄今被发现的严重漏洞数量相对较少的操作系统。"
这四个漏洞让我们清晰地看到安全的边界在哪里。
裂缝一:性能优化与安全审计的分离
2017年那个AEAD原地优化commit,是性能团队的工作,通过了正常的代码审查。审查者在验证"它会不会加速加密操作",没有人系统地问"所有使用这个接口的算法,是否都保证只写入规定范围"。这不是审查者的失职,是数千万行代码库中,跨子系统的隐式约束本就极难被人工系统性地覆盖。
裂缝二:正确的补丁被搁置
ssh-keysign-pwn 对应的代码缺陷,Google Project Zero 的 Jann Horn 在2020年就发现了类似问题并提交了修复。那个补丁因为优先级排序或其他原因没有被合并。六年后,同一个缺陷以不同角度被重新发现并武器化。这说明内核项目需要一套专门的机制来追踪"被提交但未合并的安全相关修复"。
裂缝三:AI改变了"发现成本"曲线
传统上,发现内核级权限提升漏洞需要顶尖研究员数周乃至数月的深入分析,市场价值可达数十万美元。AI工具将这一成本压缩到一小时。这不仅意味着好人能更快找到漏洞,也意味着有动机的坏人面临的发现门槛同样大幅降低。漏洞数量不会因为AI变得更多,但被发现和被利用的速度会加快。
裂缝四:容器不是安全边界
这四个漏洞在Kubernetes和容器环境中的影响尤为突出:容器共享宿主机内核,内核提权漏洞自动获得容器逃逸能力。大量企业将"容器化"等同于"安全隔离",这是一个需要在架构层面纠正的误解。
五、传播漏洞信息是"制造恐慌"吗?
当漏洞的PoC代码已经在GitHub公开,当CISA已经将其收录进KEV目录,当Microsoft的全球遥测系统已经记录到在野利用迹象——这时候,还不知道的人,是那个处于危险中的人。告知他们,不是制造恐慌,是减少信息不对称带来的风险。想象一栋楼的安保人员发现门锁有已知的撬开方法,而且钥匙的复制品已经在网上流通。这时候通知住户"请尽快换锁或采取临时措施",是制造恐慌,还是尽职尽责?对于这四个漏洞,公开的PoC代码早在相关报道之前就已存在。攻击者不需要任何媒体报道来获取漏洞信息,他们有自己的信息渠道,而且往往更快。而防御者(大量的企业IT和普通用户)反而更依赖公开渠道获取告警。传播漏洞信息不是在帮攻击者,是在平衡信息差。误解二:"普通用户不需要知道,专业人员自然会处理"专业的安全团队当然会订阅CVE Feed和发行版安全公告。但全球运行Linux的机器里,有大量是个人VPS、小团队维护的服务器、开源爱好者的家庭服务器——他们没有专职安全团队,依赖公开信息渠道来了解自己需要做什么。在视频中提供临时缓解措施和修复指导,这不是博眼球,这是安全社区信息传递链条中有价值的一个环节。
六、当下该做什么:实操指南
以下四个漏洞需要分别独立处置,每个缓解措施对其他三个漏洞无效。
Copy Fail(CVE-2026-31431)
临时缓解(无需重启):
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.confsudo rmmod algif_aead 2>/dev/null || true
永久修复: 升级内核至各发行版已推送的修复版本,重启系统。
影响评估: 禁用该模块不影响dm-crypt/LUKS、kTLS、IPsec/XFRM、OpenSSL、GnuTLS、SSH。仅影响少数明确配置使用afalg引擎的应用。
Dirty Frag(CVE-2026-43284 / CVE-2026-43500)+ Fragnesia(CVE-2026-46300)
临时缓解(需确认系统未使用IPsec VPN):
printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' \ | sudo tee /etc/modprobe.d/dirtyfrag.confsudo rmmod esp4 esp6 rxrpc 2>/dev/null || true
注意: 如果系统使用IPsec VPN,禁用esp4/esp6会断开VPN。请先评估影响:
ip xfrm state # 有输出则说明IPsec正在使用
永久修复: 升级内核,重启。
ssh-keysign-pwn(CVE-2026-46333)
临时缓解(立即生效,无需重启):
echo 3 | sudo tee /proc/sys/kernel/yama/ptrace_scopeecho "kernel.yama.ptrace_scope = 3" | sudo tee /etc/sysctl.d/99-ptrace-ssh.conf
注意:ptrace_scope=3将禁用所有非特权ptrace,可能影响调试工具。
另一种缓解(影响最小):
sudo chmod u-s /usr/libexec/openssh/ssh-keysign 2>/dev/nullsudo chmod u-s /usr/bin/chage
此方法只关闭已知PoC目标的SUID位,但不能覆盖所有可能的SUID目标。
永久修复: 升级内核至包含 commit 31e62c2ebbfd 的版本,重启。
确认所有修复是否生效
# 检查Copy Fail模块是否已禁用lsmod | grep algif_aead && echo "仍需处理" || echo "已缓解"# 检查Dirty Frag/Fragnesia模块是否已禁用lsmod | grep -E 'esp4|esp6|rxrpc' && echo "仍需处理" || echo "已缓解"# 检查内核版本是否已包含修复uname -r# Ubuntu系统确认内核补丁apt-cache policy linux-image-$(uname -r)
七、未来信息安全的展望AI:防御者的新工具,也是攻击者的平权
这四个漏洞清晰地标志着网络安全进入一个新阶段:AI既是发现漏洞的加速器,也是被利用漏洞的加速器。漏洞从发现到被利用的时间窗口大幅压缩。 传统上,一个漏洞从被发现到有公开PoC,可能需要数周乃至数月。AI辅助下,这个时间正在压缩到数小时。Dirty Frag的PoC在协调披露遭破坏后与漏洞同时公开,Torvalds合并ssh-keysign-pwn修复后数小时就有完整PoC出现。"慢慢打补丁"的时代正在结束。AI扫描正在成为防御基础设施的标配。 如果攻击者可以用AI在一小时内扫出内核级漏洞,没有理由让防御方的代码审计还停留在纯人工阶段。未来的内核CI流水线、企业代码审计平台,都会把AI辅助安全扫描纳入必备环节——正如今天的静态分析工具已经成为标配一样。企业该如何面对Copy Fail从公开披露到多数发行版推出补丁用了不到48小时,AlmaLinux甚至在Red Hat之前推出了修复包。但这些补丁是否在24小时内应用到了你的系统?很多企业的补丁周期是月度甚至季度。这个节奏在"PoC同日公开"的时代已经不够用。关键基础设施需要建立小时级的内核补丁响应机制,至少要有"临时缓解可以在一小时内部署"的能力。如果你的威胁模型是"容器中的应用互相隔离",而底层是共享内核的容器化架构,那么这个模型需要修正。对于真正有安全隔离需求的场景,考虑microVM(如Firecracker)、用户态内核(如gVisor)或硬件虚拟化隔离。这四个漏洞都是"本地提权"——攻击者需要先在系统上有一个低权限的立足点。如果你的应用以最小权限运行,如果你的容器使用了严格的seccomp配置,如果SELinux/AppArmor在强制模式下运行——攻击面会显著收窄。安全加固不能等到漏洞出现再做。Copy Fail和Dirty Frag的利用特征可以被检测:涉及AF_ALG socket的异常创建、非特权进程发起的splice()操作链、/etc/passwd或setuid二进制的非常规访问模式。没有EDR能挡住所有零日漏洞,但异常行为检测能大幅缩短从入侵到发现的时间。个人用户该如何面对- 打开自动更新,或建立定期检查安全公告的习惯(每周一次是底线)
- 订阅你使用发行版的安全公告邮件列表(几乎所有主流发行版都有)
- 不要因为"暂时没时间重启"而推迟内核更新——这次的漏洞让这个成本很高
- 个人VPS用户尤其要注意:这几个漏洞对多租户主机影响极大
Android基于Linux内核,但Android内核与这些漏洞所在的代码路径不同,且Android的安全沙箱模型不同,需要关注Android厂商的独立安全公告,而非直接参照Linux桌面/服务器的修复。
八、结语:信息透明是安全的基础,不是恐慌的来源
网络安全领域有一个悖论:漏洞存在的时候,沉默不是安全,沉默是让不对称的危险继续扩大。这四个漏洞在公开之前,已经潜伏了7年到9年(从引入计算)。那些年里,有能力和动机寻找这类漏洞的攻击者,并不因为没有公开报道就放弃了他们的工作。漏洞是否存在,与它是否被报道,是完全独立的两件事。公开报道漏洞的意义在于:让防御方获得和攻击方同等级别的信息,以便做出知情的防御决策。Linus Torvalds抱怨的不是漏洞被公开,而是大量重复、低质量的AI生成报告正在使维护者疲于应付。这是内核维护的流程问题,和漏洞信息是否应该传播给用户完全是两回事。对于将漏洞信息传达给更广泛用户的人来说,这件事有价值,在这次事件里尤其有价值——因为所有的缓解措施都需要人去主动执行,而执行的前提是知道。
本文所有技术信息来源于公开的CVE记录、发行版官方安全公告(Ubuntu、Red Hat、AlmaLinux)、CERT-EU安全公告、Theori/Xint安全研究团队、Qualys威胁研究组的公开披露,以及Microsoft Defender、Palo Alto Unit 42等安全机构的公开分析报告。Linus Torvalds邮件内容来源于Linux内核邮件列表公开存档及The Register等技术媒体的引用报道。