<?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://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>Fri, 29 May 2026 15:25:32 +0800</lastBuildDate><atom:link href="https://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>Chrome Enterprise Premium 接入 MCP：让 AI agent 参与浏览器安全管理</title>
        <link>https://knightli.com/2026/05/29/chrome-enterprise-premium-mcp-server-ai-agents/</link>
        <pubDate>Fri, 29 May 2026 15:25:32 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/29/chrome-enterprise-premium-mcp-server-ai-agents/</guid>
        <description>&lt;p&gt;Google Security 发布了 Chrome Enterprise Premium MCP Server，把 Chrome Enterprise Premium 的部分安全管理能力开放给 MCP 兼容的 AI agent。它是一个开源 MCP Server，目标是让企业 IT 和安全团队可以通过 Gemini CLI 等工具，以自然语言方式查询、分析和处理 Chrome 浏览器安全管理任务。&lt;/p&gt;
&lt;p&gt;这不是“浏览器里加一个聊天机器人”，而是把企业浏览器管理后台接到 agent 工具链里。对大公司来说，浏览器已经是员工访问 SaaS、内部系统和敏感数据的主要入口。让 AI agent 能读懂策略、日志和安全状态，意义比表面看起来更大。&lt;/p&gt;
&lt;h2 id=&#34;它能做什么&#34;&gt;它能做什么
&lt;/h2&gt;&lt;p&gt;根据 Google 的介绍，Chrome Enterprise Premium MCP Server 可以帮助团队完成几类工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查询 Chrome Enterprise Premium 环境中的配置与安全状态&lt;/li&gt;
&lt;li&gt;检查企业浏览器管理健康状况&lt;/li&gt;
&lt;li&gt;分析安全日志和事件线索&lt;/li&gt;
&lt;li&gt;协助配置或检查 DLP 相关规则&lt;/li&gt;
&lt;li&gt;用自然语言生成调查和处置建议&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些能力并不意味着 agent 可以随意替管理员做决定。更准确地说，它把原本分散在管理控制台、文档和日志系统里的信息，以工具接口暴露给 AI 助手，让排查和治理流程更连贯。&lt;/p&gt;
&lt;h2 id=&#34;为什么浏览器安全适合-agent&#34;&gt;为什么浏览器安全适合 agent
&lt;/h2&gt;&lt;p&gt;浏览器安全管理天然是一个多上下文问题。一次异常访问可能牵涉设备状态、用户身份、浏览器版本、扩展程序、DLP 策略、访问网站、下载行为和日志事件。&lt;/p&gt;
&lt;p&gt;人工处理时，安全人员需要在多个页面之间切换，还要记住哪些策略会影响哪些用户。AI agent 如果能通过 MCP 读取这些状态，就可以承担初步汇总和排查工作：&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;给出下一步调查建议。&lt;/li&gt;
&lt;li&gt;帮管理员形成可执行的策略调整草案。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这类任务不是单纯生成文本，而是围绕一组真实系统状态反复查询、判断和收敛。MCP 正适合承载这种工作。&lt;/p&gt;
&lt;h2 id=&#34;和-gemini-cli-的关系&#34;&gt;和 Gemini CLI 的关系
&lt;/h2&gt;&lt;p&gt;Google 在文章中提到可以通过 Gemini CLI 使用这个 MCP Server。Gemini CLI 本身是面向开发者和技术用户的命令行 AI 工具，而 MCP Server 则让它获得访问 Chrome Enterprise Premium 管理能力的接口。&lt;/p&gt;
&lt;p&gt;这个组合很有代表性：CLI 提供交互入口，MCP 提供工具协议，后台服务提供真实数据和操作能力。最终用户看到的是一句自然语言命令，但背后其实是 agent 在调用企业安全系统。&lt;/p&gt;
&lt;p&gt;这种形态未来可能会越来越常见。AI 工具不再只是“帮我写脚本”，而是能通过受控接口参与云平台、安全平台、SaaS 管理和内部运维。&lt;/p&gt;
&lt;h2 id=&#34;企业采用时要注意什么&#34;&gt;企业采用时要注意什么
&lt;/h2&gt;&lt;p&gt;安全管理类 MCP Server 的价值很明显，但风险也要认真处理。&lt;/p&gt;
&lt;p&gt;首先是权限边界。agent 能查什么、能改什么、是否需要人工确认，都必须清楚限制。其次是审计。安全平台中的自动化建议和操作应当留下记录，方便回溯。最后是提示词与数据泄露风险，企业需要确认哪些日志、策略和用户信息会进入模型上下文。&lt;/p&gt;
&lt;p&gt;更稳妥的做法是先把它用于只读场景，比如健康检查、日志摘要、策略解释和排查建议。等团队熟悉后，再逐步开放需要审批的配置变更能力。&lt;/p&gt;
&lt;h2 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h2&gt;&lt;p&gt;Chrome Enterprise Premium MCP Server 是 MCP 落地企业安全场景的一个重要信号。&lt;/p&gt;
&lt;p&gt;过去很多 MCP 示例集中在开发者文档、代码仓库或本地工具。Google 把它放到浏览器安全管理里，说明 MCP 正在进入更严肃的企业运维和安全流程。这里的关键不是让 AI“更会聊天”，而是让 AI agent 通过受控工具接口参与真实系统管理。&lt;/p&gt;
&lt;p&gt;如果企业已经使用 Chrome Enterprise Premium，这个 MCP Server 值得关注。它短期内最适合做安全状态查询、日志调查和策略理解；长期看，则可能成为企业安全平台连接 AI agent 的一种标准方式。&lt;/p&gt;
&lt;p&gt;原文链接：&lt;a class=&#34;link&#34; href=&#34;https://blog.google/security/bringing-ai-agents-to-chrome-enterprise-security-management/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bringing AI agents to Chrome Enterprise security management&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>poc-lab 补丁验证：确认你的系统中近期高危漏洞是否已修复，覆盖 Chrome CSSFontFeatureValuesMap UAF、NGINX Rift、Dirty Frag、Fragnesia</title>
        <link>https://knightli.com/2026/05/22/poc-lab-recent-cve-poc-reproduction-scripts/</link>
        <pubDate>Fri, 22 May 2026 23:13:24 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/22/poc-lab-recent-cve-poc-reproduction-scripts/</guid>
        <description>&lt;p&gt;&lt;code&gt;poc-lab&lt;/code&gt; 是一个面向近期高严重性漏洞的 PoC 与复现脚本仓库，重点收集新披露、有影响力的 CVE 复现材料。项目覆盖范围包括 Linux 内核、Windows、macOS、容器、服务组件和浏览器相关漏洞。&lt;/p&gt;
&lt;p&gt;从仓库定位看，它更像是一个安全研究资料库，而不是面向普通用户的一键工具合集。每个漏洞目录通常会包含 PoC 脚本、构建文件和说明文档，用来帮助研究人员理解漏洞影响、复现条件和参考资料。&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;CVE-2026-2441&lt;/code&gt;：Chrome &lt;code&gt;CSSFontFeatureValuesMap&lt;/code&gt; use-after-free，简称 Chrome CSSFontFeatureValuesMap UAF。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-27623&lt;/code&gt;：Pre-Authentication Denial of Service from malformed RESP request，即畸形 RESP 请求导致的预认证拒绝服务漏洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-31429&lt;/code&gt;：Slab Cross-Cache，Linux 内核 slab 跨缓存利用方向漏洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-31431&lt;/code&gt;：Copy Fail，Linux 内核相关漏洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-31635&lt;/code&gt;：DirtyDecrypt，系统安全边界相关漏洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-42945&lt;/code&gt;：NGINX Rift，NGINX 相关高危漏洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43284&lt;/code&gt;：Dirty Frag，Linux 内核相关漏洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43494&lt;/code&gt;：PinTheft，权限或凭据安全边界相关漏洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43500&lt;/code&gt;：Dirty Frag，Linux 内核相关漏洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-46300&lt;/code&gt;：Fragnesia，Linux 内核相关漏洞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-46333&lt;/code&gt;：SSH Keysign pwn，SSH keysign 安全边界相关漏洞。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些名称可以看出，项目关注的不只是单一平台，而是横跨浏览器、Linux 内核、服务端组件和系统安全边界。对做漏洞分析、补丁验证、检测规则编写和安全课程实验的人来说，这类资料有一定参考价值。&lt;/p&gt;
&lt;h2 id=&#34;目录结构&#34;&gt;目录结构
&lt;/h2&gt;&lt;p&gt;项目 README 中说明，每个漏洞目录会尽量保持一致结构。常见文件包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;exploit.py&lt;/code&gt; 或 &lt;code&gt;exploit.sh&lt;/code&gt;：PoC 脚本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;README.md&lt;/code&gt;：漏洞信息、影响版本、复现步骤和参考资料&lt;/li&gt;
&lt;li&gt;&lt;code&gt;build&lt;/code&gt; 或相关构建文件：用于编译或准备复现环境&lt;/li&gt;
&lt;/ul&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;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;poc-lab/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CVE-2026-XXXXX/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── exploit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── VULN-NAME/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── exploit.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;如果漏洞已经分配 CVE 编号，目录会优先使用 CVE 命名；如果还没有 CVE，则可能使用公开漏洞名称。&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;/li&gt;
&lt;li&gt;企业安全团队验证补丁是否生效。&lt;/li&gt;
&lt;li&gt;检测工程师编写 IDS、EDR、WAF 或日志检测规则。&lt;/li&gt;
&lt;li&gt;安全课程或内部培训中构建隔离实验环境。&lt;/li&gt;
&lt;li&gt;研究人员对比不同漏洞的利用前提和防护思路。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不适合直接用于生产环境扫描，也不应该用于未授权系统。PoC 的价值在于帮助理解风险和验证防护，而不是扩大攻击面。&lt;/p&gt;
&lt;h2 id=&#34;使用时需要注意什么&#34;&gt;使用时需要注意什么
&lt;/h2&gt;&lt;p&gt;第一，必须在隔离环境中测试。漏洞复现可能触发崩溃、权限变化、文件损坏或服务不可用，不应在办公机、生产服务器或第三方系统上直接运行。&lt;/p&gt;
&lt;p&gt;第二，要先阅读每个漏洞目录内的 &lt;code&gt;README.md&lt;/code&gt;。不同 PoC 的依赖、目标版本、触发条件和风险不同，只看根目录说明远远不够。&lt;/p&gt;
&lt;p&gt;第三，要确认授权边界。即便只是运行公开 PoC，只要目标系统不属于自己或没有明确授权，就可能带来法律和合规风险。&lt;/p&gt;
&lt;p&gt;第四，复现完成后应回到防护层面。包括确认补丁版本、补充检测规则、检查暴露面、更新资产清单和沉淀应急流程。&lt;/p&gt;
&lt;h2 id=&#34;为什么这类仓库值得关注&#34;&gt;为什么这类仓库值得关注
&lt;/h2&gt;&lt;p&gt;近年来，高危漏洞从披露到出现公开利用细节的时间越来越短。对防守方来说，只有安全公告和 CVE 描述通常不够，还需要理解漏洞在真实环境中的触发条件、利用限制和检测信号。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;poc-lab&lt;/code&gt; 这类仓库的意义在于，把分散的高危漏洞复现材料按目录整理起来，让研究者能更快完成风险验证。它不替代官方公告、厂商补丁和安全基线，但可以作为补丁验证和检测工程的补充资料。&lt;/p&gt;
&lt;p&gt;不过也要看到风险：公开 PoC 会降低复现门槛。如果组织内部没有及时补丁管理和资产梳理能力，公开复现材料可能会放大暴露窗口。因此，对企业安全团队来说，关注这类项目的同时，更重要的是建立快速评估和修复流程。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;poc-lab&lt;/code&gt; 是一个近期高危漏洞 PoC 与复现脚本集合，覆盖 Linux 内核、浏览器、服务组件和系统安全相关问题。它适合安全研究、补丁验证和检测规则开发，但必须放在授权、隔离和负责任披露的边界内使用。&lt;/p&gt;
&lt;p&gt;对普通读者来说，关注这类项目的重点不是“怎么运行 PoC”，而是理解一个事实：高危漏洞公开后的验证和利用节奏正在加快，安全团队需要更快完成资产识别、补丁评估、检测补充和风险闭环。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub 项目：https://github.com/Unclecheng-li/poc-lab/tree/main&lt;/li&gt;
&lt;li&gt;中文 README：https://github.com/Unclecheng-li/poc-lab/blob/main/README.zh-CN.md&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>CVE-2026-43494 / PinTheft：Linux RDS 与 io_uring 组合出的本地提权风险</title>
        <link>https://knightli.com/2026/05/22/linux-kernel-cve-2026-43494-pintheft/</link>
        <pubDate>Fri, 22 May 2026 15:16:59 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/22/linux-kernel-cve-2026-43494-pintheft/</guid>
        <description>&lt;p&gt;&lt;code&gt;CVE-2026-43494&lt;/code&gt; 是一个 Linux 内核本地权限提升风险，外界也用 &lt;code&gt;PinTheft&lt;/code&gt; 来称呼相关利用链。它的关键不在于远程入口，而在于本地低权限用户能否同时碰到 RDS zerocopy、&lt;code&gt;io_uring&lt;/code&gt; fixed buffer、可读 SUID-root 程序和合适的内核版本。&lt;/p&gt;
&lt;p&gt;需要先说明一个编号细节：&lt;code&gt;Unclecheng-li/poc-lab&lt;/code&gt; 仓库目录名写的是 &lt;code&gt;CVE-2026-43494 PinTheft&lt;/code&gt;，README 标题里又写了 &lt;code&gt;QVD-2026-27616 — PinTheft&lt;/code&gt;。从公开 CVE 条目和第三方通告看，&lt;code&gt;CVE-2026-43494&lt;/code&gt; 指向的是 Linux kernel RDS zerocopy 中 &lt;code&gt;op_nents&lt;/code&gt; 未正确重置引发的 double-free / 引用计数异常问题；&lt;code&gt;QVD-2026-27616&lt;/code&gt; 更像是奇安信风险通告编号。实际排查时建议同时记录这两个标识，但以发行版安全公告和内核补丁状态为准。&lt;/p&gt;
&lt;h2 id=&#34;漏洞核心是什么&#34;&gt;漏洞核心是什么
&lt;/h2&gt;&lt;p&gt;这个问题出现在 Linux RDS，也就是 Reliable Datagram Sockets 的 zerocopy 发送路径中。公开描述里的关键函数是：&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rds_message_zcopy_from_user()
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rds_message_purge()
&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;iov_iter_get_pages2()&lt;/code&gt; 在 &lt;code&gt;rds_message_zcopy_from_user()&lt;/code&gt; 中失败时，已经 pin 住的页面会先被错误路径释放；但相关 &lt;code&gt;op_nents&lt;/code&gt; 信息没有被正确清零，后续 &lt;code&gt;rds_message_purge()&lt;/code&gt; 仍可能按残留条目再释放一次。结果就是同一批页面引用被多减，形成可被利用的引用计数错误。&lt;/p&gt;
&lt;p&gt;单看 RDS bug，它是内核内存管理里的错误路径问题。PinTheft 的危险之处在于利用链把它和 &lt;code&gt;io_uring&lt;/code&gt; 固定缓冲区机制连了起来：&lt;code&gt;io_uring&lt;/code&gt; 仍保存着旧的 &lt;code&gt;struct page *&lt;/code&gt;，而页面本身已经被释放并重新分配给其他用途。PoC 进一步把这个状态引向 SUID-root 程序的 page cache 覆写，最终达到本地提权。&lt;/p&gt;
&lt;h2 id=&#34;为什么叫-pintheft&#34;&gt;为什么叫 PinTheft
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;io_uring REGISTER_BUFFERS&lt;/code&gt; 会固定用户页。对普通页面来说，&lt;code&gt;FOLL_PIN&lt;/code&gt; 并不只是简单增加一个引用，而是通过较大的 bias 增加 page refcount。公开 PoC 中使用了 &lt;code&gt;GUP_PIN_COUNTING_BIAS = 1024&lt;/code&gt; 这个概念。&lt;/p&gt;
&lt;p&gt;PinTheft 这个名字的意思就是：攻击链通过 RDS zerocopy 的失败路径，一次次“偷走”这些 pin 引用。等引用被耗掉后，&lt;code&gt;io_uring&lt;/code&gt; 仍以为自己持有有效页面，但该物理页已经可以被释放并被 page cache 重新占用。&lt;/p&gt;
&lt;p&gt;这类漏洞容易被误读成“直接改了磁盘上的 &lt;code&gt;/usr/bin/su&lt;/code&gt;”。更准确的说法是：利用链尝试覆写的是内存中的 page cache。文件本体不一定被写回磁盘，但内核执行该 SUID 程序时可能从被污染的页缓存取指令，从而运行攻击载荷。&lt;/p&gt;
&lt;h2 id=&#34;触发条件并不宽&#34;&gt;触发条件并不宽
&lt;/h2&gt;&lt;p&gt;这不是一个“任意 Linux 服务器都能远程打”的漏洞。公开信息显示，利用链至少依赖这些条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内核启用了 &lt;code&gt;CONFIG_RDS&lt;/code&gt; 和 &lt;code&gt;CONFIG_RDS_TCP&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;系统启用了 &lt;code&gt;CONFIG_IO_URING&lt;/code&gt;，且 &lt;code&gt;kernel.io_uring_disabled=0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rds&lt;/code&gt; / &lt;code&gt;rds_tcp&lt;/code&gt; 模块已经加载，或低权限用户可以触发自动加载。&lt;/li&gt;
&lt;li&gt;本地存在可读的 SUID-root 二进制程序，例如 &lt;code&gt;/usr/bin/su&lt;/code&gt;、&lt;code&gt;/usr/bin/passwd&lt;/code&gt;、&lt;code&gt;/usr/bin/pkexec&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;公开 PoC 还依赖较新的 &lt;code&gt;IORING_REGISTER_CLONE_BUFFERS&lt;/code&gt; API，CloudLinux 的分析提到公共 PoC 更偏向 kernel 6.13 及以上形态。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要其中一环不成立，公开链路就会断掉。比如很多 RHEL 系发行版默认不编译 RDS，Ubuntu 旧内核可能缺少 PoC 需要的 &lt;code&gt;io_uring&lt;/code&gt; clone buffer API，部分环境也会限制非特权用户自动加载 RDS 模块。&lt;/p&gt;
&lt;h2 id=&#34;一分钟自查&#34;&gt;一分钟自查
&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;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;zgrep -E &lt;span class=&#34;s2&#34;&gt;&amp;#34;CONFIG_(RDS|RDS_TCP|IO_URING)&amp;#34;&lt;/span&gt; /proc/config.gz 2&amp;gt;/dev/null &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; grep -E &lt;span class=&#34;s2&#34;&gt;&amp;#34;CONFIG_(RDS|RDS_TCP|IO_URING)&amp;#34;&lt;/span&gt; /boot/config-&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;uname -r&lt;span class=&#34;k&#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;io_uring&lt;/code&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;cat /proc/sys/kernel/io_uring_disabled 2&amp;gt;/dev/null
&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;ul&gt;
&lt;li&gt;&lt;code&gt;0&lt;/code&gt;：允许使用，风险面最大。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1&lt;/code&gt;：限制非特权用户使用，具体行为看内核版本和发行版策略。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2&lt;/code&gt;：禁用 &lt;code&gt;io_uring&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;检查 RDS 模块是否存在、是否可加载：&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;lsmod &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -E &lt;span class=&#34;s2&#34;&gt;&amp;#34;^rds|^rds_tcp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;modprobe -n -v rds_tcp 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -3
&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;CONFIG_RDS&lt;/code&gt; 是 &lt;code&gt;not set&lt;/code&gt;，或者系统根本没有 &lt;code&gt;rds_tcp&lt;/code&gt; 模块，通常就无法走到这个 bug。反过来，如果 RDS 可用、&lt;code&gt;io_uring&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;容器宿主机，尤其是允许不可信本地用户或较宽松容器逃逸面的环境。&lt;/li&gt;
&lt;li&gt;开启较新 mainline / rolling kernel 的桌面或服务器，例如 Arch 一类滚动发行版。&lt;/li&gt;
&lt;li&gt;HPC、Oracle RAC 或其他可能真实使用 RDS 的场景。&lt;/li&gt;
&lt;li&gt;允许非特权用户运行大量本地代码的 CI worker、构建机和实验环境。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;普通 Web 服务如果只有受控服务账号运行应用，并且 RDS 未启用，实际风险会低很多。但“低很多”不等于不用处理：内核本地提权的典型影响是攻击者先通过 Web、SSH、CI、容器或应用漏洞拿到低权限，再用本地提权扩大控制面。&lt;/p&gt;
&lt;h2 id=&#34;临时缓解建议&#34;&gt;临时缓解建议
&lt;/h2&gt;&lt;p&gt;正式修复仍应以发行版内核更新为准。补丁、回溯版本和受影响范围需要看 Debian、Ubuntu、RHEL、AlmaLinux、Rocky Linux、SUSE、Arch、云厂商或容器基础镜像各自的安全公告，不要只按上游版本号判断。&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;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;span class=&#34;lnt&#34;&gt;5
&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;c1&#34;&gt;# 如果业务不依赖 RDS，可阻止相关模块加载&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sh -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;printf &amp;#39;install rds /bin/false\ninstall rds_tcp /bin/false\ninstall rds_rdma /bin/false\n&amp;#39; &amp;gt; /etc/modprobe.d/pintheft.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rmmod rds_tcp 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rmmod rds_rdma 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rmmod rds 2&amp;gt;/dev/null
&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;io_uring&lt;/code&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.io_uring_disabled&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&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;/etc/sysctl.d/*.conf&lt;/code&gt;。不过这一步要谨慎，现代数据库、代理、运行时或高性能 I/O 程序可能使用 &lt;code&gt;io_uring&lt;/code&gt;；生产环境修改前最好先确认业务依赖。&lt;/p&gt;
&lt;h2 id=&#34;修复后怎么验证&#34;&gt;修复后怎么验证
&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;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&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;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /proc/sys/kernel/io_uring_disabled 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;modprobe -n -v rds_tcp 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -3
&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;CVE-2026-43494&lt;/code&gt;，即使 &lt;code&gt;uname -r&lt;/code&gt; 看起来不是最新上游版本，也可能是已经回溯补丁的稳定内核。反过来，如果内核来源是自编译、第三方仓库、云市场镜像或容器宿主机模板，就要继续核对补丁 commit 和构建时间。&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://github.com/Unclecheng-li/poc-lab/tree/main/CVE-2026-43494%20PinTheft&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Unclecheng-li/poc-lab：CVE-2026-43494 PinTheft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dbugs.ptsecurity.com/vulnerability/PT-2026-42451&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dbugs：CVE-2026-43494&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.cloudlinux.com/pintheft-cloudlinux-platforms-not-affected&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CloudLinux：PinTheft (CVE-2026-43494) kernel LPE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://git.kernel.org/stable/c/e174929793195e0cd6a4adb0cad731b39f9019b4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux stable commit：net/rds reset op_nents when zerocopy page pin fails&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI 漏洞挖掘时代来了：Copy Fail、Dirty Frag、Fragnesia 与 ssh-keysign-pwn 为何集中爆发</title>
        <link>https://knightli.com/2026/05/21/linux-vulnerability-surge-ai-security-impact/</link>
        <pubDate>Thu, 21 May 2026 09:30:01 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/21/linux-vulnerability-surge-ai-security-impact/</guid>
        <description>&lt;p&gt;最近一段时间，Linux 内核相关漏洞密集出现：Copy Fail、Dirty Frag、Fragnesia、ssh-keysign-pwn 接连进入安全圈讨论。它们有的可以本地提权，有的能泄露高敏感文件，有的影响容器宿主机和多租户环境。很多人的第一反应是：Linux 怎么突然变得这么不安全？&lt;/p&gt;
&lt;p&gt;更准确的说法是：Linux 不是突然变差了，而是隐藏很久的问题被更快、更系统地挖了出来。&lt;/p&gt;
&lt;p&gt;这轮事件真正值得关注的，不只是某几个 CVE 的修复，而是漏洞发现方式变了。过去需要少数顶级研究员花很久才能串起来的跨子系统逻辑漏洞，现在正在被 AI 辅助审计、自动化静态分析、模糊测试和安全研究平台批量放大。漏洞没有一夜之间多出来，但漏洞被发现、被复现、被扩散的速度变快了。&lt;/p&gt;
&lt;h2 id=&#34;这几次漏洞有什么共同点&#34;&gt;这几次漏洞有什么共同点
&lt;/h2&gt;&lt;p&gt;先把最近几次事件放到一张表里看。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;漏洞&lt;/th&gt;
          &lt;th&gt;主要影响&lt;/th&gt;
          &lt;th&gt;关键特征&lt;/th&gt;
          &lt;th&gt;风险重点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Copy Fail / CVE-2026-31431&lt;/td&gt;
          &lt;td&gt;本地提权&lt;/td&gt;
          &lt;td&gt;Linux crypto / AF_ALG 相关路径，涉及 page cache 写入问题&lt;/td&gt;
          &lt;td&gt;普通用户到 root，容器环境尤其敏感&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Dirty Frag / CVE-2026-43284、CVE-2026-43500&lt;/td&gt;
          &lt;td&gt;本地提权&lt;/td&gt;
          &lt;td&gt;XFRM/ESP、RxRPC 等路径里的 page cache 写入原语&lt;/td&gt;
          &lt;td&gt;可链式利用，影响宿主机与容器边界&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Fragnesia / CVE-2026-46300&lt;/td&gt;
          &lt;td&gt;本地提权&lt;/td&gt;
          &lt;td&gt;XFRM ESP-in-TCP 子系统逻辑问题&lt;/td&gt;
          &lt;td&gt;与 Dirty Frag 同属相近攻击面&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ssh-keysign-pwn / CVE-2026-46333&lt;/td&gt;
          &lt;td&gt;本地敏感信息泄露与提权风险&lt;/td&gt;
          &lt;td&gt;Linux kernel &lt;code&gt;__ptrace_may_access()&lt;/code&gt; 逻辑缺陷&lt;/td&gt;
          &lt;td&gt;SSH 主机密钥、&lt;code&gt;/etc/shadow&lt;/code&gt; 等敏感文件风险&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;它们不完全是同一个漏洞，但背后有几个共同点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;都不是传统远程 RCE，而是本地权限提升或本地敏感信息泄露。&lt;/li&gt;
&lt;li&gt;都要求攻击者先拿到某种本地执行能力，比如普通 shell、容器内命令执行、CI 任务权限或低权限账户。&lt;/li&gt;
&lt;li&gt;多数风险集中在内核边界：page cache、加密/网络子系统、ptrace 权限判断、容器共享内核。&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;很多人看到漏洞披露时间，会误以为漏洞是在最近版本里新引入的。实际往往不是这样。&lt;/p&gt;
&lt;p&gt;Copy Fail 这类问题的关键点在于：漏洞可以潜伏多年，直到有人把正确的调用路径、权限边界和内存语义串起来。公开信息显示，Copy Fail 与 2017 年前后的内核优化历史有关。Dirty Frag、Fragnesia 也都指向网络、加密、page cache 这类深层交叉路径。&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;某个路径把只读文件页、page cache、网络包片段、加密缓冲区连接到一起。&lt;/li&gt;
&lt;li&gt;某个隐式约束没有写进类型系统、断言或文档。&lt;/li&gt;
&lt;li&gt;最终形成“普通用户能影响本不该影响的内核状态”的路径。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是普通代码审查最擅长发现的问题。审查者可能懂 crypto 子系统，另一个人懂网络子系统，第三个人懂内存管理，但漏洞刚好藏在它们的交界处。&lt;/p&gt;
&lt;h2 id=&#34;第二层原因linux-内核复杂度已经超出人工审查极限&#34;&gt;第二层原因：Linux 内核复杂度已经超出人工审查极限
&lt;/h2&gt;&lt;p&gt;Linux 的优势是开放、通用、硬件支持广、生态强。但这些优势也带来了代价。&lt;/p&gt;
&lt;p&gt;现代 Linux 内核不只是一个“小内核”。它包含调度、内存管理、文件系统、网络协议栈、加密框架、驱动、虚拟化、容器相关机制、eBPF、LSM、安全模块、硬件平台适配等大量子系统。每个子系统都有自己的历史、维护者、性能目标和兼容性包袱。&lt;/p&gt;
&lt;p&gt;问题在于，漏洞常常不在单个模块里，而在模块交叉点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;splice()&lt;/code&gt; 把文件页和管道连接起来。&lt;/li&gt;
&lt;li&gt;AF_ALG 把用户态和内核 crypto API 连接起来。&lt;/li&gt;
&lt;li&gt;XFRM/ESP 把网络包、加密和内存页连接起来。&lt;/li&gt;
&lt;li&gt;RxRPC、ESP-in-TCP 这类路径让网络协议栈更加复杂。&lt;/li&gt;
&lt;li&gt;容器让低权限本地执行变成更常见的现实前提。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从工程角度看，Linux 内核已经不是“足够多的眼睛就能看完”的规模。开源确实让问题更容易被修复和复核，但不等于每个角落都会被持续、安全地审查。真正能理解跨子系统漏洞的人很少，而这类漏洞偏偏最容易造成高影响。&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;p&gt;但安全代价也很清楚：当“只读数据”“共享页”“用户可控输入”“内核缓冲区”“加密输出”之间的边界变薄，只要某个子系统对输入输出契约理解不一致，就可能产生越权写入或越权读取。&lt;/p&gt;
&lt;p&gt;也就是说，性能优化本身不是错，但它会制造更脆弱的组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原地加解密减少了复制，但也更依赖输入输出缓冲区的正确隔离。&lt;/li&gt;
&lt;li&gt;page cache 提升了文件访问效率，但也可能成为攻击面。&lt;/li&gt;
&lt;li&gt;零拷贝提升吞吐，但也让不同子系统共享同一批内存对象。&lt;/li&gt;
&lt;li&gt;容器提升部署效率，但共享内核意味着本地 LPE 的爆炸半径更大。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安全边界不是靠“大家都记得别犯错”维持的。边界必须落实到类型、权限检查、不可变约束、测试、fuzzing 和持续审计里。否则，性能优化越多，隐式假设越多，漏洞迟早会被挖出来。&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;ul&gt;
&lt;li&gt;Web 应用被打出普通 shell。&lt;/li&gt;
&lt;li&gt;CI/CD 任务执行了不可信代码。&lt;/li&gt;
&lt;li&gt;容器里跑了用户上传任务。&lt;/li&gt;
&lt;li&gt;多租户平台允许用户运行 notebook、插件、脚本或构建任务。&lt;/li&gt;
&lt;li&gt;AI 代码执行环境、沙箱和在线评测平台越来越常见。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦攻击者在容器里有执行能力，内核 LPE 就不再只是“本机小问题”。因为容器共享宿主机内核，内核漏洞可能直接跨过容器边界，影响宿主机和其他租户。&lt;/p&gt;
&lt;p&gt;这也是为什么 Copy Fail、Dirty Frag 这类漏洞会被云、安全、容器团队高度关注。它们把“低权限本地代码执行”升级成“宿主机级风险”的可能性提高了。&lt;/p&gt;
&lt;h2 id=&#34;ai-的影响漏洞发现成本被压低了&#34;&gt;AI 的影响：漏洞发现成本被压低了
&lt;/h2&gt;&lt;p&gt;这轮事件里最有时代感的部分，是 AI 辅助漏洞挖掘。&lt;/p&gt;
&lt;p&gt;Copy Fail 的公开资料提到，Theori 的 Xint Code 参与了漏洞发现过程。无论具体工具能力如何，这件事代表了一个趋势：AI 不一定自己“凭空发明漏洞”，但它很擅长帮助研究员缩短搜索路径。&lt;/p&gt;
&lt;p&gt;AI 对漏洞研究的影响主要体现在几件事上：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;更快扫过陌生代码&lt;br&gt;
内核子系统代码量很大，研究员不可能手工阅读所有路径。AI 可以帮助快速总结函数、调用链、输入输出关系和可疑模式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;更容易发现跨模块连接&lt;br&gt;
很多漏洞藏在“用户态入口 -&amp;gt; 网络栈 -&amp;gt; 加密框架 -&amp;gt; 内存页 -&amp;gt; 文件缓存”的链条里。AI 可以辅助梳理这些跨文件、跨目录、跨子系统的路径。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;更容易生成审计假设&lt;br&gt;
比如“哪些路径会把用户可控数据写入 page cache”“哪些 API 允许非特权用户触达 crypto 子系统”“哪些函数假设输入输出缓冲区不会重叠”。这些问题以前靠经验慢慢想，现在可以被更系统地枚举。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;更容易把漏洞变成可复现样例&lt;br&gt;
AI 不能替代内核研究员的判断，但可以帮助写验证代码、整理 PoC 思路、解释错误路径、生成测试用例。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;结果是：漏洞挖掘的单位成本下降了。&lt;/p&gt;
&lt;p&gt;过去，一个高质量内核漏洞可能需要很长时间才能被顶尖研究员发现。现在，懂系统的人加上 AI 工具，可以更快把可疑路径筛出来。漏洞供给的天花板被抬高，集中爆发就更容易出现。&lt;/p&gt;
&lt;h2 id=&#34;但-ai-不是唯一原因&#34;&gt;但 AI 不是唯一原因
&lt;/h2&gt;&lt;p&gt;也要避免另一个极端：把所有问题都归因于 AI。&lt;/p&gt;
&lt;p&gt;AI 只是加速器，不是漏洞根源。漏洞真正的根源仍然是：&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;默认暴露的内核功能太多。&lt;/li&gt;
&lt;li&gt;安全测试没有覆盖所有组合路径。&lt;/li&gt;
&lt;li&gt;容器、多租户和自动化执行环境扩大了本地漏洞价值。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果没有这些基础条件，AI 再强也挖不出这么多高影响漏洞。反过来，只要这些条件存在，AI 越成熟，漏洞就越容易被系统性挖出。&lt;/p&gt;
&lt;h2 id=&#34;对防守方意味着什么&#34;&gt;对防守方意味着什么
&lt;/h2&gt;&lt;p&gt;对运维、安全和平台团队来说，这轮事件有几个直接启示。&lt;/p&gt;
&lt;p&gt;第一，不要再把“本地提权”当低优先级。&lt;br&gt;
只要你的环境里有容器、CI、在线执行、插件、notebook、多租户任务，本地提权就可能变成宿主机风险。&lt;/p&gt;
&lt;p&gt;第二，内核补丁节奏要更快。&lt;br&gt;
关键宿主机、Kubernetes 节点、CI Runner、AI 沙箱、虚拟化宿主机，不应该长期停留在旧内核。内核更新、重启窗口、live patch、灰度回滚都要有明确流程。&lt;/p&gt;
&lt;p&gt;第三，减少不必要的内核攻击面。&lt;br&gt;
不需要的协议、模块、用户命名空间、特殊 socket、调试接口，要按业务需要收紧。默认开启不等于默认应该暴露。&lt;/p&gt;
&lt;p&gt;第四，容器安全要假设内核可能被打穿。&lt;br&gt;
容器里使用非 root、最小 capabilities、seccomp、AppArmor/SELinux、只读文件系统、隔离敏感挂载，仍然很重要。它们未必能挡住所有内核漏洞，但能减少前置条件和后续破坏。&lt;/p&gt;
&lt;p&gt;第五，监控要关注提权链条。&lt;br&gt;
不仅要看远程入口，也要看异常进程、敏感文件读取、内核模块加载、容器逃逸迹象、CI Runner 异常行为、&lt;code&gt;/etc/shadow&lt;/code&gt;、SSH host key 等高价值文件访问。&lt;/p&gt;
&lt;h2 id=&#34;对开源社区意味着什么&#34;&gt;对开源社区意味着什么
&lt;/h2&gt;&lt;p&gt;对 Linux 社区和大型开源项目来说，AI 漏洞挖掘会带来双重压力。&lt;/p&gt;
&lt;p&gt;一方面，AI 会帮防守方更快找到老问题。更多潜伏漏洞被公开修复，从长期看是好事。&lt;/p&gt;
&lt;p&gt;另一方面，AI 也会制造噪音。低质量自动报告、误报、重复报告、没有上下文的“AI 找 bug”会消耗维护者时间。真正的挑战不是“是否使用 AI”，而是如何把 AI 输出纳入负责任的安全流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;报告必须有最小复现。&lt;/li&gt;
&lt;li&gt;必须明确影响范围和威胁模型。&lt;/li&gt;
&lt;li&gt;必须区分理论问题、可触发 bug、可利用漏洞。&lt;/li&gt;
&lt;li&gt;必须尊重 embargo、发行版协调和修复窗口。&lt;/li&gt;
&lt;li&gt;维护者需要更好的自动化测试、fuzzing、静态分析和回归验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 让漏洞发现更快，也要求修复和协调机制更成熟。否则，安全研究的生产力提升会转化成维护者的压力和用户的恐慌。&lt;/p&gt;
&lt;h2 id=&#34;结论不是神话破灭而是安全现实变了&#34;&gt;结论：不是神话破灭，而是安全现实变了
&lt;/h2&gt;&lt;p&gt;Linux 仍然是最透明、最可控、最能被修复和加固的主流操作系统基础设施之一。问题不在于 Linux 突然“不安全”，而在于现代内核的复杂度、云原生使用方式和 AI 辅助漏洞挖掘，正在改变漏洞暴露速度。&lt;/p&gt;
&lt;p&gt;以后类似事件很可能还会出现。不是因为每次都有新的灾难，而是因为过去积累的复杂路径正在被更高效率地搜索。&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;不能只靠人工审查面对千万行级别系统软件。&lt;/li&gt;
&lt;li&gt;不能只等补丁，而要提前缩小攻击面、加快补丁节奏、建立纵深防御。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 让漏洞挖掘进入更高产能时代。对攻击者是这样，对防守者也一样。区别在于，防守方能不能把这种能力变成更快的审计、更早的修复和更稳的基础设施治理。&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://www.zhihu.com/question/28339369/answer/2039681587684586658&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;知乎讨论：Linux 内核连续漏洞事件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&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;Theori：Copy Fail / CVE-2026-31431&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/blog/copy-fail-vulnerability-fixes-available&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu：Copy Fail vulnerability fixes available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/security/blog/2026/05/01/cve-2026-31431-copy-fail-vulnerability-enables-linux-root-privilege-escalation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Security Blog：CVE-2026-31431 Copy Fail vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.qualys.com/misc/2026/05/20/cve-2026-46333-local-root-privilege-escalation-and-credential-disclosure-in-the-linux-kernel-ptrace-path&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qualys：CVE-2026-46333 Linux kernel ptrace path advisory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/blog/ssh-keysign-pwn-linux-vulnerability-fixes-available&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu：CVE-2026-46333 mitigations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.helpnetsecurity.com/2026/05/08/dirty-frag-linux-vulnerability-cve-2026-43284-cve-2026-43500/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Help Net Security：Dirty Frag Linux vulnerability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.techradar.com/pro/security/another-major-linux-security-issue-uncovered-new-fragnesia-flaw-allows-attackers-to-run-malicious-code-as-root&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechRadar：Fragnesia CVE-2026-46300 报道&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>近期四个 Linux 本地提权漏洞影响梳理：Copy Fail、Dirty Frag、Fragnesia 与 ssh-keysign-pwn</title>
        <link>https://knightli.com/2026/05/20/linux-lpe-four-vulnerabilities-impact-summary/</link>
        <pubDate>Wed, 20 May 2026 23:00:37 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/20/linux-lpe-four-vulnerabilities-impact-summary/</guid>
        <description>&lt;p&gt;最近 Linux 生态连续出现几起高关注度的本地安全问题。单独看，它们分别落在加密接口、网络/IPsec 路径、页缓存处理、ptrace 访问检查等不同位置；放在一起看，真正值得警惕的是同一个结论：只要攻击者已经拿到低权限本地执行点，Linux 宿主机、容器节点、CI 机器和多用户服务器的风险都会被明显放大。&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;ul&gt;
&lt;li&gt;Copy Fail（CVE-2026-31431）：低权限本地用户可能通过内核加密相关路径影响页缓存，从而扩大权限。&lt;/li&gt;
&lt;li&gt;Dirty Frag（CVE-2026-43284 / CVE-2026-43500 相关）：风险集中在 xfrm/ESP、RxRPC 等网络和内核数据路径，后渗透阶段危害很高。&lt;/li&gt;
&lt;li&gt;Fragnesia（CVE-2026-46300）：与 Dirty Frag 相近，同样围绕 XFRM ESP-in-TCP、共享 fragment 和页缓存写入风险展开。&lt;/li&gt;
&lt;li&gt;ssh-keysign-pwn（CVE-2026-46333）：不是直接 root shell 类型漏洞，而是本地信息泄露风险，可能读取 SSH 主机私钥、&lt;code&gt;/etc/shadow&lt;/code&gt; 等敏感文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这四类问题的入口不同，缓解方式也不完全一样。不能因为处理了 Copy Fail，就默认 Dirty Frag 和 Fragnesia 也安全；也不能因为禁用了某些网络模块，就认为 ssh-keysign-pwn 的信息泄露风险自动消失。&lt;/p&gt;
&lt;h2 id=&#34;copy-fail容器和-ci-节点优先级很高&#34;&gt;Copy Fail：容器和 CI 节点优先级很高
&lt;/h2&gt;&lt;p&gt;Copy Fail 的关键影响不是“某个应用崩溃”，而是低权限执行能力可能被转化为 root 权限。它对以下环境尤其敏感：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;允许用户上传或运行代码的 CI/CD 节点。&lt;/li&gt;
&lt;li&gt;托管不可信工作负载的容器宿主机。&lt;/li&gt;
&lt;li&gt;开发测试机、跳板机、共享服务器。&lt;/li&gt;
&lt;li&gt;运行旧内核且补丁节奏较慢的云主机。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Copy Fail 的危险点在于攻击门槛偏低，而且容易和容器场景叠加。很多团队把容器当作强隔离边界，但普通容器默认仍共享宿主机内核。如果攻击者能在容器内获得 shell，内核本地提权就可能把容器问题放大为宿主机问题。&lt;/p&gt;
&lt;p&gt;详细分析见站内文章：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/&#34; &gt;Copy Fail 漏洞 CVE-2026-31431：Linux 内核文件复制路径中的容器逃逸风险&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;dirty-frag后渗透阶段的放大器&#34;&gt;Dirty Frag：后渗透阶段的放大器
&lt;/h2&gt;&lt;p&gt;Dirty Frag 更像是攻击者进入系统后的权限放大工具。它不是典型的远程无认证漏洞，前提通常是攻击者已经通过弱口令、WebShell、低权限服务账号、容器任务或其他方式获得本地执行能力。&lt;/p&gt;
&lt;p&gt;它的实际影响主要体现在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已被入侵的低权限账号可能进一步变成 root。&lt;/li&gt;
&lt;li&gt;容器环境中的低权限执行点可能威胁宿主机。&lt;/li&gt;
&lt;li&gt;使用 IPsec、ESP、RxRPC 或相关内核网络能力的系统需要谨慎评估补丁和临时缓解。&lt;/li&gt;
&lt;li&gt;安全团队不能只看边界防护，还要关注入侵后的提权链条。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dirty Frag 提醒运维团队：本地提权漏洞虽然不是第一入口，却可能决定一次入侵最终能走多远。只要存在低权限落点，攻击者就会寻找内核漏洞把权限推到最高。&lt;/p&gt;
&lt;p&gt;详细分析见站内文章：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/&#34; &gt;Dirty Frag CVE-2026-43284：Linux 本地提权漏洞风险与缓解指南&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;fragnesia同类攻击面没有一次性清干净&#34;&gt;Fragnesia：同类攻击面没有一次性清干净
&lt;/h2&gt;&lt;p&gt;Fragnesia 的重要性在于，它说明 Dirty Frag 附近的攻击面并不是一个孤立问题。即使某个漏洞被修复，相邻路径、相似数据结构、相同模块组合里仍可能存在新的可利用点。&lt;/p&gt;
&lt;p&gt;它对运维的影响主要是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不能只按漏洞名称做一次性处置，要按攻击面持续检查。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;、XFRM、ESP-in-TCP 等相关路径需要结合业务依赖评估。&lt;/li&gt;
&lt;li&gt;如果系统不依赖相关网络能力，可以考虑临时禁用，但必须先在测试环境确认不会影响 VPN、IPsec、隧道或内部网络功能。&lt;/li&gt;
&lt;li&gt;页缓存污染类风险可能带来“看似文件没改，实际执行路径受影响”的检测盲点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fragnesia 对企业最大的提醒是：补丁管理不能只盯单个 CVE。更稳妥的做法是围绕子系统和攻击面建立清单，确认哪些机器暴露相关能力，哪些业务真正需要这些模块。&lt;/p&gt;
&lt;p&gt;详细分析见站内文章：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/&#34; &gt;Fragnesia (CVE-2026-46300)：Linux 内核本地提权漏洞影响与缓解&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;ssh-keysign-pwn不直接-root也足够危险&#34;&gt;ssh-keysign-pwn：不直接 root，也足够危险
&lt;/h2&gt;&lt;p&gt;ssh-keysign-pwn 与前三个漏洞的性质不同。它更偏向本地敏感信息泄露，不是直接拿 root shell 的漏洞。但在真实攻击中，敏感信息泄露常常能变成更严重的后果。&lt;/p&gt;
&lt;p&gt;它的影响重点包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSH host private keys 泄露后，可能影响主机身份可信度。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/shadow&lt;/code&gt; 等文件被读取后，可能引发离线破解和账号接管。&lt;/li&gt;
&lt;li&gt;多用户服务器、跳板机、构建机、共享开发机风险更高。&lt;/li&gt;
&lt;li&gt;即使攻击者没有立刻提权，也可能拿到后续横向移动需要的凭据材料。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类问题容易被低估，因为它没有“直接 root shell”那么刺激。但对企业环境来说，密钥和密码哈希泄露往往意味着更长周期的清理：轮换 SSH 主机密钥、排查信任关系、检查账号密码、审计登录日志，都可能成为必要动作。&lt;/p&gt;
&lt;p&gt;详细分析见站内文章：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/17/ssh-keysign-pwn-cve-2026-46333/&#34; &gt;ssh-keysign-pwn（CVE-2026-46333）解读：Linux 本地信息泄露、SSH 主机密钥与 /etc/shadow 风险&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;共同影响容器隔离不能再被当作强边界&#34;&gt;共同影响：容器隔离不能再被当作强边界
&lt;/h2&gt;&lt;p&gt;这四次事件合在一起，最直接的影响是重新提醒大家：普通容器隔离不是虚拟机隔离。&lt;/p&gt;
&lt;p&gt;Docker、containerd 和 Kubernetes 依赖 namespace、cgroup、capabilities、seccomp、AppArmor 或 SELinux 等机制减少攻击面，但它们通常仍共享宿主机内核。只要漏洞发生在共享内核里，容器内的低权限执行点就可能成为攻击入口。&lt;/p&gt;
&lt;p&gt;高风险环境应重点检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否允许不可信代码运行在共享宿主机上。&lt;/li&gt;
&lt;li&gt;容器是否默认 root 用户运行。&lt;/li&gt;
&lt;li&gt;是否授予了不必要的 capabilities。&lt;/li&gt;
&lt;li&gt;seccomp 配置是否过宽。&lt;/li&gt;
&lt;li&gt;多租户工作负载是否应该迁移到 gVisor、Kata Containers、Firecracker microVM、独立虚拟机或专用节点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对 CI/CD 平台尤其要谨慎。构建任务天然会运行外部代码、依赖安装脚本、测试脚本和临时二进制。如果这些任务与长期服务共享宿主机，一次本地提权就可能影响更大的基础设施。&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;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;uname -a
&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;dpkg -l &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep linux-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;或在 RHEL 系发行版上：&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;rpm -qa &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep kernel
&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;p&gt;最后，还要确认机器已经重启到修复后的内核。对不能重启的核心业务，要评估 livepatch、热补丁或短期隔离方案，但不要把临时缓解当作最终修复。&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;AF_ALG / &lt;code&gt;algif_aead&lt;/code&gt; 是否被业务使用。&lt;/li&gt;
&lt;li&gt;XFRM、ESP、ESP-in-TCP、IPsec 是否被 VPN、隧道或安全网关依赖。&lt;/li&gt;
&lt;li&gt;RxRPC 是否需要启用。&lt;/li&gt;
&lt;li&gt;非特权用户命名空间是否必须开放。&lt;/li&gt;
&lt;li&gt;容器是否能创建过宽的 socket 类型。&lt;/li&gt;
&lt;li&gt;ptrace 访问策略是否过松。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果业务确实不需要某些能力，可以评估禁用模块、调整 sysctl、收紧 seccomp、减少 capabilities。生产环境不要盲目复制命令，应先盘点依赖，再灰度执行。&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;/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;运行不可信插件、脚本、扩展的系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二，确认发行版公告和实际运行内核。不要只看上游版本号，Debian、Ubuntu、RHEL、AlmaLinux、Rocky Linux、SUSE、openEuler 等发行版可能会 backport 安全补丁。&lt;/p&gt;
&lt;p&gt;第三，收紧容器运行策略。尽量做到非 root 用户、最小 capabilities、&lt;code&gt;no-new-privileges&lt;/code&gt;、只读文件系统、明确 seccomp 和 AppArmor/SELinux 策略。&lt;/p&gt;
&lt;p&gt;第四，检查密钥和凭据风险。尤其是涉及 ssh-keysign-pwn 的环境，应评估 SSH host key、&lt;code&gt;/etc/shadow&lt;/code&gt;、跳板机凭据和 CI secrets 是否需要轮换。&lt;/p&gt;
&lt;p&gt;第五，补上监控。重点关注异常 root shell、可疑本地提权 PoC、关键文件修改、异常 ptrace 行为、容器进程访问宿主机路径、CI 节点上的异常网络连接。&lt;/p&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;p&gt;这四次事件的重点不是“Linux 不安全了”，而是“默认信任不够用了”。&lt;/p&gt;
&lt;p&gt;Linux 仍然是透明、可修复、可裁剪、可加固的主流系统。但在容器、CI、多租户和 AI 自动化代码执行越来越普遍的环境里，低权限执行点已经不能被看作小问题。只要内核里存在可利用的本地提权或敏感信息泄露漏洞，局部入侵就可能变成宿主机控制、凭据泄露或横向移动。&lt;/p&gt;
&lt;p&gt;更现实的做法是把这四次事件当成一次提醒：补丁要快，重启要确认，模块要按需启用，容器要收紧，密钥要能轮换，多租户要重新评估隔离等级。&lt;/p&gt;
&lt;p&gt;站内延伸阅读：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/&#34; &gt;Copy Fail 漏洞 CVE-2026-31431：Linux 内核文件复制路径中的容器逃逸风险&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/&#34; &gt;Dirty Frag CVE-2026-43284：Linux 本地提权漏洞风险与缓解指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/&#34; &gt;Fragnesia (CVE-2026-46300)：Linux 内核本地提权漏洞影响与缓解&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/17/ssh-keysign-pwn-cve-2026-46333/&#34; &gt;ssh-keysign-pwn（CVE-2026-46333）解读：Linux 本地信息泄露、SSH 主机密钥与 /etc/shadow 风险&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>APT45 用 AI 批量验证漏洞：零日攻击门槛正在下降</title>
        <link>https://knightli.com/2026/05/17/apt45-ai-zero-day-threat-tracker/</link>
        <pubDate>Sun, 17 May 2026 19:52:39 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/apt45-ai-zero-day-threat-tracker/</guid>
        <description>&lt;p&gt;Google Threat Intelligence Group 在 2026 年 5 月 11 日发布了新的 AI Threat Tracker。报告里最值得注意的不是“攻击者开始用 AI”这件事本身，而是使用方式正在从辅助写作、翻译、侦察，进入漏洞研究、PoC 验证、恶意代码混淆和自动化攻击编排。&lt;/p&gt;
&lt;p&gt;这里有两个容易被混在一起的点，需要先拆开：&lt;/p&gt;
&lt;p&gt;第一，Google 说他们首次发现了一个高度疑似由 AI 辅助开发的零日漏洞利用。这个案例来自未点名的网络犯罪团伙，目标是一个流行的开源 Web 系统管理工具，漏洞可在已有账号凭据的前提下绕过 2FA。Google 表示已与受影响厂商协作披露，并可能阻止了一次大规模利用。&lt;/p&gt;
&lt;p&gt;第二，APT45 不是这起零日案例的归因对象。GTIG 另行提到，和朝鲜相关的 APT45 被观察到向 AI 模型发送大量重复提示，用于递归分析不同 CVE，并验证 PoC exploit。这说明 APT45 正在把 AI 当成漏洞研究和武器库整理工具，而不是只把 AI 用来写钓鱼邮件。&lt;/p&gt;
&lt;h2 id=&#34;ai-零日案例说明了什么&#34;&gt;AI 零日案例说明了什么
&lt;/h2&gt;&lt;p&gt;这起零日并不是传统意义上最常见的内存破坏、输入过滤缺陷或简单配置错误。GTIG 把它描述为一个高层语义逻辑问题：开发者在认证流程里硬编码了某种信任假设，导致 2FA enforcement 逻辑和例外条件之间出现矛盾。&lt;/p&gt;
&lt;p&gt;这类漏洞对传统扫描器不友好。静态分析和 fuzzing 更擅长找崩溃、危险函数、输入输出路径和已知模式。它们不一定能理解“开发者本来想保证什么，却在哪个例外里破坏了这个保证”。&lt;/p&gt;
&lt;p&gt;大模型的风险就在这里。它不一定比专业安全研究员更强，但它擅长读上下文、解释意图、比较相似代码路径，并指出“这里的业务逻辑前后不一致”。当这种能力被攻击者接入自动化流程后，原本需要资深研究员长时间阅读的逻辑漏洞，可能更容易被批量筛出来。&lt;/p&gt;
&lt;p&gt;GTIG 还提到，这段 exploit 代码里有不少 AI 生成痕迹，例如教育式 docstring、虚构的 CVSS 分数，以及接近教材风格的 Python 结构。Google 同时说明，他们不认为 Gemini 被用于该 exploit，但对攻击者使用某个 AI 模型辅助发现和武器化漏洞有较高信心。&lt;/p&gt;
&lt;h2 id=&#34;apt45-的变化更值得长期关注&#34;&gt;APT45 的变化更值得长期关注
&lt;/h2&gt;&lt;p&gt;APT45 长期被视为朝鲜相关威胁组织，活动目标覆盖间谍、金融收益和战略情报。GTIG 这次强调的是它使用 AI 的方式：大量、重复、递归地分析 CVE，验证 PoC exploit，并把结果沉淀成更可靠的攻击能力。&lt;/p&gt;
&lt;p&gt;这和“让 AI 写一段脚本”不是一个量级。&lt;/p&gt;
&lt;p&gt;如果一个组织能把 AI 接入漏洞筛选、PoC 验证、payload 调整和测试环境，那么它的人力瓶颈会改变。过去，一个团队能同时研究多少漏洞，取决于研究员数量、经验和时间。现在，AI 可以承担一部分重复阅读、归纳、变体测试和初步判断，让人的精力更多放在挑选目标、验证可用性和实战投递上。&lt;/p&gt;
&lt;p&gt;对防守方来说，这意味着已知漏洞的窗口期会更短。&lt;/p&gt;
&lt;p&gt;一个 CVE 披露后，攻击者不需要从零读公告、找补丁 diff、搭环境、改 PoC。AI 可以帮助它更快理解影响范围、生成测试思路、排查失败原因，并把不同目标版本里的细节差异整理出来。即使 AI 生成的结果需要人工修正，它也足以提高整体吞吐量。&lt;/p&gt;
&lt;h2 id=&#34;这不是ai-自动黑掉一切&#34;&gt;这不是“AI 自动黑掉一切”
&lt;/h2&gt;&lt;p&gt;也没必要把这件事理解成 AI 已经可以独立完成完整入侵。&lt;/p&gt;
&lt;p&gt;GTIG 的报告更像是在说：攻击链里的多个环节正在被 AI 加速。漏洞研究、恶意代码混淆、侦察、社会工程、信息操作、移动端 UI 自动化、供应链投毒，都已经出现了 AI 参与的迹象。&lt;/p&gt;
&lt;p&gt;但 AI 仍然会犯错。它可能幻觉漏洞、误判可利用性、生成不可运行代码，也可能在复杂企业权限逻辑里迷路。真正危险的地方不是 AI 完美无缺，而是攻击者可以低成本试错。只要大规模尝试足够便宜，一部分错误输出就会被过滤掉，剩下的可用结果会进入攻击流程。&lt;/p&gt;
&lt;p&gt;这也是 APT45 这类案例值得关注的原因：国家级或准国家级组织不缺目标和耐心。如果 AI 能把重复劳动压缩掉，它们就能把更多资源投向真正高价值的目标。&lt;/p&gt;
&lt;h2 id=&#34;防守重点要从有没有零日扩展到窗口期多短&#34;&gt;防守重点要从“有没有零日”扩展到“窗口期多短”
&lt;/h2&gt;&lt;p&gt;很多企业过去会把风险分成两类：已知漏洞靠补丁管理，零日漏洞靠纵深防御。但 AI 进入漏洞研究后，这条边界会变得更模糊。&lt;/p&gt;
&lt;p&gt;更现实的问题是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新 CVE 披露后，外部攻击者多久能形成可用 exploit？&lt;/li&gt;
&lt;li&gt;企业资产清单能否在同一天告诉你哪些系统受影响？&lt;/li&gt;
&lt;li&gt;WAF、EDR、日志和身份系统能否发现异常尝试？&lt;/li&gt;
&lt;li&gt;高风险系统是否默认启用 MFA、最小权限和网络隔离？&lt;/li&gt;
&lt;li&gt;开源组件、AI agent 插件、第三方连接器是否进入供应链审查范围？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI 零日不会让基础安全失效。相反，它会惩罚那些基础安全长期欠账的环境。&lt;/p&gt;
&lt;p&gt;如果补丁周期很慢，资产清单不清楚，互联网暴露面没人负责，日志不可检索，账号权限长期过大，那么攻击者是否使用 AI 只是效率差异。问题迟早会被撞上。&lt;/p&gt;
&lt;h2 id=&#34;ai-供应链也成了攻击面&#34;&gt;AI 供应链也成了攻击面
&lt;/h2&gt;&lt;p&gt;GTIG 报告还提到，攻击者开始关注 AI 软件生态本身，包括 agent 技能包、第三方数据连接器、开源包装库和自动化框架。风险不一定来自模型被“攻破”，而是来自模型周围的工具链被投毒。&lt;/p&gt;
&lt;p&gt;这点对使用 AI 编程、AI Agent、自动化插件的人很重要。&lt;/p&gt;
&lt;p&gt;一个恶意 skill、一个带后门的依赖、一个过度授权的连接器，都可能让 AI 系统从“帮你做事”变成“替攻击者做事”。当 agent 拥有文件系统、浏览器、终端、云账号或企业数据权限时，供应链审查就不能停留在传统应用层。&lt;/p&gt;
&lt;p&gt;至少应该做到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不随便安装来源不明的 agent skill 和插件。&lt;/li&gt;
&lt;li&gt;对能执行命令、读取文件、访问密钥的工具做权限隔离。&lt;/li&gt;
&lt;li&gt;生产环境不要直接运行未经审查的 AI 生成脚本。&lt;/li&gt;
&lt;li&gt;对 AI 项目的依赖、GitHub Actions、PyPI / npm 包做扫描。&lt;/li&gt;
&lt;li&gt;对模型 API Key、云密钥、GitHub Token 做最小权限和泄露监控。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;对安全团队的实际建议&#34;&gt;对安全团队的实际建议
&lt;/h2&gt;&lt;p&gt;第一，把漏洞响应节奏前移。高危 CVE 不能只等月度补丁窗口，尤其是 VPN、网关、系统管理面板、身份系统、CI/CD、远程管理工具这类边界资产。&lt;/p&gt;
&lt;p&gt;第二，建立可查询的资产清单。AI 加速攻击的前提是攻击者能快速定位目标；防守方也必须能快速回答“我有没有这类系统、哪个版本、暴露在哪里”。&lt;/p&gt;
&lt;p&gt;第三，用行为检测补足签名检测。AI 生成 exploit 或恶意代码可能会改写表面特征，但认证绕过、异常登录、批量探测、失败请求模式、权限提升路径仍然会留下行为痕迹。&lt;/p&gt;
&lt;p&gt;第四，把 AI 工具纳入安全治理。内部使用的 coding agent、浏览器 agent、文档 agent、自动化脚本和插件市场，都应该有准入、审查、日志和回滚流程。&lt;/p&gt;
&lt;p&gt;第五，不要把 AI 防守只理解成“买一个安全大模型”。真正有用的是把 AI 放进漏洞优先级排序、日志分析、补丁影响评估、代码审查和配置基线检查里，让防守效率也跟上攻击效率。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;GTIG 这次报告的信号很清楚：AI 正在把攻防节奏推快。&lt;/p&gt;
&lt;p&gt;AI 辅助零日说明，逻辑漏洞和认证绕过这类问题可能更容易被模型发现。APT45 的案例说明，成熟威胁组织已经在用 AI 批量分析 CVE 和验证 PoC。PROMPTSPY、AI 生成混淆代码、agent 供应链攻击则说明，AI 不只是攻击者的聊天工具，而是正在进入攻击工具链。&lt;/p&gt;
&lt;p&gt;这不是末日，但也不是普通新闻。&lt;/p&gt;
&lt;p&gt;对企业来说，最实际的应对不是恐慌，而是把补丁、资产、日志、身份、供应链和 AI 工具权限这些基础工作做得更快、更清楚、更可验证。AI 会提高攻击者的试错速度，防守方也必须提高发现、判断和修复速度。&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://cloud.google.com/blog/topics/threat-intelligence/ai-vulnerability-exploitation-initial-access&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Cloud Blog：GTIG AI Threat Tracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cloud.google.com/blog/topics/threat-intelligence/apt45-north-korea-digital-military-machine&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Cloud Blog：APT45 North Korea’s Digital Military Machine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://apnews.com/article/926aea7f7dc5e0e61adce3273c55c6d4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AP：Google disrupts hackers using AI to exploit an unknown weakness&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Next.js 高危 SSRF 漏洞 CVE-2026-44578：影响范围与升级建议</title>
        <link>https://knightli.com/2026/05/17/nextjs-cve-2026-44578-websocket-ssrf/</link>
        <pubDate>Sun, 17 May 2026 17:27:13 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/nextjs-cve-2026-44578-websocket-ssrf/</guid>
        <description>&lt;p&gt;Next.js 在 2026 年 5 月披露了一个高危 SSRF 漏洞：CVE-2026-44578。&lt;/p&gt;
&lt;p&gt;根据 GitHub / Vercel 安全公告 &lt;code&gt;GHSA-c4j6-fc7j-m34r&lt;/code&gt; 和 NVD 记录，这个漏洞影响自托管的 Next.js 应用，前提是应用使用内置 Node.js server，并且暴露在可接收恶意 WebSocket upgrade 请求的网络环境中。攻击者可能让服务器代理请求到任意内部或外部地址，从而访问内部服务或云元数据端点。&lt;/p&gt;
&lt;p&gt;Vercel 托管的部署不受影响。修复版本是 &lt;code&gt;15.5.16&lt;/code&gt; 和 &lt;code&gt;16.2.5&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;如果你在自己服务器、容器、Kubernetes、ECS、VPS、裸机或 PaaS 上自托管 Next.js，需要优先检查。&lt;/p&gt;
&lt;p&gt;受影响范围：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;next &amp;gt;= 13.4.13 &amp;lt; 15.5.16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;next &amp;gt;= 16.0.0 &amp;lt; 16.2.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不受影响或风险较低的情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;部署在 Vercel 平台上的应用。&lt;/li&gt;
&lt;li&gt;已升级到 &lt;code&gt;15.5.16&lt;/code&gt;、&lt;code&gt;16.2.5&lt;/code&gt; 或更高版本。&lt;/li&gt;
&lt;li&gt;没有使用内置 Node.js server 暴露服务的场景。&lt;/li&gt;
&lt;li&gt;反向代理或负载均衡已经阻断不需要的 WebSocket upgrade 请求，并且出站访问也做了限制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;推荐处置顺序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先确认生产环境实际运行的 &lt;code&gt;next&lt;/code&gt; 版本。&lt;/li&gt;
&lt;li&gt;自托管应用尽快升级到修复版本。&lt;/li&gt;
&lt;li&gt;暂时无法升级时，在反向代理或负载均衡层阻断不需要的 WebSocket upgrade。&lt;/li&gt;
&lt;li&gt;限制应用服务器访问云元数据、内网管理面和敏感内部服务。&lt;/li&gt;
&lt;li&gt;排查近期异常 WebSocket upgrade 请求和内部访问日志。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;漏洞是什么&#34;&gt;漏洞是什么
&lt;/h2&gt;&lt;p&gt;CVE-2026-44578 是一个 Server-Side Request Forgery，也就是 SSRF 漏洞。&lt;/p&gt;
&lt;p&gt;SSRF 的核心风险是：攻击者不直接访问内部系统，而是诱导你的服务器替他发请求。服务器通常位于更靠近内网、云平台和内部服务的位置，所以一旦被当成代理使用，可能访问到外部攻击者本来碰不到的资源。&lt;/p&gt;
&lt;p&gt;这次 Next.js 的问题出在 WebSocket upgrade 处理路径。安全公告称，自托管应用如果使用内置 Node.js server，攻击者可以通过特制 WebSocket upgrade 请求，让服务器代理访问任意内部或外部目的地。&lt;/p&gt;
&lt;p&gt;风险点包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内网 HTTP 服务。&lt;/li&gt;
&lt;li&gt;管理后台。&lt;/li&gt;
&lt;li&gt;云元数据地址。&lt;/li&gt;
&lt;li&gt;容器或集群内部服务。&lt;/li&gt;
&lt;li&gt;只允许服务器访问的内部 API。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个漏洞的 CVSS v3.1 评分为 &lt;code&gt;8.6 High&lt;/code&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A: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;h2 id=&#34;为什么自托管更危险&#34;&gt;为什么自托管更危险
&lt;/h2&gt;&lt;p&gt;这次公告明确提到：Vercel-hosted deployments are not affected。&lt;/p&gt;
&lt;p&gt;真正需要重点关注的是自托管部署。原因很简单：自托管应用的网络环境千差万别，有些直接暴露 origin server，有些在 Nginx、Traefik、Ingress、Cloudflare、ALB 或自建网关后面，有些运行在云主机、容器网络或 Kubernetes 集群里。&lt;/p&gt;
&lt;p&gt;如果这些环境没有限制出站访问，Next.js 进程可能看得到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;169.254.169.254&lt;/code&gt; 这类云元数据地址。&lt;/li&gt;
&lt;li&gt;内网 IP 段。&lt;/li&gt;
&lt;li&gt;只在 VPC 内暴露的服务。&lt;/li&gt;
&lt;li&gt;Redis、Elasticsearch、Prometheus、Grafana 等内部组件。&lt;/li&gt;
&lt;li&gt;Kubernetes Service、Pod 或管理端点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 SSRF 的危险不只在 Next.js 本身，而在它所在网络里能访问什么。&lt;/p&gt;
&lt;h2 id=&#34;如何判断是否受影响&#34;&gt;如何判断是否受影响
&lt;/h2&gt;&lt;p&gt;第一步，看 &lt;code&gt;next&lt;/code&gt; 版本。&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;npm ls next
&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;pnpm why next
&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;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;cat package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat package-lock.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat pnpm-lock.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat yarn.lock
&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;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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;= 13.4.13 &amp;lt; 15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;= 16.0.0 &amp;lt; 16.2.5
&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;p&gt;重点关注这些情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;next start&lt;/code&gt; 运行生产服务。&lt;/li&gt;
&lt;li&gt;使用自定义 Node.js server 承载 Next.js。&lt;/li&gt;
&lt;li&gt;Docker 镜像里直接启动 Next.js server。&lt;/li&gt;
&lt;li&gt;Kubernetes / ECS / VPS / 裸机自托管。&lt;/li&gt;
&lt;li&gt;反向代理后面仍然直接暴露 Next.js origin。&lt;/li&gt;
&lt;li&gt;应用所在网络能访问内部服务或云元数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果应用部署在 Vercel，按官方公告不受这个漏洞影响。但依然建议保持 Next.js 版本更新，因为同一批版本里可能还修复了其他问题。&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;15.5.16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;16.2.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&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;npm install next@15.5.16
&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;或如果使用 16.x：&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;npm install next@16.2.5
&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;pnpm：&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;pnpm add next@15.5.16
&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;pnpm add next@16.2.5
&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;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;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run start
&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;或按你的 CI/CD 流程重新构建 Docker 镜像并发布。&lt;/p&gt;
&lt;p&gt;如果你的项目锁定在 14.x 或 15.x，不建议为了修漏洞仓促跨大版本到 16.x。更稳妥的做法是先升级到 &lt;code&gt;15.5.16&lt;/code&gt; 这一修复线，完成测试和发布后，再规划大版本升级。&lt;/p&gt;
&lt;h2 id=&#34;临时缓解措施&#34;&gt;临时缓解措施
&lt;/h2&gt;&lt;p&gt;如果暂时不能升级，安全公告给出的核心思路是：不要把 origin server 直接暴露给不可信网络；如果不需要 WebSocket upgrade，就在反向代理或负载均衡层阻断；同时尽量限制 origin 的出站访问。&lt;/p&gt;
&lt;p&gt;可以考虑这些缓解方向：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不直接暴露 Next.js origin server。&lt;/li&gt;
&lt;li&gt;在 Nginx、Ingress、ALB、Cloudflare 等入口层过滤不需要的 WebSocket upgrade。&lt;/li&gt;
&lt;li&gt;如果业务不使用 WebSocket，直接拒绝带有 upgrade 语义的请求。&lt;/li&gt;
&lt;li&gt;对应用服务器做 egress 限制，禁止访问云元数据地址和敏感内网段。&lt;/li&gt;
&lt;li&gt;用云平台能力启用更安全的元数据访问模式，例如要求 token 的元数据服务。&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;这个漏洞主要影响机密性，所以排查重点是“有没有被用来访问内部资源”。&lt;/p&gt;
&lt;p&gt;建议关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web 访问日志中异常的 &lt;code&gt;Upgrade&lt;/code&gt;、&lt;code&gt;Connection&lt;/code&gt;、&lt;code&gt;Host&lt;/code&gt;、路径和来源 IP。&lt;/li&gt;
&lt;li&gt;反向代理或负载均衡日志中异常的 WebSocket upgrade 请求。&lt;/li&gt;
&lt;li&gt;Next.js 服务附近的异常出站连接。&lt;/li&gt;
&lt;li&gt;云元数据服务访问日志或凭据使用记录。&lt;/li&gt;
&lt;li&gt;内网管理服务、监控系统、缓存、搜索服务的异常访问。&lt;/li&gt;
&lt;li&gt;IAM 临时凭据、访问密钥、token 是否有异常调用。&lt;/li&gt;
&lt;li&gt;容器或主机上是否出现异常进程、下载行为或横向移动迹象。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果怀疑被利用，建议按泄露场景处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保留日志和现场。&lt;/li&gt;
&lt;li&gt;轮换可能暴露的云凭据、API key、数据库密码和 session secret。&lt;/li&gt;
&lt;li&gt;检查云账号最近的 API 调用。&lt;/li&gt;
&lt;li&gt;检查内网服务访问记录。&lt;/li&gt;
&lt;li&gt;重建受影响容器或主机。&lt;/li&gt;
&lt;li&gt;复查出站访问策略和元数据保护。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;这和-reactnextjs-rce-不是一回事&#34;&gt;这和 React/Next.js RCE 不是一回事
&lt;/h2&gt;&lt;p&gt;容易混淆的一点是，CVE-2026-44578 是 Next.js WebSocket upgrade SSRF，不是之前 React Server Components 相关的 RCE。&lt;/p&gt;
&lt;p&gt;它的核心影响是让服务器向攻击者指定的内部或外部地址发请求，主要风险是信息泄露和内部资源探测。&lt;/p&gt;
&lt;p&gt;而 React Server Components 相关 RCE 则属于代码执行风险，攻击后果和修复范围不同。&lt;/p&gt;
&lt;p&gt;所以排查时不要只看“Next.js 有漏洞”这个大标题，要把具体 CVE、影响版本、部署模式和修复版本对应起来。&lt;/p&gt;
&lt;h2 id=&#34;哪些团队要优先处理&#34;&gt;哪些团队要优先处理
&lt;/h2&gt;&lt;p&gt;优先级最高的是这些环境：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自托管 Next.js 生产站点。&lt;/li&gt;
&lt;li&gt;运行在云主机、容器、Kubernetes 或内网环境。&lt;/li&gt;
&lt;li&gt;应用服务器可以访问云元数据服务。&lt;/li&gt;
&lt;li&gt;应用服务器能访问内部管理后台、数据库、缓存或监控系统。&lt;/li&gt;
&lt;li&gt;直接暴露 &lt;code&gt;next start&lt;/code&gt; origin server。&lt;/li&gt;
&lt;li&gt;使用老版本 &lt;code&gt;next&lt;/code&gt;，且升级流程不清晰。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;优先级相对较低的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全部署在 Vercel 的应用。&lt;/li&gt;
&lt;li&gt;已升级到修复版本的应用。&lt;/li&gt;
&lt;li&gt;origin server 不直接暴露，且入口层已经阻断不需要的 WebSocket upgrade。&lt;/li&gt;
&lt;li&gt;出站网络严格受控，无法访问敏感内网资源。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但“优先级较低”不等于可以不升级。Next.js 是高频暴露组件，框架版本长期落后会叠加更多风险。&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;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 确认所有仓库的 &lt;code&gt;next&lt;/code&gt; 版本。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 查出所有自托管部署，不只看 Vercel 项目。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 标记使用 &lt;code&gt;next start&lt;/code&gt; 或内置 Node.js server 的服务。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 升级到 &lt;code&gt;15.5.16&lt;/code&gt;、&lt;code&gt;16.2.5&lt;/code&gt; 或更高版本。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 重新构建并发布生产镜像。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 在入口层阻断不需要的 WebSocket upgrade。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 限制应用服务器访问云元数据和敏感内网段。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 检查近期异常 upgrade 请求和出站访问。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 轮换疑似暴露的凭据。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 把 Next.js 安全更新纳入依赖更新流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;CVE-2026-44578 是一个需要认真处理的 Next.js 高危 SSRF 漏洞。&lt;/p&gt;
&lt;p&gt;它不影响 Vercel 托管部署，但影响范围覆盖大量自托管 Next.js 应用：&lt;code&gt;13.4.13&lt;/code&gt; 到 &lt;code&gt;15.5.16&lt;/code&gt; 之前，以及 &lt;code&gt;16.0.0&lt;/code&gt; 到 &lt;code&gt;16.2.5&lt;/code&gt; 之前。漏洞触发点在 WebSocket upgrade 处理路径，攻击者可能让服务器代理访问内部或外部地址，进而暴露内网服务或云元数据端点。&lt;/p&gt;
&lt;p&gt;最直接的修复方式是升级到 &lt;code&gt;15.5.16&lt;/code&gt; 或 &lt;code&gt;16.2.5&lt;/code&gt;。临时缓解则是不要直接暴露 origin server，阻断不需要的 WebSocket upgrade，并限制应用服务器的出站访问。&lt;/p&gt;
&lt;p&gt;对运维团队来说，重点不是只看 CVE 分数，而是看你的 Next.js 服务所在网络能访问什么。SSRF 的真实风险，往往取决于服务器背后有哪些内网资源和云权限。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vercel/next.js/security/advisories/GHSA-c4j6-fc7j-m34r&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Advisory：GHSA-c4j6-fc7j-m34r&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-44578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD：CVE-2026-44578&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://security.snyk.io/vuln/SNYK-JS-NEXT-16638682&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snyk：SNYK-JS-NEXT-16638682&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ssh-keysign-pwn（CVE-2026-46333）解读：Linux 本地信息泄露、SSH 主机密钥与 /etc/shadow 风险</title>
        <link>https://knightli.com/2026/05/17/ssh-keysign-pwn-cve-2026-46333/</link>
        <pubDate>Sun, 17 May 2026 09:29:03 +0800</pubDate>
        
        <guid>https://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://knightli.com/2026/05/15/nginx-rift-cve-2026-42945/</link>
        <pubDate>Fri, 15 May 2026 17:55:42 +0800</pubDate>
        
        <guid>https://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://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://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://knightli.com/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</link>
        <pubDate>Fri, 15 May 2026 13:18:01 +0800</pubDate>
        
        <guid>https://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>
