主要观点:2024 年 9 月发现 FreeBSD 内核 11.0 - 14.1 -RELEASE 存在_umtx_op
系统调用的竞争条件漏洞,可导致可利用的释放后使用漏洞,Synacktiv 已公开发现并修补。该漏洞核心在于UMTX_OP_SHM
子命令的销毁共享内存句柄时的竞争条件,可能导致struct shmfd
指针悬空。
关键信息:
_umtx_op
系统调用原型及内核入口点。UMTX_OP_SHM
子命令的实现及相关函数逻辑,包括创建、查找、销毁共享内存等操作。- 竞争条件导致
ushm_refcnt
可能减 2 及引入第三线程后的情况。 - 利用漏洞的策略证明概念(PoC)代码,通过多个线程操作触发漏洞。
- 利用漏洞后的可利用状态,如控制
shm_object
和shm_path
等字段,以及通过shm_chown
函数操作shm_uid
和shm_gid
。 - 利用漏洞扩展为双释放(double-free),通过
UMTX_OP_SHM
操作创建和销毁共享内存来实现,并利用cap_ioctls_limit
系统调用控制ucred
结构体。 - 参考实现的步骤及示例输出,包括调整以提高稳定性的方法。
- PoC 存档的下载链接。
重要细节:
- 内核中对
umtx_shm_reg
的引用计数和锁定机制,以及在竞争条件下可能出现的问题。 - 不同
UMTX_OP_*
操作的函数实现及参数传递。 - 利用漏洞时对各种
fileops
函数的交互和限制。 - 稳定性测试结果及调整 exploit 以提高稳定性的方法。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。