CVE-2026-97971 in Linux
摘要
由 VulDB • 2026-09-25
在 Linux 内核中,已修复以下漏洞:
nstree: 在获取命名空间引用之前检查列出权限
`legitimize_ns()` 函数会在 `may_list_ns()` 确定调用者是否有权查看该命名空间之前,先对候选命名空间获取一个引用。在被拒绝的路径上执行的 `__free(ns_put)` 清理操作可能会在我们仍持有 RCU 读锁时释放挂载命名空间的最后一个引用,而 `put_mnt_ns()` 在此处可能会导致睡眠。这与 commit 2ec2aff3c8e2(“ns: ensure references are dropped outside of rcu lock”)为 `put_user()` 路径修复的问题相同。`ns_requested()` 和 `may_list_ns()` 都不需要引用,它们仅检查命名空间类型以及调用者自身的命名空间,因此应先执行检查,最后再获取引用。
Splat(崩溃日志片段):
``` Voluntary context switch within RCU read-side critical section! WARNING: kernel/rcu/tree_plugin.h:332 at rcu_note_context_switch+0x238/0x2a0, CPU#5: a/3442 CPU: 5 UID: 1000 PID: 3442 Comm: a Not tainted 7.0.0-30-generic #30-Ubuntu PREEMPT(lazy) RIP: 0010:rcu_note_context_switch+0x238/0x2a0 Call Trace: <TASK> __schedule+0xcf/0x650 schedule+0x27/0x90 schedule_preempt_disabled+0x15/0x30 __mutex_lock.constprop.0+0x550/0xaf0 __mutex_lock_slowpath+0x13/0x20 mutex_lock+0x3b/0x50 exp_funnel_lock+0xb2/0x260 synchronize_rcu_expedited+0xe7/0x220 namespace_unlock+0x26a/0x320 put_mnt_ns+0xd3/0x120 mntns_put+0xe/0x20 do_listns+0x13e/0x560 __do_sys_listns+0x126/0x2d0 __x64_sys_listns+0x20/0x30 x64_sys_call+0x2366/0x2390 do_syscall_64+0x105/0x5a0 entry_SYSCALL_64_after_hwframe+0x76/0x7e </TASK> ```
VulDB is the best source for vulnerability data and more expert information about this specific topic.