🔴 CVE-2025-40271:Linux 内核中严重的使用后释放漏洞
CVE-2025-40271 是一个影响 Linux 内核 /proc 文件系统的 严重使用后释放(UAF)漏洞。该缺陷存在于负责列出 /proc 中目录内容的 proc_readdir_de() 函数中。
当通过 rb_erase() 从二叉搜索树(rbtree)中删除一个 目录项(PDE) 时,内核未将该节点标记为空。这会导致一种危险情况:
/proc/pid/net/dev_snmp6/),而另一个进程同时删除网络接口(如 tun 设备),则指针可能指向已释放的内存。内核开发团队实现了一个关键补丁,将节点的处理替换为 RB_CLEAR_NODE()。这可确保:
NULL,而不是指向已释放内存的指针。该补丁已可在以下稳定分支中使用:
要查看补丁的确切代码,请查阅以下提交:
“在 Linux 内核中,已解决以下漏洞:fs/proc: fix uaf in proc_readdir_de(). PDE 通过
rb_erase()从子目录二叉搜索树中删除,但未将节点设置为 EMPTY,这可能导致 UAF 访问。我们应该使用RB_CLEAR_NODE()将已删除的节点设置为 EMPTY,这样pde_subdir_next()将返回NULL以避免 UAF 访问。”
getdent 遍历 /proc/pid/net/dev_snmp6/(当前指针为 tun3)。tun3 和 tun2),将其从树中删除。
tun3,然后删除 tun2(释放到 slab)。getdent 遍历,但 pde_subdir_next() 返回已释放的 tun2,导致 UAF。| CWE-ID | 名称 | 来源 |
|---|---|---|
| CWE-416 | 使用后释放 | NVD |
| URL | 描述 |
|---|---|
| NVD - CVE-2025-40271 | 官方详情(尚无 CVSS 评分) |
| Kernel.org 提交 | 补丁的源代码 |
⚠️ 最终建议:
如果你使用的是 内核版本 6.1.x、6.6.x、6.12.x 或 6.13.x,请立即更新到已修补的版本。如果无法更新,请考虑手动应用这些提交,或通过安全策略(例如 chroot、SELinux)限制对 /proc 的访问。
| 字段 | 详情 |
|---|
| ID | CVE-2025-40271 |
| 组件 | Linux 内核 (fs/proc) |
| 严重性 | 高(尽管尚未被 NVD/NIST 官方评级) |
| 发现来源 | 通过 stress-ng 检测(同时运行 getdent 和 tun 用例) |
| NVD 状态 | 未优先处理 以进行丰富(资源有限) |