导语:Nebula Security(星云安全)最近在 GitHub 上放出了 CVE-2026-52924 的完整 exploit 代码,直指 Linux 内核 SCTP(Stream Control Transmission Protocol,流控制传输协议)实现中的 use-after-free(释放后使用)漏洞。攻击者可以构造特制 SCTP 包远程触发,最终拿到 root 权限——不过 CVSS 9.8 的高分在评论区吵了起来。本文就从技术细节出发,把这团迷雾理清楚。
一、漏洞概况
CVE-2026-52924 是 Linux内核 SCTP 协议栈里的一个释放后使用(UAF)漏洞。触发点藏在 SCTP 关联(association)建立或重配置的过程中——系统在处理 Stale Cookie ERROR(陈旧 Cookie 错误)时,对象引用没有被及时清理,导致已经释放的内存被再次访问。
根据 Red Hat 安全公告的描述,这个漏洞的攻击向量是网络可达。远程攻击者不需要任何本地权限,只要目标主机开放 SCTP 端口(默认 3868)就能尝试触发。利用成功后,可以从无权限状态直接跃升到 root。
已确认受影响的是 Ubuntu 7.0.0-28 内核包(对应 Linux 6.x 主线版本)。其他发行版是否中招,需要对照各自的 SCTP 补丁状态来判断。
二、技术细节:UAF 利用链
PoC 代码展示了完整的内核态利用流程。
第一步:触发 UAF——构造包含陈旧 Cookie 错误的 SCTP 包,触发 __sctp_lookup_association 等系列函数在对象被释放后仍尝试访问的结构,由此拿到一个可控的悬垂指针(dangling pointer)。
第二步:绕过 KASLR——利用 kernelsnitch(内核嗅探工具)模块泄露内核基址,绕开内核地址空间布局随机化(KASLR)。代码中硬编码的 KERNEL_LINK_BASE = 0xffffffff81000000 和 UBUNTU_IMAGE_EDGE_BIAS = 0x200000 等常量,正好对应 Ubuntu 内核的加载基址特征。
第三步:堆喷 + 伪对象构造——build_stage2 函数会构造一个精心布局的 stage2 内存块,里面塞进了伪 chunk、伪 sk_buff(套接字缓冲区)、伪 subprocess_info(子进程信息)等结构体。这些伪造结构体的偏移量(EXT_OFFSET / CHUNK_OFFSET / SKB_SUBINFO_OFFSET / MSG_OFFSET 等)都经过仔细计算,能让内核后续调用链把伪造数据当成合法对象处理。代码里那句 "Both unlink sites are self-consistent under CONFIG_LIST_HARDENED" 的注释很关键——链表硬化检查要求 unlink 的 prev/next 指针形成闭环,所以作者特意把两个 list_head 都设成指向自身。
第四步:ROP 劫持 + usermodehelper 执行——通过伪造 subprocess_info 结构里的函数指针,让 call_usermodehelper_work 去执行 /proc/<pid>/exe(也就是 exploit 自身)。环境变量是 HOME=/ 和 PATH=/sbin:/usr/sbin:/bin:/usr/bin,参数是 _nebusec --helper /proc/<pid>/fd/1。这就是经典的 call_usermodehelper 内核态命令执行——内核主动帮我们跑一段用户态二进制,绕过所有现代内核缓解措施。
还有一句注释也值得细品:/* cleanup=do_exit prevents invalid kfree(page). */。为了避免伪造的 sk_buff 被错误释放,作者把清理回调直接指向 do_exit,让内核在触发 UAF 的"清理"路径上干脆走进程退出流程。这一手相当聪明。

三、PoC 下载与编译
PoC 仓库地址:https://github.com/NebuSec/CyberMeowfia/tree/main/security-research/Linux-CVE-2026-52924-ubuntu-7.0.0-28/
仓库文件结构:
exploit.c(301 行主利用代码)
anchor.c/h(内核基址锚点)
leak.c/h、leak_fast.c(KASLR 绕过)
trigger.c/h(UAF 触发)
内核嗅探工具/utils.h(作者自研内核嗅探工具)
Makefile(编译脚本)
编译方法(在 Ubuntu 7.0.0-28 内核环境下):
git clone https://github.com/NebuSec/CyberMeowfia.git
cd CyberMeowfia/security-research/Linux-CVE-2026-52924-ubuntu-7.0.0-28
make
./exploit
许可协议是 Apache 2.0,可以自由下载用于研究和复现。严禁用于未授权系统。
四、CVSS 9.8 的争议
推文评论区有人质疑:
"isnt this cvss 7.8 instead of 9.8? I can't imagine an LPE is cvss 9.8.."
这个质疑其实暴露了不少人对 CVSS 评分的理解误区。CVSS 看的是攻击向量(Attack Vector)+ 利用复杂度(Complexity)+ 所需权限(Privileges Required)+ 用户交互(User Interaction)+ 范围(Scope)+ 三要素影响的组合,而不是只看"最终结果是不是提权"。
这个 CVE 的评分拆解如下:
- 攻击向量:Network(远程 SCTP 包触发)
- 攻击复杂度:Low(无需特殊条件)
- 所需权限:None(不需要任何本地账号)
- 用户交互:None(无需用户操作)
- 影响范围:Changed(跨越安全边界)
- 机密性 / 完整性 / 可用性:全部 High
按 CVSS v3.1 公式,这就是 9.8 级别——远程 + 无认证 + 无交互 + 全 High。"结果是不是提权"跟 CVSS 评分没有直接关系。质疑者把它当 LPE(本地提权)来看,混淆了"触发方式"和"最终结果"。
五、红队视角评价
这个 PoC 的技术含量极高,绝不是简单的"调了一个未初始化指针",而是包含:
- 完整的内核 KASLR 绕过
- 针对链表硬化的自校验处理
- 精心构造的 stage2 内存布局(保证链表自闭环)
- 跨子系统的对象伪造(同时伪装成 sk_buff 和 subprocess_info)
- 巧妙的清理路径劫持(用
do_exit 避免错误释放)
星云安全这套工具集(尤其是 kernelsnitch 模块)完全可以看作现代内核 exploit 的标杆模板。以后做其他内核漏洞利用时,直接套这套框架就行——换句话说,这个仓库的价值不止是这一个 CVE 的 PoC,而是提供了一套可复用的内核利用工具链。
六、防御与缓解
普通用户:
- 立即检查内核版本。Ubuntu 用户用
uname -r 确认是否在受影响范围内
- 升级到带 SCTP 补丁的内核版本,持续关注 USN/DSA 公告
- 如果不需要 SCTP,直接禁用模块:
sudo modprobe -r sctp && echo "blacklist sctp" | sudo tee /etc/modprobe.d/blacklist-sctp.conf
红队 / 渗透测试人员:
- 这个 PoC 目前只针对 Ubuntu 7.0.0-28,其他发行版需要重新调偏移
kernelsnitch 工具集可以复用到其他内核 UAF 场景
call_usermodehelper 是 Linux 内核"自我降级执行用户态"的经典攻击面,长期来看这块还会有更多漏洞被挖出来
安全运维:
- 在边界防火墙禁用 3868 端口的 SCTP 入站流量
- 监控 SCTP 异常连接尝试(
sctp_init / destroy 调用频率)
- EDR 规则:检测
/proc/<pid>/exe 被 usermodehelper 调用的异常行为