找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

6153

积分

0

好友

777

主题
发表于 4 天前 | 查看: 2| 回复: 0

导语: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 = 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/<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 的"清理"路径上干脆走进程退出流程。这一手相当聪明。

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(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 调用的异常行为



上一篇:Coruna iOS漏洞利用套件C2面板泄露:Safari打开即中招,多阶段攻击链拆解
下一篇:Android 应用安全漏洞自动检测:DLP 数据防泄漏与静态分析全链路实战
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-9-10 15:15 , Processed in 0.800256 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表