<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>安全动态 on KnightLi的博客</title>
        <link>https://www.knightli.com/categories/%E5%AE%89%E5%85%A8%E5%8A%A8%E6%80%81/</link>
        <description>Recent content in 安全动态 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 17 May 2026 09:29:03 +0800</lastBuildDate><atom:link href="https://www.knightli.com/categories/%E5%AE%89%E5%85%A8%E5%8A%A8%E6%80%81/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>ssh-keysign-pwn（CVE-2026-46333）解读：Linux 本地信息泄露、SSH 主机密钥与 /etc/shadow 风险</title>
        <link>https://www.knightli.com/2026/05/17/ssh-keysign-pwn-cve-2026-46333/</link>
        <pubDate>Sun, 17 May 2026 09:29:03 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/17/ssh-keysign-pwn-cve-2026-46333/</guid>
        <description>&lt;p&gt;&lt;code&gt;ssh-keysign-pwn&lt;/code&gt; 是围绕 Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; 逻辑问题公开的一组利用路径，CVE 编号为 &lt;code&gt;CVE-2026-46333&lt;/code&gt;。它不是远程无认证漏洞，也不是直接拿 root shell 的漏洞，但风险仍然很高：本地低权限用户可能读取本不该访问的 root 敏感文件，例如 SSH 主机私钥或 &lt;code&gt;/etc/shadow&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;对运维来说，重点不是复现 PoC，而是尽快判断哪些机器受影响、升级内核、重启生效，并在必要时轮换 SSH host keys 和重置密码。&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;这次漏洞的处置优先级很高，原因有四点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;触发条件是本地低权限用户，不需要 root。&lt;/li&gt;
&lt;li&gt;已有公开 PoC，利用门槛明显降低。&lt;/li&gt;
&lt;li&gt;影响目标不是普通文件，而可能是 SSH 主机私钥和 &lt;code&gt;/etc/shadow&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;修复需要内核补丁并重启，不能只升级包后不重启。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的服务器有多用户、本地 shell、共享主机、CI runner、容器宿主机、学生机房、跳板机或任何“不完全可信本地用户”，应该优先处理。&lt;/p&gt;
&lt;h2 id=&#34;漏洞是什么&#34;&gt;漏洞是什么
&lt;/h2&gt;&lt;p&gt;Qualys 在 2026 年 5 月 15 日通过 oss-security 公开说明：他们此前向 &lt;code&gt;security@kernel.org&lt;/code&gt; 报告了 Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; 的逻辑问题，上游修复已经由 Linus 合入。随后社区出现了公开利用代码，因此 Qualys 将信息发到 oss-security。&lt;/p&gt;
&lt;p&gt;Linux kernel CVE 团队随后为这个问题分配了 &lt;code&gt;CVE-2026-46333&lt;/code&gt;。NVD 页面显示该 CVE 来源为 kernel.org，问题描述对应内核提交 &lt;code&gt;ptrace: slightly saner &#39;get_dumpable()&#39; logic&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;简单说，这个漏洞出现在进程退出路径上。某些特权进程正在退出时，内核里与 &lt;code&gt;ptrace&lt;/code&gt; 访问检查相关的逻辑可能因为目标任务已经没有 &lt;code&gt;mm&lt;/code&gt; 而绕过本应依赖的 dumpable 检查。攻击者可以在很窄的竞态窗口中，拿到正在退出的特权进程仍然打开着的文件描述符。&lt;/p&gt;
&lt;p&gt;这也是为什么它被叫作 &lt;code&gt;ssh-keysign-pwn&lt;/code&gt;：公开利用路径之一会围绕 &lt;code&gt;ssh-keysign&lt;/code&gt; 读取 SSH host private keys。&lt;/p&gt;
&lt;h2 id=&#34;为什么能读到-ssh-主机私钥和-etcshadow&#34;&gt;为什么能读到 SSH 主机私钥和 /etc/shadow
&lt;/h2&gt;&lt;p&gt;这个问题本质上是本地信息泄露。它利用的是特权程序在退出过程中“内存描述符已经脱离，但文件描述符还没关闭”的时间窗口。&lt;/p&gt;
&lt;p&gt;AlmaLinux 的公告对风险讲得比较清楚：如果特权程序在降权前打开了敏感文件，而攻击者在退出窗口中成功拿到对应文件描述符，就可能读取这些敏感文件。&lt;/p&gt;
&lt;p&gt;公开讨论中常见的两个目标是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ssh-keysign&lt;/code&gt;：可能涉及 &lt;code&gt;/etc/ssh/ssh_host_*_key&lt;/code&gt; 这类 SSH 主机私钥。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chage&lt;/code&gt;：可能涉及 &lt;code&gt;/etc/shadow&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SSH 主机私钥泄露后，攻击者可能伪装成该主机，影响 SSH 主机身份信任。&lt;code&gt;/etc/shadow&lt;/code&gt; 泄露后，攻击者可以离线破解密码哈希，进一步扩大影响。&lt;/p&gt;
&lt;p&gt;这也是为什么它虽然不是“直接 root shell”，但仍然应按高优先级处理。&lt;/p&gt;
&lt;h2 id=&#34;影响范围怎么判断&#34;&gt;影响范围怎么判断
&lt;/h2&gt;&lt;p&gt;从上游角度看，这是 Linux kernel 的漏洞。NVD 记录显示该问题在 2026 年 5 月 15 日进入 NVD 数据集，NVD 当时还没有给出 CVSS 评分。&lt;/p&gt;
&lt;p&gt;发行版层面的状态要以各自公告为准：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AlmaLinux 8、9、10 都发布了处理说明，并在 2026 年 5 月 16 日更新称 patched kernels 已进入生产仓库。&lt;/li&gt;
&lt;li&gt;Debian security tracker 已列出 bullseye、bookworm、trixie、sid 等分支的 vulnerable/fixed 状态和固定版本。&lt;/li&gt;
&lt;li&gt;其他发行版需要分别查看 Ubuntu、Red Hat、SUSE、Arch、Alpine 等官方安全页面或更新源。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不要只按内核大版本判断是否安全。发行版会 backport 修复，同一个上游版本号在不同发行版中可能代表不同补丁状态。&lt;/p&gt;
&lt;h2 id=&#34;应该优先处理哪些机器&#34;&gt;应该优先处理哪些机器
&lt;/h2&gt;&lt;p&gt;建议按风险排序处理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;多用户服务器和共享主机。&lt;/li&gt;
&lt;li&gt;有普通 shell 账号的跳板机、教学机、开发机。&lt;/li&gt;
&lt;li&gt;CI runner、构建机、托管平台宿主机。&lt;/li&gt;
&lt;li&gt;容器宿主机和虚拟化宿主机，尤其是不完全可信 workload 共存的环境。&lt;/li&gt;
&lt;li&gt;公开服务机器，虽然漏洞需要本地访问，但一旦 Web/RCE/弱口令带来低权限落点，风险会叠加。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;纯单用户桌面环境风险相对低一些，但仍建议随系统更新修复。原因很简单：本地低权限代码执行在桌面上并不少见，浏览器、开发工具、脚本和第三方软件都可能成为落点。&lt;/p&gt;
&lt;h2 id=&#34;修复建议&#34;&gt;修复建议
&lt;/h2&gt;&lt;p&gt;首选方案是安装发行版提供的修复内核并重启。&lt;/p&gt;
&lt;p&gt;不同发行版命令不同，原则相同：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;更新软件源元数据。&lt;/li&gt;
&lt;li&gt;安装包含 &lt;code&gt;CVE-2026-46333&lt;/code&gt; 修复的 kernel 包。&lt;/li&gt;
&lt;li&gt;重启进入新内核。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;uname -r&lt;/code&gt; 和发行版安全公告核对当前运行内核是否已修复。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AlmaLinux 公告中提到，生产仓库已推出修复内核，用户可以执行常规 &lt;code&gt;dnf upgrade&lt;/code&gt; 并重启。Debian tracker 也列出了多个分支的 fixed versions。&lt;/p&gt;
&lt;p&gt;需要注意：只安装新 kernel 包但不重启，旧内核仍在运行，漏洞仍然存在。&lt;/p&gt;
&lt;h2 id=&#34;临时缓解收紧-ptrace_scope&#34;&gt;临时缓解：收紧 ptrace_scope
&lt;/h2&gt;&lt;p&gt;如果暂时不能重启，可以先收紧 Yama 的 &lt;code&gt;ptrace_scope&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;Qualys 在 oss-security 后续回复中确认，将 &lt;code&gt;/proc/sys/kernel/yama/ptrace_scope&lt;/code&gt; 设置为 &lt;code&gt;2&lt;/code&gt;（admin-only attach）或 &lt;code&gt;3&lt;/code&gt;（no attach）可以阻止他们已知的公开利用路径。但他们也说明，理论上可能存在其他利用方式，所以这只是缓解，不是修复。&lt;/p&gt;
&lt;p&gt;临时设置可以用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sysctl -w kernel.yama.ptrace_scope&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;持久化可以写入 sysctl 配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;kernel.yama.ptrace_scope = 3&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/sysctl.d/99-ssh-keysign-pwn.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;ptrace_scope=3&lt;/code&gt; 会禁用 ptrace attach，可能影响 &lt;code&gt;gdb&lt;/code&gt;、&lt;code&gt;strace -p&lt;/code&gt; 等调试场景。如果生产环境需要调试，可以评估使用 &lt;code&gt;2&lt;/code&gt;。无论选哪一个，都应尽快安排内核升级和重启。&lt;/p&gt;
&lt;h2 id=&#34;是否需要轮换-ssh-主机密钥&#34;&gt;是否需要轮换 SSH 主机密钥
&lt;/h2&gt;&lt;p&gt;如果机器在漏洞公开前后存在以下情况，建议保守处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有不可信本地用户。&lt;/li&gt;
&lt;li&gt;有共享主机或容器/CI 多租户环境。&lt;/li&gt;
&lt;li&gt;有 Web 漏洞、弱口令、供应链脚本等可能给攻击者本地落点。&lt;/li&gt;
&lt;li&gt;日志中出现可疑本地进程、异常调试行为或公开 PoC 文件。&lt;/li&gt;
&lt;li&gt;机器在修复前暴露了较长时间。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;保守处置包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修复并重启后轮换 SSH host keys。&lt;/li&gt;
&lt;li&gt;更新已知主机指纹管理系统。&lt;/li&gt;
&lt;li&gt;通知依赖该主机指纹的自动化系统。&lt;/li&gt;
&lt;li&gt;检查 SSH 连接告警，避免误把合法指纹变化当成中间人攻击或反过来忽略真实风险。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果怀疑 &lt;code&gt;/etc/shadow&lt;/code&gt; 已泄露，还应评估密码重置、禁止弱密码、检查是否存在可离线破解的旧哈希。&lt;/p&gt;
&lt;h2 id=&#34;需要监控什么&#34;&gt;需要监控什么
&lt;/h2&gt;&lt;p&gt;这类漏洞利用窗口很短，传统日志未必能完整记录。但仍可以关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通用户目录下是否出现 &lt;code&gt;ssh-keysign-pwn&lt;/code&gt;、&lt;code&gt;chage_pwn&lt;/code&gt; 或类似 PoC 文件。&lt;/li&gt;
&lt;li&gt;可疑编译行为，例如短时间内编译陌生 C 程序。&lt;/li&gt;
&lt;li&gt;异常访问 &lt;code&gt;/etc/ssh/ssh_host_*_key&lt;/code&gt;、&lt;code&gt;/etc/shadow&lt;/code&gt; 的迹象。&lt;/li&gt;
&lt;li&gt;异常 &lt;code&gt;pidfd_getfd&lt;/code&gt;、&lt;code&gt;ptrace&lt;/code&gt;、调试器相关行为。&lt;/li&gt;
&lt;li&gt;SSH 主机指纹被外部系统报告异常。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些信号不能证明一定被利用，也不能证明没有被利用。真正的优先事项仍然是补丁、重启、凭据轮换和风险隔离。&lt;/p&gt;
&lt;h2 id=&#34;常见误区&#34;&gt;常见误区
&lt;/h2&gt;&lt;p&gt;第一个误区：它不是 OpenSSH 远程漏洞。名字里有 &lt;code&gt;ssh-keysign&lt;/code&gt;，但根因在 Linux kernel 的 &lt;code&gt;ptrace&lt;/code&gt; 访问检查逻辑，不是 &lt;code&gt;sshd&lt;/code&gt; 远程认证流程。&lt;/p&gt;
&lt;p&gt;第二个误区：没有本地用户就完全没风险。漏洞确实需要本地执行条件，但很多真实攻击链会先通过 Web 服务、CI、脚本、弱口令或容器逃逸前置步骤获得低权限本地落点。&lt;/p&gt;
&lt;p&gt;第三个误区：设置 &lt;code&gt;ptrace_scope&lt;/code&gt; 就够了。它是临时缓解，不是根本修复。内核更新和重启仍然需要做。&lt;/p&gt;
&lt;p&gt;第四个误区：只要没被拿 root 就没事。SSH 主机私钥和 &lt;code&gt;/etc/shadow&lt;/code&gt; 的泄露本身就足以导致后续横向移动、主机伪装和离线破解风险。&lt;/p&gt;
&lt;h2 id=&#34;处置清单&#34;&gt;处置清单
&lt;/h2&gt;&lt;p&gt;建议按这个顺序执行：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;盘点受影响 Linux 主机，特别是多用户和共享环境。&lt;/li&gt;
&lt;li&gt;查看发行版官方安全公告，确认 fixed kernel 版本。&lt;/li&gt;
&lt;li&gt;安装修复内核并重启。&lt;/li&gt;
&lt;li&gt;暂时不能重启的机器，先设置 &lt;code&gt;kernel.yama.ptrace_scope=2&lt;/code&gt; 或 &lt;code&gt;3&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;修复后核对正在运行的内核版本。&lt;/li&gt;
&lt;li&gt;对高风险机器轮换 SSH host keys。&lt;/li&gt;
&lt;li&gt;如果怀疑 &lt;code&gt;/etc/shadow&lt;/code&gt; 泄露，评估密码重置和账号审计。&lt;/li&gt;
&lt;li&gt;检查是否存在公开 PoC、异常编译和可疑本地调试行为。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ssh-keysign-pwn&lt;/code&gt;（&lt;code&gt;CVE-2026-46333&lt;/code&gt;）是一个本地信息泄露漏洞，根因在 Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; 相关逻辑。它不需要远程直接打进来，也不直接给 root shell，但可以让低权限本地用户读取高价值敏感文件，这使它在多用户、共享主机、CI 和容器宿主环境中非常值得警惕。&lt;/p&gt;
&lt;p&gt;最可靠的修复是升级到发行版提供的修复内核并重启。&lt;code&gt;ptrace_scope=2/3&lt;/code&gt; 可以作为临时缓解，但不能替代补丁。已经暴露在风险窗口中的关键主机，还应考虑 SSH 主机密钥轮换和密码风险评估。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security：Qualys 关于 __ptrace_may_access() 逻辑问题的披露&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/9&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security：Qualys 确认 CVE-2026-46333 编号&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security：Qualys 确认 ptrace_scope 临时缓解&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-46333&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD：CVE-2026-46333&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://security-tracker.debian.org/tracker/CVE-2026-46333&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Debian Security Tracker：CVE-2026-46333&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/he/blog/2026-05-15-ssh-keysign-pwn-cve-2026-46333/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AlmaLinux：ssh-keysign-pwn (CVE-2026-46333) Patches Released&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/torvalds/linux/commit/31e62c2ebbfdc3fe3dbdf5e02c92a9dc67087a3a&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux upstream fix：ptrace get_dumpable() logic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>CVE-2026-42945 怎么排查？Nginx Rift 漏洞触发条件、版本检查与升级建议</title>
        <link>https://www.knightli.com/2026/05/15/nginx-rift-cve-2026-42945/</link>
        <pubDate>Fri, 15 May 2026 17:55:42 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/15/nginx-rift-cve-2026-42945/</guid>
        <description>&lt;p&gt;&lt;code&gt;CVE-2026-42945&lt;/code&gt; 是 NGINX Open Source 和 NGINX Plus 中的一个安全漏洞，外界也把它称为 &lt;code&gt;Nginx Rift&lt;/code&gt;。它出现在 &lt;code&gt;ngx_http_rewrite_module&lt;/code&gt;，漏洞类型是 heap-based buffer overflow。&lt;/p&gt;
&lt;p&gt;这类新闻很容易被写成“潜伏 18 年”“不用密码远程控制”“三成服务器中招”。这些说法有传播性，但看补丁和 NVD 描述时，最好把风险拆开看：它确实严重，也确实不需要登录账号；但并不是所有 Nginx 实例都会自动被接管，触发需要特定 rewrite 配置和请求条件。&lt;/p&gt;
&lt;h2 id=&#34;先看官方描述&#34;&gt;先看官方描述
&lt;/h2&gt;&lt;p&gt;NVD 对 &lt;code&gt;CVE-2026-42945&lt;/code&gt; 的描述可以概括为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;影响 NGINX Plus 和 NGINX Open Source。&lt;/li&gt;
&lt;li&gt;漏洞位于 &lt;code&gt;ngx_http_rewrite_module&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;当 &lt;code&gt;rewrite&lt;/code&gt; 指令后面跟着 &lt;code&gt;rewrite&lt;/code&gt;、&lt;code&gt;if&lt;/code&gt; 或 &lt;code&gt;set&lt;/code&gt; 指令，并且使用未命名的 PCRE 捕获组，例如 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt;，同时替换字符串里包含问号 &lt;code&gt;?&lt;/code&gt; 时，可能触发问题。&lt;/li&gt;
&lt;li&gt;未认证攻击者可以发送构造请求触发漏洞。&lt;/li&gt;
&lt;li&gt;结果可能是 NGINX worker 进程发生 heap buffer overflow 并重启。&lt;/li&gt;
&lt;li&gt;如果系统关闭了 ASLR，存在代码执行可能。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;F5 作为 CNA 给出的评分是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CVSS v4.0：&lt;code&gt;9.2&lt;/code&gt;，Critical。&lt;/li&gt;
&lt;li&gt;CVSS v3.1：&lt;code&gt;8.1&lt;/code&gt;，High。&lt;/li&gt;
&lt;li&gt;CWE：&lt;code&gt;CWE-122 Heap-based Buffer Overflow&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，这不是普通的“配置写错导致 404”问题，而是 Nginx 官方安全修复范围内的内存安全漏洞。&lt;/p&gt;
&lt;h2 id=&#34;哪些说法需要降温&#34;&gt;哪些说法需要降温
&lt;/h2&gt;&lt;p&gt;第一，“不用密码”基本可以理解为未认证攻击。也就是说，攻击者不需要登录 Nginx 后台，不需要拿到 SSH，也不需要应用系统账号。但这不等于任何公网 Nginx 都能被随手接管。&lt;/p&gt;
&lt;p&gt;第二，“直接远程控制”要看条件。官方描述里更稳妥的说法是：漏洞可导致 worker 进程重启；在 ASLR 关闭的系统上，代码执行是可能结果。对启用了 ASLR、发行版编译加固完整、运行权限受限的环境，风险路径会更复杂。&lt;/p&gt;
&lt;p&gt;第三，“30% 服务器中招”不能简单等同于“所有 Nginx 市占率都是漏洞暴露面”。真正暴露要同时看版本、是否启用受影响模块、是否存在特定 rewrite 配置、发行版是否已经回补补丁，以及 Nginx 运行环境的加固状态。&lt;/p&gt;
&lt;p&gt;更准确的判断方式是：只要你在生产环境运行 Nginx，就应该尽快检查；但不要只按标题里的比例判断自己是否中招。&lt;/p&gt;
&lt;h2 id=&#34;受影响范围怎么判断&#34;&gt;受影响范围怎么判断
&lt;/h2&gt;&lt;p&gt;从 nginx.org 发布信息看，2026 年 5 月 13 日发布的 &lt;code&gt;nginx-1.30.1&lt;/code&gt; stable 和 &lt;code&gt;nginx-1.31.0&lt;/code&gt; mainline 包含多项安全修复，其中包括 &lt;code&gt;ngx_http_rewrite_module&lt;/code&gt; 的 buffer overflow，也就是 &lt;code&gt;CVE-2026-42945&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你使用官方 Nginx 源码或官方包，可以优先关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NGINX Open Source stable：升级到 &lt;code&gt;1.30.1&lt;/code&gt; 或之后版本。&lt;/li&gt;
&lt;li&gt;NGINX Open Source mainline：升级到 &lt;code&gt;1.31.0&lt;/code&gt; 或之后版本。&lt;/li&gt;
&lt;li&gt;NGINX Plus：查看 F5 对应分支的修复版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你使用 Debian、Ubuntu、RHEL、AlmaLinux、Rocky Linux、Alpine、容器镜像、Plesk、宝塔、Ingress Controller 或云厂商托管组件，不要只看 &lt;code&gt;nginx -v&lt;/code&gt; 里的上游版本号。很多发行版会把安全补丁 backport 到旧版本包里，版本号看起来旧，但补丁可能已经合入。&lt;/p&gt;
&lt;h2 id=&#34;一分钟判断是否需要紧急处理&#34;&gt;一分钟判断是否需要紧急处理
&lt;/h2&gt;&lt;p&gt;可以先按下面几个问题快速分级：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这台 Nginx 是否直接暴露在公网，或者位于 API Gateway、反向代理、负载均衡、Ingress 入口层？&lt;/li&gt;
&lt;li&gt;是否使用官方 Nginx 包、源码编译包、第三方面板、容器镜像，且还没有确认 &lt;code&gt;CVE-2026-42945&lt;/code&gt; 修复状态？&lt;/li&gt;
&lt;li&gt;配置里是否存在复杂 &lt;code&gt;rewrite&lt;/code&gt; 规则，尤其是连续 &lt;code&gt;rewrite&lt;/code&gt;、&lt;code&gt;if&lt;/code&gt;、&lt;code&gt;set&lt;/code&gt;，以及 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt; 这类未命名捕获组？&lt;/li&gt;
&lt;li&gt;是否存在把请求路径、查询参数或用户可控输入带入 rewrite 目标的场景？&lt;/li&gt;
&lt;li&gt;系统加固是否较弱，例如 ASLR 被关闭、worker 权限过高、容器权限过宽？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果前两项命中，并且 rewrite 配置还没有排查，建议按高优先级处理。公网入口、共享环境、Kubernetes Ingress、边缘代理和承载登录/API 流量的 Nginx，应该优先升级或替换到确认修复的包。&lt;/p&gt;
&lt;h2 id=&#34;debian--ubuntu--rhel--alpine-如何确认修复&#34;&gt;Debian / Ubuntu / RHEL / Alpine 如何确认修复
&lt;/h2&gt;&lt;p&gt;发行版用户不要只看 &lt;code&gt;nginx -v&lt;/code&gt;。Debian、Ubuntu、RHEL、AlmaLinux、Rocky Linux、Alpine 这类系统经常把安全补丁回补到稳定分支，表面版本号可能仍然低于 nginx.org 的 &lt;code&gt;1.30.1&lt;/code&gt; 或 &lt;code&gt;1.31.0&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;Debian / Ubuntu 可以优先看安全公告、包 changelog 和可升级列表：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -V
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt list --upgradable &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt changelog nginx &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;CVE-2026-42945&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;RHEL / AlmaLinux / Rocky Linux 可以看安全更新和包变更记录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum updateinfo list security &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rpm -q --changelog nginx &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;CVE-2026-42945&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Alpine 可以检查当前包版本和安全分支更新：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apk info -v nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apk version -v nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果包管理器、发行版安全公告或厂商 advisory 明确写明已修复 &lt;code&gt;CVE-2026-42945&lt;/code&gt;，即使上游版本号看起来不新，也可以按“已回补修复”处理。反过来，如果只是版本号较高但来源不明，仍然要确认构建日期和补丁来源。&lt;/p&gt;
&lt;h2 id=&#34;容器镜像与-ingress-controller-怎么查&#34;&gt;容器镜像与 Ingress Controller 怎么查
&lt;/h2&gt;&lt;p&gt;容器环境要检查镜像里的 Nginx，而不是只看宿主机。先确认镜像实际内置版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm your-nginx-image nginx -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm your-nginx-image nginx -V
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;还要看基础镜像是否更新过。如果镜像基于 Debian、Ubuntu、Alpine 或发行版包构建，判断方式应回到对应发行版的安全公告和包 changelog。只重启旧镜像没有意义，镜像本身需要重新构建或替换。&lt;/p&gt;
&lt;p&gt;Kubernetes Ingress 需要同时确认三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ingress Controller 项目是否发布了针对 &lt;code&gt;CVE-2026-42945&lt;/code&gt; 的 advisory 或修复版本。&lt;/li&gt;
&lt;li&gt;当前集群运行的 controller 镜像 digest 是否已经更新，而不是只改了 tag。&lt;/li&gt;
&lt;li&gt;controller 内置 Nginx 版本、构建参数和模板配置是否仍然包含高风险 rewrite 规则。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;可以先看运行中的镜像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx get pods -o wide
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx describe pod &amp;lt;pod-name&amp;gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i image
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用云厂商托管 Ingress 或网关，还要查对应云服务公告。托管组件通常不是用户自己 &lt;code&gt;apt upgrade&lt;/code&gt; 能解决的，需要等待厂商修复或切换到已修复版本。&lt;/p&gt;
&lt;h2 id=&#34;rewrite-配置重点排查哪些写法&#34;&gt;rewrite 配置重点排查哪些写法
&lt;/h2&gt;&lt;p&gt;这个漏洞和 &lt;code&gt;rewrite&lt;/code&gt; 配置有关，排查时可以先搜索 Nginx 配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep -R &lt;span class=&#34;s2&#34;&gt;&amp;#34;rewrite&amp;#34;&lt;/span&gt; /etc/nginx -n
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep -R &lt;span class=&#34;s2&#34;&gt;&amp;#34;\\&lt;/span&gt;$&lt;span class=&#34;s2&#34;&gt;[0-9]&amp;#34;&lt;/span&gt; /etc/nginx -n
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重点关注类似模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;rewrite&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;^/old/(.*)&lt;/span&gt;$ &lt;span class=&#34;s&#34;&gt;/new/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1?&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;permanent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里的 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt; 这类未命名捕获组，以及替换目标中的 &lt;code&gt;?&lt;/code&gt;，是官方描述里的关键条件之一。排查时尤其关注下面几类写法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个 &lt;code&gt;rewrite&lt;/code&gt; 后面紧跟另一个 &lt;code&gt;rewrite&lt;/code&gt;、&lt;code&gt;if&lt;/code&gt; 或 &lt;code&gt;set&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;正则里使用 &lt;code&gt;(.*)&lt;/code&gt;、&lt;code&gt;(.+)&lt;/code&gt; 这类宽泛捕获，并在目标里用 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;rewrite 目标里带 &lt;code&gt;?&lt;/code&gt;，用于拼接或丢弃查询参数。&lt;/li&gt;
&lt;li&gt;rewrite 输入来自公网路径、Host、URI、参数或上游可控值。&lt;/li&gt;
&lt;li&gt;面板、网关、Ingress 注解或模板自动生成的 rewrite 规则。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果短时间内无法升级，可以先做临时缓解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;减少复杂 rewrite 规则。&lt;/li&gt;
&lt;li&gt;把未命名捕获组改成更清晰的命名捕获。&lt;/li&gt;
&lt;li&gt;避免在替换字符串里拼接不必要的 &lt;code&gt;?&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;对高风险入口加 WAF 或反向代理规则。&lt;/li&gt;
&lt;li&gt;确认系统启用了 ASLR。&lt;/li&gt;
&lt;li&gt;降低 Nginx worker 运行权限，确认 systemd sandbox、SELinux/AppArmor 等加固状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些只是缓解，不是替代补丁。&lt;/p&gt;
&lt;h2 id=&#34;修复优先级&#34;&gt;修复优先级
&lt;/h2&gt;&lt;p&gt;建议按暴露面排序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;公网入口 Nginx。&lt;/li&gt;
&lt;li&gt;反向代理、API Gateway、边缘网关。&lt;/li&gt;
&lt;li&gt;多租户环境里的 Nginx。&lt;/li&gt;
&lt;li&gt;Kubernetes Ingress Controller。&lt;/li&gt;
&lt;li&gt;Plesk、面板工具、云市场镜像等自带 Nginx 的组件。&lt;/li&gt;
&lt;li&gt;内网但承载关键业务的 Nginx。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;升级后如何验证nginx--treloadworker-状态&#34;&gt;升级后如何验证：nginx -t、reload、worker 状态
&lt;/h2&gt;&lt;p&gt;更新后不要只看包管理器提示成功，还要确认配置、进程和实际二进制都已经切换。先验证配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -t
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;确认没有错误后再平滑加载：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl reload nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果包升级涉及二进制替换，建议确认旧 worker 已退出：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以查看主进程启动时间和二进制路径，确认运行中的服务不是旧进程继续驻留。必要时安排维护窗口重启服务，避免旧 worker 或旧容器继续处理请求。&lt;/p&gt;
&lt;p&gt;容器和 Ingress 环境还要确认新镜像已经真正滚动完成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx rollout status deployment/&amp;lt;deployment-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl -n ingress-nginx get pods -o wide
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;验证重点不是“命令执行过”，而是“线上流量已经由包含修复的 Nginx 进程承载”。&lt;/p&gt;
&lt;h2 id=&#34;不要忽略同批次-nginx-修复&#34;&gt;不要忽略同批次 Nginx 修复
&lt;/h2&gt;&lt;p&gt;nginx.org 在同一天发布的 &lt;code&gt;1.30.1&lt;/code&gt; 和 &lt;code&gt;1.31.0&lt;/code&gt; 不只修复了 &lt;code&gt;CVE-2026-42945&lt;/code&gt;。发布信息还提到 HTTP/2 request injection、SCGI/uWSGI buffer overread、charset module buffer overread、HTTP/3 address spoofing、OCSP resolver use-after-free 等问题。&lt;/p&gt;
&lt;p&gt;这意味着生产环境不应该只针对单个 CVE 做临时规则，而是应该把 Nginx 这一轮安全更新当成一次整体升级来处理。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CVE-2026-42945&lt;/code&gt; 的关键点不是“所有 Nginx 都会被秒控”，而是：一个长期存在于 rewrite 模块里的内存安全漏洞，在特定配置下可被未认证请求触发，最直接后果是 worker 崩溃重启；在 ASLR 关闭等较弱环境下，代码执行风险更高。&lt;/p&gt;
&lt;p&gt;对运维来说，处理顺序很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确认 Nginx 来源和版本。&lt;/li&gt;
&lt;li&gt;查看发行版、F5、nginx.org 或云厂商公告。&lt;/li&gt;
&lt;li&gt;尽快升级到包含修复的版本或发行版安全包。&lt;/li&gt;
&lt;li&gt;排查复杂 rewrite 配置，尤其是 &lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;$2&lt;/code&gt; 和 &lt;code&gt;?&lt;/code&gt; 组合。&lt;/li&gt;
&lt;li&gt;确认 ASLR、权限隔离和服务重载状态。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;标题可以吓人，修复要冷静。先确认暴露面，再升级，再回头清理高风险 rewrite 规则。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-42945&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD: CVE-2026-42945&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nginx.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nginx.org 发布信息&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://my.f5.com/manage/s/article/K000161019&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;F5 Security Advisory K000161019&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://depthfirst.com/nginx-rift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DepthFirst: Nginx Rift&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Dirty Frag、Copy Fail 与 Fragnesia：近期三个 Linux 本地提权漏洞对比</title>
        <link>https://www.knightli.com/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</link>
        <pubDate>Fri, 15 May 2026 13:24:04 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</guid>
        <description>&lt;p&gt;最近 Linux 内核连续出现几个高关注度的本地提权漏洞：Dirty Frag、Copy Fail 和 Fragnesia。它们看起来像一组“同类事件”，因为最终效果都很接近：低权限本地用户可能把权限提升到 root。&lt;/p&gt;
&lt;p&gt;但从运维处置角度看，不能把它们混成一个漏洞。三者的入口模块、触发路径、缓解方式和补丁节奏都不同。更准确的理解是：它们暴露了 Linux 内核在“页缓存、splice、socket buffer、加密路径”这些复杂交界处的共同风险。&lt;/p&gt;
&lt;p&gt;本文只做风险和处置分析，不展开可复现利用步骤。&lt;/p&gt;
&lt;h2 id=&#34;三个漏洞分别是什么&#34;&gt;三个漏洞分别是什么
&lt;/h2&gt;&lt;h3 id=&#34;dirty-fragcve-2026-43284&#34;&gt;Dirty Frag：CVE-2026-43284
&lt;/h3&gt;&lt;p&gt;Dirty Frag 主要指向 Linux 内核网络路径里的页缓存写入问题。公开资料中，它通常和两个问题一起讨论：&lt;code&gt;xfrm-ESP&lt;/code&gt; 侧的 CVE-2026-43284，以及 &lt;code&gt;rxrpc&lt;/code&gt; 侧的 CVE-2026-43500。&lt;/p&gt;
&lt;p&gt;其中 CVE-2026-43284 与 ESP 处理共享 &lt;code&gt;skb&lt;/code&gt; fragment 时的原地解密有关。问题的关键不是攻击者直接修改磁盘文件，而是让内核在不该写的共享页上发生写入，进而影响页缓存里的文件内容。&lt;/p&gt;
&lt;p&gt;运维上最需要记住的是：Dirty Frag 触达的是 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt; 这一组内核模块和网络子系统路径。它和 IPsec、ESP、RxRPC 相关，临时缓解也会围绕这些模块展开。&lt;/p&gt;
&lt;h3 id=&#34;copy-failcve-2026-31431&#34;&gt;Copy Fail：CVE-2026-31431
&lt;/h3&gt;&lt;p&gt;Copy Fail 是 Theori / Xint Code 披露的 Linux 内核本地提权漏洞。它的入口不在 IPsec 网络路径，而在内核用户态加密 API 的 &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt; 相关路径。&lt;/p&gt;
&lt;p&gt;公开说明中提到，它源于 2017 年引入的一处原地优化：某些情况下，内核没有按预期复制数据，而是把页缓存页放进可写目标路径里。攻击者可以借助 &lt;code&gt;AF_ALG&lt;/code&gt; 与 &lt;code&gt;splice()&lt;/code&gt; 组合，对页缓存支持的页面做小范围可控写入。&lt;/p&gt;
&lt;p&gt;它的风险点在于可利用性很强，而且影响面跨多个主流发行版。和 Dirty Frag 不同，Copy Fail 的临时缓解重点是限制或禁用 &lt;code&gt;algif_aead&lt;/code&gt;，以及在容器和 CI 环境中限制 &lt;code&gt;AF_ALG&lt;/code&gt; socket。&lt;/p&gt;
&lt;h3 id=&#34;fragnesiacve-2026-46300&#34;&gt;Fragnesia：CVE-2026-46300
&lt;/h3&gt;&lt;p&gt;Fragnesia 是 V12 Security 披露的另一个 Linux 内核本地提权漏洞，和 Dirty Frag 属于相近攻击面。它不是 Dirty Frag 的同一个 bug，但仍然围绕 IPsec ESP / &lt;code&gt;rxrpc&lt;/code&gt; 相关模块，以及页缓存写入效果展开。&lt;/p&gt;
&lt;p&gt;AlmaLinux 的说明把它定位为同一代码区域里的第三个本地 root 问题。其关键点在于 &lt;code&gt;skb_try_coalesce()&lt;/code&gt; 在合并 socket buffer 片段时没有正确保留共享 fragment 标记，导致后续 XFRM ESP-in-TCP 接收路径可能在外部页缓存页上做原地解密。&lt;/p&gt;
&lt;p&gt;也就是说，Fragnesia 和 Dirty Frag 更接近：两者都绕着 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;、&lt;code&gt;skb&lt;/code&gt; fragment、ESP 解密路径转。它们的临时缓解也高度重叠。&lt;/p&gt;
&lt;h2 id=&#34;相同点为什么都危险&#34;&gt;相同点：为什么都危险
&lt;/h2&gt;&lt;p&gt;这三个漏洞的共同点不是“代码位置完全一样”，而是攻击结果和风险模型非常像。&lt;/p&gt;
&lt;p&gt;第一，它们都是本地提权。攻击者通常需要先在机器上获得普通用户代码执行能力，然后再把权限提升到 root。对单用户桌面来说，它不是远程一键入侵；但对多用户服务器、CI runner、容器宿主机、共享开发机和暴露 SSH 的 VPS 来说，低权限入口并不罕见。&lt;/p&gt;
&lt;p&gt;第二，它们都和页缓存写入有关。攻击者不一定永久改写磁盘文件，而是影响内存中的页缓存副本。这会让传统文件完整性检查变得不够可靠：磁盘 hash 可能正常，但执行路径读到的页缓存内容已经被污染。&lt;/p&gt;
&lt;p&gt;第三，它们都偏向确定性逻辑漏洞，而不是传统意义上很吃时序的竞争条件。公开资料多次强调这类漏洞不依赖赢得 race condition。对防守方来说，这意味着“利用成功率”不能按老经验低估。&lt;/p&gt;
&lt;p&gt;第四，它们都放大了容器和自动化执行环境的风险。容器内的低权限代码、CI 任务、构建脚本、第三方插件，一旦能触达宿主内核相关接口，就可能把漏洞从“本地问题”变成“平台问题”。&lt;/p&gt;
&lt;h2 id=&#34;不同点不要用一个补丁思路套全部&#34;&gt;不同点：不要用一个补丁思路套全部
&lt;/h2&gt;&lt;p&gt;三者最大的区别在入口模块。&lt;/p&gt;
&lt;p&gt;Copy Fail 的关键入口是 &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt;，属于内核用户态加密 API。它的临时防护重点是禁用或限制 &lt;code&gt;algif_aead&lt;/code&gt;，以及用 seccomp 阻断容器里创建 &lt;code&gt;AF_ALG&lt;/code&gt; socket。&lt;/p&gt;
&lt;p&gt;Dirty Frag 的关键入口在 &lt;code&gt;xfrm-ESP&lt;/code&gt; 和 &lt;code&gt;rxrpc&lt;/code&gt;。它更接近网络协议和 socket buffer 处理路径，临时防护通常会考虑禁用 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;。但这可能影响 IPsec、VPN、隧道或相关网络能力。&lt;/p&gt;
&lt;p&gt;Fragnesia 的入口也在 Dirty Frag 相近区域，但具体问题落在 &lt;code&gt;skb_try_coalesce()&lt;/code&gt; 没有保留共享 fragment 标记。它更像是 Dirty Frag 风险面里的另一个分支，而不是 Copy Fail 的加密 API 问题。&lt;/p&gt;
&lt;p&gt;所以，不能因为已经处理了 Copy Fail，就认为 Dirty Frag 和 Fragnesia 也被覆盖；也不能因为禁用了 &lt;code&gt;esp4&lt;/code&gt; / &lt;code&gt;esp6&lt;/code&gt;，就认为 Copy Fail 自动消失。它们需要分别确认补丁状态和缓解策略。&lt;/p&gt;
&lt;h2 id=&#34;影响范围该怎么判断&#34;&gt;影响范围该怎么判断
&lt;/h2&gt;&lt;p&gt;判断这类漏洞是否受影响，不要只看发行版名字，也不要只看内核大版本号。发行版会回合补丁，云厂商会维护自己的内核分支，企业发行版还可能有额外 backport。&lt;/p&gt;
&lt;p&gt;更稳妥的顺序是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先看发行版安全公告和内核包 changelog。&lt;/li&gt;
&lt;li&gt;再核对 CVE 是否已被当前内核包修复。&lt;/li&gt;
&lt;li&gt;对云主机、容器宿主机和 CI 节点，额外关注云厂商或平台方公告。&lt;/li&gt;
&lt;li&gt;对临时缓解，确认业务是否依赖对应模块。&lt;/li&gt;
&lt;li&gt;完成内核升级后安排重启，确保实际运行内核已经切换。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这一步最容易踩坑的是“包已经更新，但机器还没重启”。内核漏洞不是普通用户态服务升级，安装新包之后，旧内核仍可能继续运行。&lt;/p&gt;
&lt;h2 id=&#34;运维优先级&#34;&gt;运维优先级
&lt;/h2&gt;&lt;p&gt;这些漏洞最该优先处理的机器，不是“所有 Linux 平均排队”，而是低权限代码最容易出现的地方。&lt;/p&gt;
&lt;p&gt;优先级最高的环境包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多用户登录服务器&lt;/li&gt;
&lt;li&gt;CI / CD runner&lt;/li&gt;
&lt;li&gt;构建机和制品打包机&lt;/li&gt;
&lt;li&gt;容器宿主机和 Kubernetes 节点&lt;/li&gt;
&lt;li&gt;共享开发机&lt;/li&gt;
&lt;li&gt;暴露 SSH 的云主机和 VPS&lt;/li&gt;
&lt;li&gt;运行第三方脚本、插件、任务队列的平台&lt;/li&gt;
&lt;li&gt;有 Web 漏洞、弱口令或历史入侵痕迹的机器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相对封闭、单用户、没有外部代码执行入口的机器，风险仍然存在，但处置顺序可以排在后面。&lt;/p&gt;
&lt;h2 id=&#34;临时缓解应该怎么理解&#34;&gt;临时缓解应该怎么理解
&lt;/h2&gt;&lt;p&gt;临时缓解不是补丁替代品。它的价值是帮你在无法立刻重启或等待发行版补丁时降低暴露面。&lt;/p&gt;
&lt;p&gt;对 Copy Fail，重点关注 &lt;code&gt;algif_aead&lt;/code&gt; 和 &lt;code&gt;AF_ALG&lt;/code&gt;。如果业务没有使用内核 AF_ALG 加密接口，可以评估禁用相关模块；容器环境则应优先检查 seccomp 策略，避免不受信任工作负载随意创建对应 socket。&lt;/p&gt;
&lt;p&gt;对 Dirty Frag 和 Fragnesia，重点关注 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;。如果系统不依赖 IPsec ESP、相关 VPN、隧道或 RxRPC，可以评估临时禁用。但生产环境不要盲目执行，因为这些模块可能影响真实网络业务。&lt;/p&gt;
&lt;p&gt;最终仍然要回到内核更新。临时缓解只能减少攻击面，不能证明系统已经彻底安全。&lt;/p&gt;
&lt;h2 id=&#34;这三个漏洞说明了什么&#34;&gt;这三个漏洞说明了什么
&lt;/h2&gt;&lt;p&gt;这组漏洞真正值得警惕的地方，不只是 CVE 数量，而是它们都集中在内核高复杂度路径：零拷贝、splice、socket buffer、页缓存、加密接口、协议栈优化。&lt;/p&gt;
&lt;p&gt;这些路径的共同特点是性能收益很大，但所有权边界也更难维护。一个 fragment 是否共享、一个页面是否还能原地写、一个优化是否真的只是减少复制，都会变成安全边界的一部分。&lt;/p&gt;
&lt;p&gt;对安全团队和运维团队来说，结论很实际：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地提权漏洞要按“已有低权限入口会被放大”处理。&lt;/li&gt;
&lt;li&gt;容器不是内核漏洞的天然隔离边界。&lt;/li&gt;
&lt;li&gt;文件完整性检查不能只看磁盘内容。&lt;/li&gt;
&lt;li&gt;CI、构建机、插件平台要当成高优先级资产。&lt;/li&gt;
&lt;li&gt;内核补丁需要验证“已安装”和“已运行”两个状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Dirty Frag、Copy Fail 和 Fragnesia 都是近期 Linux 本地提权风险里的高优先级事件，但它们不是同一个漏洞的三个名字。&lt;/p&gt;
&lt;p&gt;Copy Fail 走的是 &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt; 加密接口路径；Dirty Frag 走的是 &lt;code&gt;xfrm-ESP&lt;/code&gt; 与 &lt;code&gt;rxrpc&lt;/code&gt; 相关路径；Fragnesia 则在 Dirty Frag 相近攻击面上，通过 &lt;code&gt;skb&lt;/code&gt; fragment 标记处理问题再次触发页缓存写入风险。&lt;/p&gt;
&lt;p&gt;处置上，最稳妥的做法是：按发行版公告升级内核并重启；对无法立即升级的系统，分别按漏洞入口评估临时禁用模块或收紧 seccomp；对多租户、CI、容器宿主机和共享开发环境优先处理。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Theori Copy Fail 说明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/theori-io/copy-fail-CVE-2026-31431&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/theori-io/copy-fail-CVE-2026-31431&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CERT-EU Copy Fail 安全公告：&lt;a class=&#34;link&#34; href=&#34;https://cert.europa.eu/publications/security-advisories/2026-005/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cert.europa.eu/publications/security-advisories/2026-005/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Dirty Frag 说明：&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-07-dirty-frag/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-07-dirty-frag/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Fragnesia 说明：&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;V12 Security Fragnesia PoC 说明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/tree/main/fragnesia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/tree/main/fragnesia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Fragnesia (CVE-2026-46300)：Linux 内核本地提权漏洞影响与缓解</title>
        <link>https://www.knightli.com/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</link>
        <pubDate>Fri, 15 May 2026 13:18:01 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</guid>
        <description>&lt;p&gt;Linux 内核最近又曝出一个和 Dirty Frag 同一类攻击面相关的本地提权漏洞：Fragnesia (CVE-2026-46300)。&lt;/p&gt;
&lt;p&gt;根据 V12 Security 的披露，Fragnesia 是一个 Linux 本地提权漏洞。攻击者不需要宿主机已有高权限，只要能在本地执行代码，就可能借助内核 XFRM ESP-in-TCP 子系统中的逻辑缺陷，把只读文件的页缓存内容按字节改写，最终触发 root shell。&lt;/p&gt;
&lt;p&gt;原始资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;V12 Security PoC 说明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这篇不展开可复现利用步骤，只整理运维侧需要知道的风险点和处置思路。&lt;/p&gt;
&lt;h2 id=&#34;它和-dirty-frag-是什么关系&#34;&gt;它和 Dirty Frag 是什么关系
&lt;/h2&gt;&lt;p&gt;V12 Security 在说明中把 Fragnesia 归到 Dirty Frag 漏洞类别里。它不是 Dirty Frag 本身的同一个 bug，而是同一攻击面上的另一个问题：Linux 内核的 XFRM ESP-in-TCP。&lt;/p&gt;
&lt;p&gt;XFRM 是 Linux 内核里处理 IPsec 的框架。ESP-in-TCP 则和通过 TCP 承载 ESP 加密流量有关。Fragnesia 的问题出在共享页碎片和 socket buffer 合并过程中的逻辑处理：某些情况下，内核会“忘记”某个 fragment 仍然是共享状态，从而留下可控写入空间。&lt;/p&gt;
&lt;p&gt;这类问题让人联想到 Dirty Pipe / Dirty Frag 这一类页缓存写入漏洞。共同点不是具体代码完全相同，而是都把攻击效果落到了页缓存里的只读文件副本上。&lt;/p&gt;
&lt;h2 id=&#34;风险为什么高&#34;&gt;风险为什么高
&lt;/h2&gt;&lt;p&gt;Fragnesia 的危险之处有三个。&lt;/p&gt;
&lt;p&gt;第一，它是本地提权。只要攻击者已经能在系统上运行普通用户代码，就可能把权限提升到 root。对多用户服务器、容器宿主机、CI runner、共享开发机、VPS 和暴露 Shell 的环境来说，这类漏洞比普通桌面更敏感。&lt;/p&gt;
&lt;p&gt;第二，它不依赖传统竞争条件。V12 的说明中提到，该漏洞通过构造 ESP-in-TCP 处理流程，让内核把加密流处理到已经 splice 进 socket buffer 的文件页上，进而按字节影响页缓存内容。这意味着风险不只是“理论上可能”，而是研究团队已经验证了稳定利用路径。&lt;/p&gt;
&lt;p&gt;第三，它改的是页缓存，不是磁盘文件。公开说明里的示例目标是 &lt;code&gt;/usr/bin/su&lt;/code&gt;。利用成功后，磁盘上的文件并不会被永久改写，改动存在于内存页缓存中。很多只检查磁盘文件 hash 或完整性的巡检流程，可能看不出异常。&lt;/p&gt;
&lt;p&gt;这也是它对管理员麻烦的地方：系统看起来文件没变，但一旦执行被污染页缓存里的目标二进制，就可能触发提权效果。&lt;/p&gt;
&lt;h2 id=&#34;已知影响范围&#34;&gt;已知影响范围
&lt;/h2&gt;&lt;p&gt;V12 Security 的说明称，受 Dirty Frag 影响且没有应用 2026 年 5 月 13 日相关补丁的内核，也会受 Fragnesia 影响。公开验证环境包括 Ubuntu 22.04、Ubuntu 24.04，以及 &lt;code&gt;6.8.0-111-generic&lt;/code&gt; 这类内核版本。&lt;/p&gt;
&lt;p&gt;这里要注意两个点。&lt;/p&gt;
&lt;p&gt;第一，不要只看发行版大版本。Ubuntu 22.04 / 24.04 是否受影响，最终取决于内核补丁状态，而不是发行版名字。&lt;/p&gt;
&lt;p&gt;第二，不要只看有没有默认 AppArmor 限制。Ubuntu 对非特权用户命名空间的 AppArmor 限制可以提高门槛，但披露方明确把它视为额外绕过问题，不是漏洞本体的根治方式。&lt;/p&gt;
&lt;p&gt;真正可靠的判断方式，仍然是查看发行版安全公告和内核包更新。&lt;/p&gt;
&lt;h2 id=&#34;临时缓解思路&#34;&gt;临时缓解思路
&lt;/h2&gt;&lt;p&gt;如果系统暂时不能立刻升级内核，可以先评估是否依赖相关协议模块。&lt;/p&gt;
&lt;p&gt;V12 给出的缓解方向与 Dirty Frag 相同：如果系统不依赖 IPsec ESP 或 RxRPC，可以禁用相关模块，例如 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;。这类操作会影响相关网络能力，生产环境不要盲目执行，应该先确认业务是否使用 IPsec、VPN、隧道或相关内核功能。&lt;/p&gt;
&lt;p&gt;更稳妥的处置顺序是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确认发行版是否已经发布内核安全更新。&lt;/li&gt;
&lt;li&gt;优先安装内核补丁并安排重启。&lt;/li&gt;
&lt;li&gt;如果无法立即升级，再评估临时禁用相关模块。&lt;/li&gt;
&lt;li&gt;对多用户系统和 CI / 构建环境优先处理。&lt;/li&gt;
&lt;li&gt;检查是否开放非必要本地账号、Shell、容器逃逸面和低权限执行入口。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里不要把禁用模块当作最终修复。它更像临时降低暴露面。&lt;/p&gt;
&lt;h2 id=&#34;如果怀疑已经被利用&#34;&gt;如果怀疑已经被利用
&lt;/h2&gt;&lt;p&gt;Fragnesia 的一个特点是页缓存污染。V12 在说明中强调，利用后目标文件在页缓存中的副本可能含有注入内容，后续执行仍可能触发异常行为，直到页面被驱逐或系统重启。&lt;/p&gt;
&lt;p&gt;如果怀疑系统已经被利用，至少要做几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尽快保留现场日志和审计记录。&lt;/li&gt;
&lt;li&gt;检查近期异常本地登录、低权限用户活动、可疑进程和 root shell 痕迹。&lt;/li&gt;
&lt;li&gt;清理相关页缓存或直接重启。&lt;/li&gt;
&lt;li&gt;升级到已修复内核。&lt;/li&gt;
&lt;li&gt;对关键二进制做完整性检查，但不要只依赖磁盘 hash。&lt;/li&gt;
&lt;li&gt;轮换可能已经暴露的凭据和密钥。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果是生产服务器，更建议把它当作一次潜在本地提权事件处理，而不是只当作普通补丁升级。&lt;/p&gt;
&lt;h2 id=&#34;运维侧该优先看哪些机器&#34;&gt;运维侧该优先看哪些机器
&lt;/h2&gt;&lt;p&gt;这类漏洞优先级最高的不是所有 Linux 机器平均处理，而是先看攻击者最容易拿到低权限代码执行的地方。&lt;/p&gt;
&lt;p&gt;优先级较高的环境包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多用户登录服务器&lt;/li&gt;
&lt;li&gt;CI / CD runner&lt;/li&gt;
&lt;li&gt;构建机&lt;/li&gt;
&lt;li&gt;共享开发机&lt;/li&gt;
&lt;li&gt;容器宿主机&lt;/li&gt;
&lt;li&gt;VPS 和云主机&lt;/li&gt;
&lt;li&gt;暴露 SSH 的边缘节点&lt;/li&gt;
&lt;li&gt;运行第三方脚本或插件的平台&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相对封闭、单用户、没有外部代码执行入口的机器，风险仍然存在，但紧急程度可以低一些。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Fragnesia 值得关注，不是因为它名字新，而是因为它再次把 Linux 本地提权问题拉回到页缓存和内核网络子系统这一类复杂交界处。&lt;/p&gt;
&lt;p&gt;对管理员来说，最重要的不是研究利用细节，而是确认内核补丁状态、评估是否依赖 ESP / RxRPC、对高暴露机器优先升级，并理解“磁盘文件没变”不等于“系统没有被影响”。&lt;/p&gt;
&lt;p&gt;如果系统受影响，最终答案仍然是尽快安装发行版提供的内核更新。临时禁用模块只能算过渡措施，不能替代补丁。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
