CVE-2025-21756:Linux 内核漏洞如何导致完全 root 权限利用,PoC 发布

阅读量9655

发布时间 : 2025-05-06 14:57:51

x
译文声明

本文是翻译文章,文章原作者 Ddos,文章来源:securityonline

原文地址:https://securityonline.info/cve-2025-21756-how-a-tiny-linux-kernel-bug-led-to-a-full-root-exploit-poc-releases/

译文仅供参考,具体内容表达以及含义原文为准。

根 Linux

在最近的分析中,安全研究员 Michael Hoefler 揭露了 CVE-2025-21756 的完整细节,这是一个影响 Linux 内核 vsock 子系统的释放后使用 (UAF) 漏洞。最初只是简单的代码调整——修改了几行 vsock_remove_sock() 的行为——最终阻止了一条通往本地特权提升 (LPE) 和内核代码执行的复杂路径。

当内核中某个对象的引用计数器达到零时,该对象将被释放到其各自的内存管理器。理想情况下,在释放 vsock 对象后,我们将能够触发某种释放后使用 (UAF) 漏洞,以获得更好的原始权限并提升权限,”Hoefler解释道

漏洞源于传输重新分配期间对套接字绑定状态的处理不当。具体而言,vsock 代码错误地减少了已解除绑定套接字的引用计数器,导致 vsock 对象过早释放。

补丁分析指出: “传输重新分配可以触发 vsock_remove_sock,它会调用 vsock_remove_bound,从而错误地减少 vsock 对象上的引用计数器。”这引入了一种危险的 UAF 条件,攻击者可以利用该条件来获取强大的利用原语。

最初的利用尝试导致了内核崩溃,表明 AppArmor — 通过 Linux 安全模块 (LSM) 挂钩 — 在释放套接字时消除了 sk_security 指针,从而阻止了直接函数指针损坏。

Hoefler 强调说: “内核授予我们一个指向套接字的悬空指针 — — 但 AppArmor 确保我们在用它做任何有用的事情之前崩溃。”因此,攻击者必须找到不受 AppArmor 保护的内核函数才能继续利用

为了绕过内核地址空间布局随机化 (kASLR) 而不依赖受 AppArmor 保护的函数,Hoefler 转向了 vsock_diag_dump() 功能,这是一个不受保护的 netlink 诊断工具。

通过使用精心设计的管道缓冲区回收释放的 vsock 套接字并利用 vsock_diag_dump 作为侧信道,Hoefler 暴力破解了有效的 skc_net 指针,从而绕过了 kASLR。

我陷入了困境,于是求助于 kernelctf 社区,@h0mbre 建议使用 vsock_diag_dump 作为侧信道来暴力破解 skc_net 指针,”Hoefler 回忆道。这允许我通过已知的内存偏移量完全控制悬空套接字对象。

为了获得代码执行权限,Hoefler 利用了 vsock_release() 函数。由于该函数未受到 AppArmor 的保护,攻击可以劫持 sk->sk_prot->close 函数指针,并转向 ROP(面向返回编程)链:

我们最感兴趣的是对 sk->sk_prot->close(sk, 0) 的调用。由于我们控制 sk,所以我们需要一个指向函数的有效指针,”他解释道。

最后的 ROP 链调用 commit_creds(init_cred),授予攻击者 root 权限并干净地将执行返回到用户空间。

您可以在此处找到 Hoefler 的完整概念验证漏洞代码。

本文翻译自securityonline 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全KER All Rights Reserved 京ICP备08010314号-66