<?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/tags/%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/</link>
        <description>Recent content in 漏洞分析 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Fri, 22 May 2026 15:16:59 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/index.xml" rel="self" type="application/rss+xml" /><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>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>Copy Fail 漏洞 CVE-2026-31431：Linux 内核文件复制路径中的容器逃逸风险</title>
        <link>https://knightli.com/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/</link>
        <pubDate>Fri, 01 May 2026 18:42:34 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/</guid>
        <description>&lt;p&gt;Copy Fail 是一个影响 Linux 内核文件复制路径的漏洞，编号为 &lt;code&gt;CVE-2026-31431&lt;/code&gt;。
Bugcrowd 的分析把它称为一个值得关注的内核级问题：在特定条件下，非特权用户可以利用文件复制相关逻辑触发越权写入，进而造成权限提升或容器逃逸。&lt;/p&gt;
&lt;p&gt;从风险角度看，它不是普通应用层漏洞。
问题发生在内核处理文件复制和页面缓存的路径上，因此影响面会延伸到容器、共享主机、CI/CD Runner、PaaS 平台和多租户 Linux 环境。
如果攻击者已经能在系统里运行低权限代码，漏洞就可能成为进一步突破隔离边界的跳板。&lt;/p&gt;
&lt;h2 id=&#34;漏洞大致发生在哪里&#34;&gt;漏洞大致发生在哪里
&lt;/h2&gt;&lt;p&gt;Copy Fail 关联的是 Linux 内核中的文件复制能力。
现代 Linux 提供了多种高效复制路径，例如 &lt;code&gt;copy_file_range&lt;/code&gt;、splice 类路径以及不同文件系统之间的数据复制优化。
这些机制的目标是减少用户态和内核态之间的数据搬运，提高大文件复制性能。&lt;/p&gt;
&lt;p&gt;问题在于，高性能复制路径通常会复用页缓存、文件偏移、权限检查和文件系统回调。
如果其中某个边界条件处理不严，内核可能在错误的权限上下文里执行写入，或者把本不应该被修改的数据页暴露给攻击者控制。&lt;/p&gt;
&lt;p&gt;Copy Fail 的核心风险可以概括为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;攻击者不需要 root 权限；&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;这也是它被重点讨论的原因。
容器安全依赖 Linux 内核提供隔离能力，一旦内核路径本身出现越权写入，容器边界就会变得脆弱。&lt;/p&gt;
&lt;h2 id=&#34;为什么容器场景更敏感&#34;&gt;为什么容器场景更敏感
&lt;/h2&gt;&lt;p&gt;容器并不是虚拟机。
容器内进程和宿主机共享同一个 Linux 内核，只是通过 namespace、cgroup、capability、seccomp、AppArmor/SELinux 等机制做隔离。&lt;/p&gt;
&lt;p&gt;如果漏洞发生在用户态服务里，通常只影响某个容器或某个进程。
但如果漏洞发生在内核里，尤其是可以被非特权用户触发的内核漏洞，攻击者可能从容器内部影响宿主机。&lt;/p&gt;
&lt;p&gt;Copy Fail 的危险点就在这里。
很多平台允许用户提交构建任务、运行脚本、启动容器或执行插件。
攻击者只要能在容器里运行代码，就可能尝试利用内核文件复制路径突破隔离。&lt;/p&gt;
&lt;p&gt;高风险环境包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kubernetes 集群中的不可信工作负载；&lt;/li&gt;
&lt;li&gt;CI/CD 平台的共享 Runner；&lt;/li&gt;
&lt;li&gt;允许用户上传代码执行的沙箱平台；&lt;/li&gt;
&lt;li&gt;多租户 Linux 主机；&lt;/li&gt;
&lt;li&gt;容器化 PaaS；&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;这类漏洞的判断不能只看发行版名称。
同一个 Ubuntu、Debian、RHEL、Fedora 或 Arch 版本，是否受影响取决于当前实际运行的内核包，以及发行版是否已经回补补丁。&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-31431&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;云厂商或托管平台是否已经完成宿主机内核修复。&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;/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;然后查看发行版安全公告、内核 changelog 或云平台公告。
不要只根据主版本号判断是否安全，因为很多企业发行版会把安全补丁回补到旧版本内核里。&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;禁止不可信用户运行特权容器；&lt;/li&gt;
&lt;li&gt;避免给容器挂载敏感宿主机路径；&lt;/li&gt;
&lt;li&gt;收紧容器 capability，尤其不要随意授予 &lt;code&gt;CAP_SYS_ADMIN&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;使用 seccomp、AppArmor 或 SELinux 限制危险系统调用和文件访问；&lt;/li&gt;
&lt;li&gt;将不可信工作负载迁移到隔离更强的虚拟机；&lt;/li&gt;
&lt;li&gt;对 CI/CD Runner 做按任务销毁，避免长期复用同一宿主机；&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;优先修复：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对外提供容器执行能力的平台；&lt;/li&gt;
&lt;li&gt;运行不可信代码的 CI/CD 节点；&lt;/li&gt;
&lt;li&gt;多租户 Kubernetes 节点；&lt;/li&gt;
&lt;li&gt;有用户自定义插件或脚本执行能力的系统；&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;只运行可信服务的内网主机；&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;ol&gt;
&lt;li&gt;盘点所有 Linux 主机和容器节点；&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;/li&gt;
&lt;li&gt;保留变更记录，方便后续审计。&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;/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;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Copy Fail / &lt;code&gt;CVE-2026-31431&lt;/code&gt; 的重点不是某个应用崩溃，而是 Linux 内核文件复制路径中的权限边界问题。
它让非特权代码有机会触碰更高权限的数据写入路径，因此在容器和多租户环境里尤其值得重视。&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;/ul&gt;
&lt;p&gt;对个人桌面来说，它可能不是马上需要恐慌的问题。
但对运行容器平台、CI/CD、沙箱和共享主机的团队来说，应该把它当作高优先级内核安全更新处理。&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.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bugcrowd：What We Know About Copy Fail CVE-2026-31431&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://copy.fail/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Copy Fail 官方说明&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
