🔥 CVE-2026-43500 深度独立研究:源码审计 · 二次发现 · 利用方案

🔥 高危漏洞深度独立研究 · CVSS ≥ 9.8

CVE-2026-43500 深度独立研究:源码审计 · 二次发现 · 利用方案

📊 4 来源🔍 源码审计🧪 PoC
NVD-LatestPoC-in-GitHubExploit-DB-RSSQualys Security Blog

🔍 源码独立审计

https://github.com/V4bel/dirtyfrag 源码进行独立审计(置信度 85%)。

🧬 根因独立理解

在Linux内核rxrpc协议实现中,net/rxrpc/input.c的rxrpc_input_call_event()和rxrpc_verify_response()负责处理收到的DATA和RESPONSE包,并将skb传给安全性操作(例如rxrpc_decrypt_packet)进行透明解密。在调用这些安全操作前,代码需要保证skb是线性且私有的,否则不能安全地在原地通过skb_to_sgvec构建分散/聚集列表并绑定内核页进行解密。原实现只检查了skb_cloned(skb)作为唯一条件,当skb被克隆过时才调用skb_linearize或skb_unshare,否则认为skb是安全的。但是,skb_cloned仅表示skb的共享引用计数被克隆,不表示其frag页是否被外部拥有或共享。一个skb可能未设置cloned,但它的frag页因为splice(2)从管道写入UDP套接字而带有SKBLFL_SHARED_FRAG标志,或者通过skb_has_frag_list()挂接了子skb。这两种情况都不会使skb_cloned为true,于是代码选择了直接使用原始skb进行解密。解密函数将skb中的frag页通过skb_to_sgvec映射到AEAD/skcipher的SGL,并就地写入解密结果。由于这些页是其他文件页的映射,共享给多个skb或用户进程,导致内核写入了非预期的共享页,破坏页缓存并可能泄露机密数据。补丁将检查条件扩展为skb_cloned(skb) || skb_has_frag_list(skb) || skb_has_shared_frag(skb),从而强制unshare。这是核心逻辑缺陷:对skb共享状态判断不完整。

🛤️ 漏洞触发链路

攻击者使用splice(2)将文件页填入pipe_buf,再通过sendto/sendmsg发送到目标主机的UDP socket,该socket与AF_RXRPC绑定。在路径__ip_append_data中,这些pipe页被作为skb frag加入,且标记SKBLFL_SHARED_FRAG,但skb->cloned未设置。数据包到达rxrpc层后,rxrpc_input_call_event()处理DATA包,或rxrpc_verify_response()处理RESPONSE包。由于skb_cloned()为false,不进行unshare,直接调用rxrpc安全解密例程。解密例程调用skb_to_sgvec将共享frag页映射到SGL,并使用AEAD/skcipher就地解密。解密结果写入这些页,而页同时映射到用户态文件,攻击者可以读取解密后的明文;或者通过页缓存污染使同一文件其他进程受害。整个过程无需root,本地用户即可构造特殊UDP包,导致敏感信息泄露或内核页被任意修改,为后续提权创造条件。

🔁 二次发现(同类漏洞/扩展攻击面)

  • net/rxrpc/input.c: rxrpc_input_packet() 及其他rxi_*分发函数: 如果在进入input_call_event前还有解密路径,同样可能忽略frag共享;应统一使用帮助函数判断skb共享状态。
  • net/rxrpc/security.c: rxrpc_secure_packet(): 发送方向若使用带共享frag的skb进行加密,同样会修改共享页,需在加密前unshare。
  • net/rxrpc/skbuff.c: rxrpc_new_skb(): 若skb来自skb_copy或frag_list扩展,需要确保分配时带有私有页;建议构造专用skb线性化函数。

🩹 修复完整性分析

补丁修改了rxrpc_input_call_event()和rxrpc_verify_response()两个关键入口,添加了skb_has_frag_list()和skb_has_shared_frag()判断,能够捕获大多数通过splice或frag_list构造的共享skb,并调用unshare使其私有化。修复方向正确,但完整性取决于是否覆盖rxrpc的其他数据包处理路径。例如,若rxrpc还存在处理ABORT、ACK、CHALLENGE等包且包含安全解密的分支,而它们没有采用相同防御,则仍存在同类问题。此外,skb_has_shared_frag()只检查SKBLFL_SHARED_FRAG标志,如果内核其他子系统以不设置该标志的方式传递外部页(如某些page frag或zero copy路径),则可能绕过。建议在rxrpc全部入口统一使用或包装skb_linearize_if_shared(),并验证skb_frag头页的引用计数。总体而言,修复基本覆盖已知路径,但防御面仍受限于标志检查的完备性。

⚔️ 利用方案设计

在本地构造两个共享同一文件页的线程:线程A将目标文件splice到一个UDP socket fd,然后通过这个socket向AF_RXRPC服务端口发送一个构造好的加密数据包(DATA类型)。在__ip_append_data中该文件页被赋值给skb frag,并带有SKBLFL_SHARED_FRAG。线程B将同一文件mmap到用户空间,并准备读取解密结果。当skb进入rxrpc_input_call_event(),由于skb_cloned()为false,代码走原地解密路径,调用skb_to_sgvec将文件页映射到SGL;内核的rxrpc安全模块使用正在使用的会话密钥解密数据,解密结果直接写回文件页。通过循环等待并读取mmap区域,线程B获得解密后的明文。若通信使用的是高价值数据或密钥协商中的RESPONSE包,可进一步窃取会话密钥或提取其他用户发送的敏感内容。更进一步,若解密的明文数据被当作密钥材料,可以伪造rxrpc包;或者利用同一页同时映射到多个文件造成页缓存混乱,强行修改只读文件,进而提升权限。实际利用需要控制rxrpc连接的安全上下文以及知道密文偏移,但共享页面的巧妙设计使得本地攻击者完全有条件构造出可利用的原语。

🧪 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 13:53

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)