文章摘要
文章介绍了作者利用其个人项目kernel-hack-drill成功利用Linux内核中的CVE-2024-50264漏洞的过程。该漏洞因涉及复杂的竞争条件和系统崩溃,被授予2025年Pwnie奖最佳权限提升漏洞。作者回顾了从2021年发现AF_VSOCK漏洞到2024年重新研究并最终成功利用该漏洞的经历,强调了处理此类脆弱漏洞所需的时间和努力。
文章总结
文章标题:Kernel-hack-drill 与利用 Linux 内核 CVE-2024-50264 的新方法
主要内容:
本文详细介绍了作者如何利用其个人项目 kernel-hack-drill 成功利用 Linux 内核中的 CVE-2024-50264 漏洞。该漏洞是一个复杂的竞争条件漏洞,位于 AF_VSOCK 套接字中,导致释放后使用(UAF)问题。由于其利用难度极高,该漏洞在 2025 年获得了 Pwnie 奖的最佳权限提升漏洞奖。
漏洞背景:
CVE-2024-50264 漏洞于 2016 年引入 Linux 内核,涉及 AF_VSOCK 套接字在 connect() 系统调用和 POSIX 信号之间的竞争条件,导致 UAF。攻击者可以在不使用用户命名空间的情况下触发该漏洞,增加了其危险性。
漏洞利用的挑战:
该漏洞的利用面临多个限制,包括:
1. 漏洞对象与服务器对象分配在同一 slab 缓存中,干扰了跨缓存攻击。
2. 竞争条件的复现非常不稳定。
3. UAF 写入在 kfree() 后几微秒内发生,速度过快,难以进行典型的跨缓存攻击。
4. UAF 写入后,内核工作线程(kworker)会立即发生空指针解引用,导致系统崩溃。
5. 即使避免了内核崩溃,kworker 在 8 秒后仍会发生空指针解引用。
6. 如果 virtio_vsock_sock.tx_lock 不为零,kworker 会在 spin_lock_bh() 中挂起。
利用策略:
作者通过引入额外的竞争条件来绕过部分限制,并利用 kernel-hack-drill 项目开发了跨缓存攻击的利用原语。最终,作者通过修改 pipe_buffer 对象,成功实现了任意地址读写(AARW),并最终提升了权限。
结论:
尽管漏洞碰撞令人痛苦,但完成研究的过程是值得的。通过这次研究,作者不仅发现了新的利用技术,还改进和扩展了 kernel-hack-drill 项目,为 Linux 内核安全研究人员提供了一个测试环境。作者鼓励其他人尝试并贡献该项目。
感谢阅读!
评论总结
评论总结:
对博客内容的赞赏与时间投入的挑战
- 评论1(mettamage)赞赏博客内容的深度和全面性,但指出阅读时间较长,难以保持注意力。
- 引用:“I love how this blog post describes a use after free, all its limitations and then next steps to deal with all of it.”
- 引用:“I could keep my attention span for about half of it.”
对漏洞修复的批评与Rust的期待
- 评论2(charcircuit)批评了漏洞修复的激励机制,认为修复漏洞的路径存在问题,并期待用Rust重写相关系统。
- 引用:“Either the incentives are broken for security researchers to fix bugs, contributing fixes to Linux is broken, or both.”
- 引用:“A rewrite of these user interactable subsystems in Rust can’t come soon enough.”
对低层技术能力的敬畏
- 评论3(kungfufrog)表达了对低层技术研究者的敬佩,认为自己在低层技术方面能力有限。
- 引用:“Super impressed with the talent and ability of serious exploit researchers!”
对文本可读性的批评
- 评论4(NooneAtAll3)认为文章主题有趣,但文本结构不够流畅,影响阅读体验。
- 引用:“fascinating topic, but does anyone else feel like the text is hard to read?”
- 引用:“something about choice of words and sentence structure feels... un-prose-like.”