🎯 CVE-2026-43500 深度技术分析:漏洞根因 · PoC/EXP · 检测指纹

🎯 CVE 全聚合深度分析

CVE-2026-43500 深度技术分析

📊 聚合 4 来源🧪 含 PoC
NVD-LatestPoC-in-GitHubExploit-DB-RSSQualys Security Blog

摘要:CVE-2026-43500 是 Linux 内核 rxrpc 子系统中的一个高危漏洞,CVSS 评分为 7.8。该漏洞源于 rxrpc 在处理 DATA/RESPONSE 数据包时,仅检查 skb_cloned() 来决定是否线性化 skb,而忽略了带有外部共享页片段(SKBFL_SHARED_FRAG)或 frag_list 的 skb。攻击者可通过 splice() 循环映射将共享页送入 rxrpc 解密路径,触发在共享页面上的就地操作,进而可能导致权限提升。本文深入分析其技术根因、利用原理、影响范围及修复缓解措施。

📌 漏洞概述

CVE ID:CVE-2026-43500

CVSS 评分:7.8(High)

漏洞类型:不完整条件检查导致的不安全内存操作(逻辑错误 / 资源管理错误)

影响产品:Linux 内核(rxrpc 子系统)

影响版本:受影响的 Linux 内核版本广泛,涉及 rxrpc 相关补丁链的多个分支;具体请参考发行版内核公告。

该漏洞由 Linux 内核 rxrpc 数据包处理逻辑中的一处不严谨的“克隆判断”引起。在 rxrpc_input_call_event() 处理 DATA 包,以及 rxrpc_verify_response() 处理 RESPONSE 包时,代码仅在 skb_cloned() 为真时才将 skb 复制为线性缓冲区。然而,skb_cloned() 只能反映传统意义上的“skb 头数据被克隆”,并不能覆盖所有共享页面场景。

🔬 漏洞根因分析

在 Linux 网络子系统中,skb 的页面片段(frag)可以被多个 skb 共享,典型场景包括:

  • splice() 到 UDP socket:当用户通过 splice() 将文件页或管道页直接拼接到 skb 时,__ip_append_data() 会设置 SKBFL_SHARED_FRAG 标志,表示该 frag 页由外部所有者共享。
  • skb frag_list 链:一个 skb 可以通过 frag_list 引用其他 skb,形成链式结构;此时 skb_has_frag_list() 为真。

rxrpc 在调用安全操作(如 AEAD/skcipher 解密)之前,需要确保 skb 是“私有”的,以避免在解密过程中修改到其他上下文中仍被引用的页。原判断条件仅使用 skb_cloned()

if (skb_cloned(skb)) {
    skb = skb_unshare(skb, GFP_ATOMIC);
    if (!skb) goto out;
}

问题在于,skb_cloned() 检查的是 skb->cloned 标志,该标志通常在 skb 头部或数据缓冲区被引用时设置,并不涵盖 frag 页被外部共享的情况。如果攻击者构造一个“未克隆但 frag 页共享”的 skb(例如通过 splice 循环将同一页面映射进多个 skb),该检查会被绕过。

随后代码进入就地解密路径,调用 skb_to_sgvec() 将 frag 页直接绑定到 AEAD/skcipher 的 SGL(散列表)中。由于该页是外部共享的,解密操作会直接写入或修改该页内容,造成多方同时读写同一物理页。攻击者可以利用这一原语,使内核在解密过程中覆盖敏感对象,或诱导页被意外释放后仍被 SGL 引用,形成 UAF(Use-After-Free)。

PoC 仓库(dirty_frag)所展示的“dirty frag”利用方式,正是通过 splice 循环使 skb 携带外部共享 frag,并绕过 skb_cloned() 检查,从而触发漏洞。该补丁面与名为“fragnesia”的漏洞共享 ESP/XFRM 缓解路径,进一步确认了该漏洞属于“共享页错误处理”这一类典型的页生命周期管理缺陷。

💥 影响与危害

成功利用 CVE-2026-43500 可导致以下后果:

  • 本地权限提升:CVSS 7.8 的评分对应“高影响的可利用性”,攻击者如果已经具备内核态附近的操作能力(或通过 unprivileged user namespace 访问 AF_RXRPC),可借助共享页覆盖内核对象,最终获得 root 权限。
  • 内核崩溃(DoS):即使不追求提权,对共享页的非法写入也可能引发内核 panic 或内存损坏,导致系统崩溃。
  • 信息泄露:共享页被绑定进 SGL 后,解密输出可能意外写入其他进程的内存页,从而泄露敏感内核数据或用户数据。
  • 安全边界绕过:rxrpc 用于内核内 RPC 通信,若被容器或隔离环境内的攻击者利用,可突破容器边界。

由于该漏洞位于网络协议栈的关键路径,且触发条件仅需发送特定格式的 rxrpc 包并配合 splice 操作,在未修复系统上的风险较高。NVD 尚未收录 CISA KEV,但相关 PoC 仓库已公开,说明利用技术已经扩散。

🛡️ 修复与缓解

官方补丁:Linux 内核已发布修复,将条件判断扩展为:

if (skb_cloned(skb) || skb_has_frag_list(skb) || skb_has_shared_frag(skb)) {
    skb = skb_unshare(skb, GFP_ATOMIC);
    if (!skb) goto out;
}

此补丁在原有基础上新增了对 skb_has_frag_list()skb_has_shared_frag() 的检测,确保任何带有外部共享页或 frag_list 的 skb 都会先被线性化,从而避免在共享页上直接操作。保留了 NIC page_pool、GRO 等内核私有 frag 的零拷贝快速路径,不影响正常性能。

修复版本:请关注各发行版内核更新,及时升级至包含该补丁的版本(如 Linux 6.x 的修复版本,具体版本号以发行版公告为准)。

缓解措施:

  • 模块级缓解:社区提供了 dirty_frag_mitigation 脚本,通过 /etc/modprobe.d/dirtyfrag.confesp4esp6rxrpc 模块设置为加载失败(install xxx /bin/false)。这能阻断利用路径,同时也能缓解共享同一补丁面的“fragnesia”漏洞。
  • 限制 AF_RXRPC 使用:对于非必要场景,可通过内核模块黑名单禁止 rxrpc 相关模块。
  • 禁止 unprivileged user namespace:如果攻击者需要通过用户命名空间获取权限,可在 /proc/sys/kernel/unprivileged_userns_clone 或 sysctl 中禁用它,以降低攻击面。
  • 监控与检测:关注系统日志中异常 rxrpc 活动、splice 相关异常,以及内核崩溃报告。

建议生产环境优先采用官方补丁升级,辅以模块黑名单和最小权限原则进行纵深防御。

🧪 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-02 08:36 · 数据源: NVD/GitHub-Advisory/OSV/CISA-KEV/Exploit-DB/PoC-in-GitHub + 检测规则库

[!] CONTACT_CHANNELS

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

> PING_AUTHOR (@A1RedTeam)