<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CVE-2026-46331 on 逍遥笔记</title><link>https://blog.7qiang.com/tags/cve-2026-46331/</link><description>Recent content in CVE-2026-46331 on 逍遥笔记</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>逍遥笔记</copyright><lastBuildDate>Mon, 29 Jun 2026 18:00:00 +0800</lastBuildDate><atom:link href="https://blog.7qiang.com/tags/cve-2026-46331/index.xml" rel="self" type="application/rss+xml"/><item><title>pedit COW：一场在页面缓存里悄无声息的 root 政变</title><link>https://blog.7qiang.com/posts/cve-2026-46331-pedit-cow/</link><pubDate>Mon, 29 Jun 2026 18:00:00 +0800</pubDate><guid>https://blog.7qiang.com/posts/cve-2026-46331-pedit-cow/</guid><description>&lt;img src="https://blog.7qiang.com/blog-cover-cyber-mask.gif" alt="Featured image of post pedit COW：一场在页面缓存里悄无声息的 root 政变" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;真正的剑客不在杯中寻毒，而在茶里看见破绽。内核亦然。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="零一句话概括"&gt;零、一句话概括
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;CVE-2026-46331&lt;/strong&gt;（绰号 “pedit COW”）是 Linux 内核流量控制子系统中的一个越界写入漏洞。攻击者利用 &lt;code&gt;act_pedit&lt;/code&gt; 模块在 Copy-on-Write 阶段的校验缺陷，对共享页面缓存进行越界写入，在不触碰磁盘文件的情况下毒化 &lt;code&gt;/bin/su&lt;/code&gt; 的内存映射，最终以非特权用户身份获取 root 权限。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CVSS 评分：7.8（HIGH）｜攻击复杂度：低｜利用条件：本地、非特权用户在启用了非特权用户命名空间的系统上&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;漏洞曝出不到 24 小时，公开 PoC 即现身 GitHub。这是一场从 mailing list 上被低估的「例行数据损坏补丁」到 weaponized exploit 的经典演变。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一先复盘cow-这一类漏洞的血脉传承"&gt;一、先复盘：CoW 这一类漏洞的血脉传承
&lt;/h2&gt;&lt;p&gt;如果你对 Linux 内核的 page-cache 漏洞稍有涉猎，应该已经对这个家族不陌生了：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;漏洞名称&lt;/th&gt;
 &lt;th&gt;CVE&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;Dirty Pipe&lt;/td&gt;
 &lt;td&gt;CVE-2022-0847&lt;/td&gt;
 &lt;td&gt;2022&lt;/td&gt;
 &lt;td&gt;splice() 未重置 pipe buffer flags，向已释放的 page cache 写入&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Copy Fail&lt;/td&gt;
 &lt;td&gt;CVE-2024-XXXX&lt;/td&gt;
 &lt;td&gt;2024&lt;/td&gt;
 &lt;td&gt;copy_file_range() 的 CoW 断裂&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;DirtyClone&lt;/td&gt;
 &lt;td&gt;CVE-2026-XXXX&lt;/td&gt;
 &lt;td&gt;2026&lt;/td&gt;
 &lt;td&gt;io_uring 零拷贝路径越过 page 所有权检查&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Dirty Frag&lt;/td&gt;
 &lt;td&gt;CVE-2026-XXXX&lt;/td&gt;
 &lt;td&gt;2026&lt;/td&gt;
 &lt;td&gt;碎片整理过程中 page 引用计数竞争&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;pedit COW&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;CVE-2026-46331&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;2026&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;act_pedit 运行时偏移解析绕过越界检查&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;它们的本质是同一个「脉门」：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;内核在某条快速路径上对页面做了写操作，但这个页面并不归它独占。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这不是内存破坏（memory corruption），这是&lt;strong&gt;逻辑漏洞&lt;/strong&gt;。不涉及 ROP、不涉及 KASLR 绕过、不涉及堆喷。只需要知道哪一页被共享，然后把 payload 写进去——文件完整性校验会告诉你一切正常，而你早已是 root。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二漏洞机制一封被投毒的信信封完好无损"&gt;二、漏洞机制：一封被投毒的信，信封完好无损
&lt;/h2&gt;&lt;h3 id="21-act_pedit-的正常工作流"&gt;2.1 act_pedit 的正常工作流
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;tc&lt;/code&gt;（traffic control）是 Linux 的流量整形瑞士军刀。其中 &lt;code&gt;pedit&lt;/code&gt; action 可以在数据包经过时，实时修改包头字段——比如改 TTL、改 DSCP、改 IP 地址。&lt;/p&gt;
&lt;p&gt;当你配置一条 pedit 规则并触发它时，内核调用链大致是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tcf_pedit_act()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → pedit_skb_hdr_offset() // 计算偏移
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → tcf_pedit_act() 内部 // 校验写入范围
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 如果页面是共享的（refcount &amp;gt; 1）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 创建私有副本 (CoW)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 写入数据
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;理想情况下，CoW 保护在写入前完成，shared page 永远不被污染。&lt;/p&gt;
&lt;h3 id="22-断裂点在哪里"&gt;2.2 断裂点在哪里？
&lt;/h3&gt;&lt;p&gt;问题出在&lt;strong&gt;两次偏移解析之间&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;第一次校验发生在 &lt;code&gt;tcf_pedit_act()&lt;/code&gt; 计算 &lt;code&gt;nkeys&lt;/code&gt; 时，它检查所有 key 的 &lt;code&gt;offset&lt;/code&gt;、&lt;code&gt;val&lt;/code&gt;、&lt;code&gt;mask&lt;/code&gt; 组合后的总写入范围是否合法。此时对于某些特殊的 key 类型（偏移在运行时依赖实际数据包头内容才能确定），内核使用的是一种「预留槽」机制——先分配了一个最大范围，但没有精确锁定每个 key 的最终落点。&lt;/p&gt;
&lt;p&gt;第二次，也就是实际写入时，这些 key 的偏移被&lt;strong&gt;运行时解析&lt;/strong&gt;（例如基于 VLAN tag 层数动态计算）。如果运行时解析出的偏移超出了第一次校验时预留的私有副本范围——&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;写入操作就越界落回了共享的 page cache 页&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;用一句话讲：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;它量好尺寸才去借西装，结果扣子缝歪了，扎到了别人的皮肤上。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="23-投毒链条"&gt;2.3 投毒链条
&lt;/h3&gt;&lt;p&gt;攻击者的完整攻击链：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 创建用户命名空间 → 获得 namespace-local CAP_NET_ADMIN
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 加载 act_pedit 模块（如果未加载）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 打开 /bin/su（setuid root）→ 页面进入 page cache（共享状态）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 构造 tc pedit 规则，精确计算偏移使写入落在 /bin/su 的内存页中
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5. 触发规则，向 cached page 注入 shellcode / 修改逻辑
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;6. 执行被投毒的 /bin/su → 内核看到 setuid bit + 文件未修改（磁盘是干净的）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 实际执行的是被污染的内存页中的代码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 获得 root shell
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;精妙之处&lt;/strong&gt;：它不需要写 &lt;code&gt;/etc/passwd&lt;/code&gt;、不需要改 sudoers、不触发任何文件系统级别的审计日志。整个攻击在内存中完成，文件哈希不变，AIDE/Tripwire 静默。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三为什么这次特别危险"&gt;三、为什么这次特别危险？
&lt;/h2&gt;&lt;h3 id="31-入口门槛低"&gt;3.1 入口门槛低
&lt;/h3&gt;&lt;p&gt;过去的 page-cache 漏洞往往需要特定条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dirty Pipe 需要 pipe + splice 的配合&lt;/li&gt;
&lt;li&gt;DirtyClone 需要 io_uring 支持&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 pedit COW 的入口是 &lt;strong&gt;非特权用户命名空间 + 可加载的内核模块&lt;/strong&gt;。在主流发行版的默认配置下，这两项都是&lt;strong&gt;开启&lt;/strong&gt;的：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;发行版&lt;/th&gt;
 &lt;th&gt;unprivileged userns&lt;/th&gt;
 &lt;th&gt;act_pedit 可用&lt;/th&gt;
 &lt;th&gt;默认可被利用？&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;RHEL 8/9/10&lt;/td&gt;
 &lt;td&gt;✅ 默认开启&lt;/td&gt;
 &lt;td&gt;✅ 内核内置或可加载&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Debian 11/12/13 (trixie)&lt;/td&gt;
 &lt;td&gt;✅ 默认开启&lt;/td&gt;
 &lt;td&gt;✅ 可加载&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Ubuntu 18.04-24.04&lt;/td&gt;
 &lt;td&gt;✅ 默认开启&lt;/td&gt;
 &lt;td&gt;✅ 可加载&lt;/td&gt;
 &lt;td&gt;✅（24.04 需绕 AppArmor）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Ubuntu 26.04&lt;/td&gt;
 &lt;td&gt;✅ 内核支持&lt;/td&gt;
 &lt;td&gt;✅ 可加载&lt;/td&gt;
 &lt;td&gt;⚠️ AppArmor 默认阻断 userns&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="32-检测盲区"&gt;3.2 检测盲区
&lt;/h3&gt;&lt;p&gt;传统检测手段几乎全部失效：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;文件完整性监控&lt;/strong&gt;（AIDE/Samhain/Tripwire）：磁盘文件未被修改 → 通过&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;auditd 文件访问日志&lt;/strong&gt;：只监控 syscall 层面的 open/read/write → 不覆盖 page cache 操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;杀毒软件&lt;/strong&gt;：无法扫描内核态的内存写入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EDR/HIDS&lt;/strong&gt;：除非 hook 了内核函数，否则看不到 &lt;code&gt;tcf_pedit_act&lt;/code&gt; 内部的越界写入&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;唯一有效的检测是&lt;strong&gt;行为审计&lt;/strong&gt;：一个非特权用户突然执行了 &lt;code&gt;tc&lt;/code&gt; 命令并带着 &lt;code&gt;pedit&lt;/code&gt; action，这本身就是异常信号。但攻击者可以在投毒后清理 tc 规则，痕迹只留在一瞬间。&lt;/p&gt;
&lt;h3 id="33-时间线令人不安"&gt;3.3 时间线令人不安
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2026-05-23 补丁出现在 netdev mailing list（标注为&amp;#34;数据损坏修复&amp;#34;）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2026-06-16 CVE 编号分配（补丁合入主线）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2026-06-17 公开 PoC 发布
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2026-06-26 The Hacker News 报道
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2026-06-29 本文发布时，大量发行版仍未推送修复
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;3 周&lt;/strong&gt;——从补丁公开到武器化利用。如果一个漏洞的补丁在 mailing list 上躺了三周而无人重视，那它不是被遗忘，而是被忽视了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四攻防实操"&gt;四、攻防实操
&lt;/h2&gt;&lt;h3 id="41-复现环境poc-已验证"&gt;4.1 复现环境（PoC 已验证）
&lt;/h3&gt;&lt;p&gt;根据公开 PoC 的测试结果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RHEL 10&lt;/strong&gt;：直接提权成功，无任何阻断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debian 13 (trixie)&lt;/strong&gt;：直接提权成功&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ubuntu 24.04&lt;/strong&gt;：需通过 AppArmor profile 路由（利用仍可用的 profiles），提权成功&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ubuntu 26.04&lt;/strong&gt;：AppArmor 阻断默认 user namespace 创建，exploit 在此环境下失败（但内核本身仍然脆弱）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PoC 地址：&lt;a class="link" href="https://github.com/sgkdev/packet_edit_meme" target="_blank" rel="noopener"
 &gt;github.com/sgkdev/packet_edit_meme&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="42-快速自查"&gt;4.2 快速自查
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 检查内核版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uname -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 检查 act_pedit 模块是否可加载（存在 .ko 文件即危险）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find /lib/modules/&lt;span class="k"&gt;$(&lt;/span&gt;uname -r&lt;span class="k"&gt;)&lt;/span&gt; -name &lt;span class="s1"&gt;&amp;#39;*act_pedit*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3. 检查 unprivileged user namespaces 状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Debian/Ubuntu:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /proc/sys/kernel/unprivileged_userns_clone
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# RHEL/CentOS:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /proc/sys/user/max_user_namespaces
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 4. 综合判定：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# - 内核版本 &amp;lt; 修复版本（各发行版自行查询）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# - act_pedit 模块可用（.ko 存在或已加载）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# - unprivileged userns = 1（或 max_user_namespaces &amp;gt; 0）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# → 系统存在被利用条件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="43-立即处置两条防线双管齐下"&gt;4.3 立即处置：两条防线，双管齐下
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;防线一：阻断 act_pedit 模块加载&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 检查模块是否已加载&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lsmod &lt;span class="p"&gt;|&lt;/span&gt; grep act_pedit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 永 久阻止加载&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;install act_pedit /bin/true&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/modprobe.d/disable-act_pedit.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 如果已加载，立即卸载&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rmmod act_pedit 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此项操作不影响正常网络功能——除非你主动使用 &lt;code&gt;tc pedit&lt;/code&gt; 修改数据包头。绝大多数服务器不需要此功能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;防线二：禁用非特权用户命名空间&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Debian/Ubuntu（立即生效 + 持久化）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sysctl -w kernel.unprivileged_userns_clone&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;kernel.unprivileged_userns_clone = 0&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/sysctl.d/99-disable-userns.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# RHEL/CentOS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo sysctl -w user.max_user_namespaces&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;user.max_user_namespaces = 0&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/sysctl.d/99-disable-userns.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;⚠️ &lt;strong&gt;警告&lt;/strong&gt;：禁用 unprivileged userns 会破坏 rootless 容器（Podman rootless、Docker rootless）、部分 CI 沙箱、以及基于命名空间隔离的浏览器沙箱（Chromium/Firefox）。在生产环境操作前务必评估影响。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;防线三：升级内核并重启&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是唯一彻底的修复方案。对于无法立即重启的系统，前两条防线是救命稻草。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Ubuntu/Debian&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install linux-image-generic -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# RHEL/CentOS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum update kernel -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="44-事故后的取证思路"&gt;4.4 事故后的取证思路
&lt;/h3&gt;&lt;p&gt;如果怀疑已被入侵：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 检查 tc 规则中是否有异常的 pedit action&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tc -s filter show dev lo 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tc -s filter show dev eth0 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 清除页面缓存（会丢掉攻击痕迹，但至少确保当前运行的二进制是干净的）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3. 检查是否有异常 root shell 进程（如 /bin/su 的不正常子进程）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ps auxf &lt;span class="p"&gt;|&lt;/span&gt; grep -v grep &lt;span class="p"&gt;|&lt;/span&gt; grep -E &lt;span class="s1"&gt;&amp;#39;su|bash.*root&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 4. 全面取证：dump 内存、检查 auditd 日志时间线上的 tc 命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 但因攻击在内存中完成，磁盘取证价值有限。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 原则：发现被利用 → 视为完全失陷 → 重装系统，不是清理。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="五写在最后从补丁到武器中间到底差了什么"&gt;五、写在最后：从补丁到武器，中间到底差了什么？
&lt;/h2&gt;&lt;p&gt;这个漏洞最让人脊背发凉的，不是它的技术复杂度（实际上比 Dirty Pipe 更简单），而是&lt;strong&gt;信息差&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;5 月 23 日，补丁出现在 netdev mailing list，标题平淡无奇，归类为「数据损坏修复」。没有人标注 Security、没有人分配 CVE、没有人拉响警报。&lt;/p&gt;
&lt;p&gt;6 月 16 日，补丁合入主线，CVE 下发。&lt;/p&gt;
&lt;p&gt;6 月 17 日，exploit 发布。&lt;/p&gt;
&lt;p&gt;从 mailing list 到 weaponized PoC，跨度三周。而直到 6 月底，大量生产系统依然暴露。&lt;/p&gt;
&lt;p&gt;这不是 0day，这是 &lt;strong&gt;-21day&lt;/strong&gt;——防御方有 21 天的时间窗口，但没有人认出这是一道裂缝。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;安全社区需要反思的不只是代码质量，更是对补丁中「无关紧要的修复」的嗅觉。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;内核 page-cache 写入路径上的任何校验变更——哪怕是「修复数据损坏」——都应该自动触发安全团队的审视。因为在这个领域，数据损坏和权限提升之间的距离，往往只隔着一个 &lt;code&gt;setuid&lt;/code&gt; 位。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六资源链接"&gt;六、资源链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;NVD 页面：&lt;a class="link" href="https://nvd.nist.gov/vuln/detail/CVE-2026-46331" target="_blank" rel="noopener"
 &gt;CVE-2026-46331&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Red Hat 安全公告：&lt;a class="link" href="https://access.redhat.com/security/vulnerabilities/RHSB-2026-008" target="_blank" rel="noopener"
 &gt;RHSB-2026-008&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Debian 安全追踪：&lt;a class="link" href="https://security-tracker.debian.org/tracker/CVE-2026-46331" target="_blank" rel="noopener"
 &gt;CVE-2026-46331&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu 安全公告：&lt;a class="link" href="https://ubuntu.com/security/CVE-2026-46331" target="_blank" rel="noopener"
 &gt;CVE-2026-46331&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;公开 PoC：&lt;a class="link" href="https://github.com/sgkdev/packet_edit_meme" target="_blank" rel="noopener"
 &gt;github.com/sgkdev/packet_edit_meme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;原始补丁：&lt;a class="link" href="https://lists.openwall.net/netdev/2026/05/23/133" target="_blank" rel="noopener"
 &gt;netdev mailing list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The Hacker News 报道：&lt;a class="link" href="https://thehackernews.com/2026/06/new-linux-pedit-cow-exploit-enables.html" target="_blank" rel="noopener"
 &gt;New Linux pedit COW Exploit Enables Root Access by Poisoning Cached Binaries&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;section class="xiaoyao-contact-card" aria-label="联系逍遥"&gt;
 &lt;img class="xiaoyao-contact-card__qr" src="https://blog.7qiang.com/contact-qr.png" width="690" height="690" loading="lazy" decoding="async" alt="逍遥微信二维码"&gt;
 &lt;div class="xiaoyao-contact-card__content"&gt;
 &lt;h3 class="xiaoyao-contact-card__title"&gt;联系逍遥&lt;/h3&gt;
 &lt;p class="xiaoyao-contact-card__description"&gt;扫码添加微信，或点击下方按钮复制联系方式。&lt;/p&gt;
 &lt;div class="xiaoyao-contact-buttons" data-contact-buttons&gt;
 &lt;button class="xiaoyao-contact-button xiaoyao-contact-button--wechat" type="button" data-copy-contact="plus6566" data-copy-label="微信号"&gt;
 &lt;span class="xiaoyao-contact-button__label"&gt;微信&lt;/span&gt;
 &lt;span class="xiaoyao-contact-button__value"&gt;plus6566&lt;/span&gt;
 &lt;span class="xiaoyao-contact-button__status" data-copy-status&gt;点击复制&lt;/span&gt;
 &lt;/button&gt;
 &lt;button class="xiaoyao-contact-button xiaoyao-contact-button--qq" type="button" data-copy-contact="826215906" data-copy-label="QQ 号"&gt;
 &lt;span class="xiaoyao-contact-button__label"&gt;QQ&lt;/span&gt;
 &lt;span class="xiaoyao-contact-button__value"&gt;826215906&lt;/span&gt;
 &lt;span class="xiaoyao-contact-button__status" data-copy-status&gt;点击复制&lt;/span&gt;
 &lt;/button&gt;
 &lt;span class="xiaoyao-contact-feedback" role="status" aria-live="polite"&gt;&lt;/span&gt;
&lt;/div&gt;

 &lt;/div&gt;
&lt;/section&gt;

&lt;p&gt;进微信群请联系博主，各位觉得文章对你有帮助的话可否打赏一些呀~&lt;/p&gt;
&lt;hr&gt;</description></item></channel></rss>