CVE-2025-40271: fs/proc: fix uaf in proc_readdir_de()
In the Linux kernel, the following vulnerability has been resolved:
fs/proc: fix uaf in proc_readdir_de()
Pde is erased from subdir rbtree through rb_erase(), but not set the node
to EMPTY, which may result in uaf access. We should use RB_CLEAR_NODE()
set the erased node to EMPTY, then pde_subdir_next() will return NULL to
avoid uaf access.
We found an uaf issue while using stress-ng testing, need to run testcase
getdent and tun in the same time. The steps of the issue is as follows:
1) use getdent to traverse dir /proc/pid/net/dev_snmp6/, and current
pde is tun3;
2) in the [time windows] unregister netdevice tun3 and tun2, and erase
them from rbtree. erase tun3 first, and then erase tun2. the
pde(tun2) will be released to slab;
3) continue to getdent process, then pde_subdir_next() will return
pde(tun2) which is released, it will case uaf access.
CPU 0 | CPU 1
-------------------------------------------------------------------------
traverse dir /proc/pid/net/dev_snmp6/ | unregister_netdevice(tun->dev) //tun3 tun2
sys_getdents64() |
iterate_dir() |
proc_readdir() |
proc_readdir_de() | snmp6_unregister_dev()
pde_get(de); | proc_remove()
read_unlock(&proc_subdir_lock); | remove_proc_subtree()
| write_lock(&proc_subdir_lock);
[time window] | rb_erase(&root->subdir_node, &parent->subdir);
| write_unlock(&proc_subdir_lock);
read_lock(&proc_subdir_lock); |
next = pde_subdir_next(de); |
pde_put(de); |
de = next; //UAF |
rbtree of dev_snmp6
|
pde(tun3)
/ \
NULL pde(tun2)
Security readout for executives and security teams
Plain-English summary
CVE-2025-40271 is a Linux kernel memory-safety bug in procfs directory reading. A race while reading certain /proc network entries and removing network devices can leave the kernel using a freed object. The provided sources confirm a fix, but do not provide CVSS, impact rating, or evidence of real-world exploitation.
Executive priority
Track this through normal kernel vulnerability management, with higher urgency for internet-facing infrastructure hosts and operational technology environments. Because severity and exploitability are not scored in the provided sources, prioritize confirmed affected systems rather than broad emergency response.
Technical view
The flaw is a use-after-free in proc_readdir_de(). An erased proc_dir_entry subdirectory rbtree node was not marked empty, allowing pde_subdir_next() to return a freed entry after concurrent proc removal. The fix clears the rb node after erase so traversal stops instead of dereferencing released memory.
Likely exposure
Exposure is most relevant to Linux systems running affected kernel versions or downstream products that include the vulnerable procfs code. The bundle lists Linux as affected and includes Siemens advisory coverage, but does not identify specific Siemens impacted products in the provided text.
Exploitation context
The source describes discovery during stress-ng testing with concurrent directory traversal and network device unregister activity. KEV is false, and the bundle contains no cited evidence of active exploitation, public weaponization, or attacker prerequisites beyond the race condition context.
Researcher notes
The key behavior is stale rbtree traversal after rb_erase() without clearing the node. The source confirms UAF access but does not establish privilege escalation, information disclosure, crash reliability, exploitability, or affected downstream package versions.
Mitigation direction
Apply vendor kernel updates containing the referenced stable fixes.
Check Linux distribution advisories for backported fixes and package names.
Review Siemens SSA-253495 if Siemens products are in scope.
Prioritize systems with dynamic network device creation or heavy /proc monitoring.
If no vendor fix is available, follow vendor guidance rather than ad hoc workarounds.
Validation and detection
Inventory kernel versions across servers, appliances, containers hosts, and embedded systems.
Map each kernel build to vendor advisories or the referenced stable commits.
Confirm patched builds include the proc_readdir_de() RB_CLEAR_NODE() fix.
Check vulnerability scanners for CVE-2025-40271 coverage and false negatives.
Document any unsupported kernels requiring upgrade or vendor escalation.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2025-40271 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.