Linux内核sys_prlimit64竞争条件漏洞分析与修复

本文详细分析了Linux内核中sys_prlimit64函数存在的竞争条件漏洞CVE-2025-40201,包括漏洞成因、潜在风险以及修复方案,涉及任务锁和任务列表锁的正确使用方式。

概述

在Linux内核中,发现并修复了以下漏洞:

kernel/sys.c: 修复sys_prlimit64()路径中task_lock(tsk->group_leader)的竞争使用问题

漏洞描述

sys_prlimit64()->do_prlimit()路径中task_lock(tsk->group_leader)的使用存在严重问题。

sys_prlimit64()虽然执行了get_task_struct(tsk),但这仅保护task_struct本身。如果tsk != current且tsk不是leader,该进程可能退出/执行,此时task_lock(tsk->group_leader)可能使用已释放的task_struct。

另一个问题是sys_prlimit64()可能与改变->group_leader的mt-exec竞争。在这种情况下,do_prlimit()可能获取错误的锁,或者(更糟糕的是)->group_leader可能在task_lock()和task_unlock()之间发生变化。

解决方案

将sys_prlimit64()改为在必要时获取tasklist_lock。这种方法虽然不够优雅,但对于稳定版本来说是最合适的修复方案。

具体修复措施

  • 应用针对sys_prlimit64的内核补丁
  • 确保正确使用tasklist_lock
  • 避免竞争使用task_lock(tsk->group_leader)
  • 更新Linux内核至最新稳定版本

参考链接

漏洞时间线

  • 2025年11月12日:新增CVE漏洞记录
  • 2025年11月12日:添加漏洞描述和参考链接

漏洞评分

暂无CVSS评分信息可用

受影响产品

目前尚无记录的受影响产品

总受影响供应商:0 | 产品:0

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计