🎯 CVE-2026-43500 深度技术分析:漏洞根因 · PoC/EXP · 检测指纹
CVE-2026-43500 深度技术分析
摘要:CVE-2026-43500 是 Linux 内核 AF_RXRPC 子系统中一处由共享页片段(shared page fragments)处理不严谨导致的本地提权/页缓存污染漏洞,CVSS 评分为 7.8,严重性为 High。其核心问题在于 rxrpc 处理 DATA/RESPONSE 报文时,仅在 skb_cloned() 为真时才执行 skb 拷贝/线性化;当 skb 未克隆却带有 SKBFL_SHARED_FRAG 或 frag_list 时,会进入就地解密路径,使共享页被直接写入。本文分析其根因、危害与缓解方案。
📌 漏洞概述
- CVE 编号:CVE-2026-43500(NVD-Latest)
- CVSS 评分:7.8 / High
- 受影响产品:Linux Kernel(AF_RXRPC / rxrpc 模块)
- 漏洞类型:共享页片段(Shared Page Fragment)处理不当,可能造成页缓存污染、越权写文件与本地权限提升
- CISA KEV:尚未收录该漏洞
- 公开 PoC/EXP:目前无完整公开 EXP,但已有 PoC/缓解仓库出现,例如
attaattaatta/CVE-2026-43500和vorkampfer/dirty_frag_mitigation
该漏洞由 rxrpc 接收路径中的 DATA 报文处理函数 rxrpc_input_call_event() 与 RESPONSE 校验函数 rxrpc_verify_response() 触发。漏洞所处的代码逻辑在网络安全操作(security ops)调用前,用于决定是否将 skb 拷贝为线性独占数据。
🔬 漏洞根因分析
AF_RXRPC 是 Linux 内核中的 RxRPC 协议实现,常用于 AFS 分布式文件系统。其 DATA 与 RESPONSE 报文在进入安全层进行认证/解密时,需要保证 skb 所承载的数据页是内核独占、可安全就地改写的。
补丁描述指出:rxrpc_input_call_event() 与 rxrpc_verify_response() 原有逻辑只检查 skb_cloned()。如果 skb 被克隆,说明 skb 结构本身存在多个引用,此时内核会先将其复制/线性化后再交给 security ops。然而,skb_cloned() 只反映 skb 控制块或数据缓冲区的引用状态,并不能反映 page fragment 的外部共享状态。
在 Linux 网络栈中,skb 可以通过 skb_shinfo(skb)->frag_list 连接多个子 skb,也可以通过 SKBFL_SHARED_FRAG 标记表示其 frag 页被外部共享。典型场景包括:
- 用户态通过
splice()将文件页/管道页直接送入 UDP 套接字发送队列,由__ip_append_data组装 skb,从而引入外部共享的 page fragment; - skb 带有非空
frag_list,且各子 skb 的部分 page fragment 仍被其他引用持有; - 本地回环(loopback)或 UDP 转发路径中,整个 skb 未发生常规 clone,但其携带的页框已不属于内核独占。
当存在这些情况时,旧的条件判断会放行,使 skb 进入就地解密路径。security ops 随后通过 skb_to_sgvec() 将 skb 的 frag 页直接映射到 AEAD/skcipher 的 scatter-gather list 中。加密/解密操作会直接对这些页框进行 DMA 写入。如果该页框同时也被页缓存、只读文件映射或用户态进程引用,内核就相当于在受保护的数据页上执行了一次越权写操作。
这正是“dirty frag”类问题的根源:skb_cloned() 不是判断“页是否可写”的充分条件。一个 skb 完全可以是未克隆状态,但其 frag 页的所有权仍被 page cache 或 pipe 所共享。攻击者可以将已知或可控内容的文件页通过 splice() 注入 UDP 报文,再让该报文进入 rxrpc security ops 的就地解密路径,从而在共享页上制造非法写入。
修复的核心思路是扩展 unshare/线性化判断条件。补丁将原有的 skb_cloned() 判断扩展为同时检查 skb_has_frag_list() 与 skb_has_shared_frag()。一旦发现 frag_list 或共享 frag 标记,就先把 skb 拷贝/线性化为内核独占缓冲,再交 security ops 处理。这样可以覆盖 splice-loopback 等外部共享页来源,同时保留 NIC page_pool、GRO 等内核私有 frag 的零拷贝快速路径。
💥 影响与危害
- 页缓存污染:就地加解密写入的是外部共享 page fragment,可能覆盖 page cache 中的文件数据,造成文件内容被静默篡改。
- 权限提升:如果攻击者能让受保护页成为只读文件(如 setuid 程序、系统配置)的页缓存页,并通过恶意构造的 rxrpc 报文触发解密写入,则可能实现 Dirty COW / Dirty Pipe 式的越权文件修改,进而本地提权。
- 完整性破坏:即使无法精确控制写入内容,攻击者也可能利用已知明文或可预测的会话数据,破坏机密性/完整性保护机制。
- 拒绝服务:共享页被意外改写可能导致内核内存状态不一致、文件系统元数据损坏或系统崩溃。
由于漏洞位于 rxrpc 模块,攻击者需要具备本机访问能力,并能构造/影响进入 rxrpc 处理路径的 UDP skb。若系统允许低权限用户触发加载或使用 AF_RXRPC,则风险进一步放大。目前该漏洞未被 CISA KEV 收录,也没有公开完整 EXP,但已有缓解脚本和 PoC 仓库出现,实际武器化利用可能随时出现。
🛡️ 修复与缓解
- 升级内核:首要措施是安装包含补丁
rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present的内核版本。各 Linux stable/LTS 分支应尽快 backport。 - 禁用/blocklist 相关模块:如果系统不需要 AFS/RxRPC,可禁用
rxrpc模块;社区 mitigation 脚本还建议同时 blocklistesp4、esp6,因为相关 ESP/XFRM 路径与 dirty frag/fragnesia 类漏洞存在相同的补丁面。 - 使用现有缓解脚本:可用
vorkampfer/dirty_frag_mitigation仓库中的dirty_frag_fix.sh --check检查当前模块加载状态与 blocklist 配置。 - 限制本地攻击面:通过内核模块策略、SELinux/AppArmor 或 seccomp 限制低权限用户触发
AF_RXRPC/splice()组合能力。 - 监控安全公告:关注 Linux stable 邮件列表与发行版 CVE 跟踪系统,及时部署官方 backport。
🧪 PoC 复现
从 GitHub 公开仓库抓取的实际 PoC 代码(仓库)。
📋 代码元数据语言md来源vorkampfer/dirty_frag_mitigation针对性✅ 已验证与漏洞相关(代码含 CVE 引用)依赖见代码注释/README用法详见代码注释中的使用说明
# dirty_frag_mitigation
1. A bash script for mitigating linux dirty frag exploit CVE-2026-43500
2. Works on all Debian/Ubuntu Arch based platforms i.e. Kali,ParrotSec,
BlackArch
3. Added --check to run as non-root user. Added fragnesia support as it shares the same patch surface with dirtyfrag.
## Example usage:
```
ᐅ dirty_frag_fix.sh --check
[*] Checking dirtyfrag mitigation status (non-root check mode)...
[*] Config file: /etc/modprobe.d/dirtyfrag.conf
[*] install esp4 /bin/false: yes
[*] install esp6 /bin/false: yes
[*] install rxrpc /bin/false: yes
[*] Any vulnerable modules currently loaded: no
[+] Likely mitigated against dirtyfrag based on module blocklist and load state.
[*] Note: This same module-level mitigation also reduces fragnesia exposure on the same ESP/XFRM surface.
[*] Note: Fragnesia is a separate bug with its own patch,
but shares mitigation surface with dirtyfrag.⚔️ EXP 利用代码
截至分析时,Exploit-DB 未收录该 CVE 的公开利用代码。可利用上述 PoC 进行验证,或关注 Exploit-DB 更新。
🕵️ 检测指纹
当前规则库未收录针对该 CVE 的专用检测规则。建议:
- 根据漏洞根因编写 Nuclei 检测模板
- 在 WAF/IDS 中配置针对漏洞特征的规则
- 关注漏洞指纹库更新
🤖 本文由漏洞情报系统自动聚合生成 · 2026-08-09 08:48 · 数据源: NVD/GitHub-Advisory/OSV/CISA-KEV/Exploit-DB/PoC-in-GitHub + 检测规则库