# ipc:修复使用RCU保护IPCS查找的漏洞
## 概述
在Linux内核中发现了一个use-after-free漏洞,特别是在`ipcs`查找过程中,通过RCU保护来修复该漏洞。
## 细节
`idr_for_each()`函数虽然使用了rwsem保护,但这并不足以防止use-after-free漏洞。在`idr_for_each()`调用`radix_tree_node_free()`通过`call_rcu()`释放`radix_tree_node`结构时,如果没有RCU读关键区域保护,`radix_tree_node`结构可能会立即被释放。当后续通过`radix_tree_for_each_slot()`访问下一个节点时,可能会读取已经被释放的内存。
## 影响
在`syzbot`报告的`shm_destroy_orphaned()`函数中,`idr_for_each()`的调用需要添加保护代码,以确保其在RCU读关键区域中被调用。此漏洞可能导致内存损坏或信息泄露。
# | POC 描述 | 源链接 | 神龙链接 |
---|
标题: ipc: fix to protect IPCS lookups using RCU - kernel/git/stable/linux.git - Linux kernel stable tree -- 🔗来源链接
标签:
神龙速读标题: ipc: fix to protect IPCS lookups using RCU - kernel/git/stable/linux.git - Linux kernel stable tree -- 🔗来源链接
标签:
神龙速读