Linux内核SCTP协议栈UAF漏洞CVE-2026-52924 PoC公开:CVSS 9.8与一场LPE评分争议

导语: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协议栈中的释放后使用漏洞。漏洞触发点在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 = 0xffffffff81000000UBUNTU_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//exe(即exploit自身),环境变量是HOME=/PATH=/sbin:/usr/sbin:/bin:/usr/bin,参数是_nebusec --helper /proc//fd/1。这就是经典的call_usermodehelper内核态命令执行——内核主动帮我们跑一段用户态二进制,绕过所有现代内核缓解。

代码里那句/ cleanup=do_exit prevents invalid kfree(page). /的注释非常关键——为了避免伪造sk_buff被错误释放,作者特意把清理回调指向do_exit,让内核在触发UAF的”清理”逻辑时直接走进程退出流程。

CVE-2026-52924 SCTP 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/hleak_fast.c(内核地址空间布局随机化绕过)
  • 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(Local Privilege Escalation,本地提权)来看,混淆了”触发方式”和”最终结果”。

五、红队视角评价

这个PoC的技术含量极高——不是简单的”调一个未初始化指针”,而是:

  • 完整的内核地址空间布局随机化绕过
  • 针对链表硬化的自校验处理
  • 精心构造的stage2内存布局(保证链表自闭环)
  • 跨子系统的对象伪造(同时是sk_buff和subprocess_info)
  • 巧妙的清理路径劫持(用do_exit避免错误释放)

星云安全的这个工具集(特别是内核嗅探工具模块)可以看作现代内核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,其他发行版需要重新调偏移
  • 内核嗅探工具集可以复用到其他内核UAF场景
  • call_usermodehelper是Linux内核”自我降级执行用户态”的经典攻击面,长期看这个面会有更多漏洞

安全运维

  • 在边界防火墙禁用3868端口的SCTP入站流量
  • 监控SCTP异常连接尝试(sctp_init/destroy调用频率)
  • EDR规则:检测/proc/<pid>/exe被usermodehelper调用的异常行为

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容