CVE-2025-40306
Description
In the Linux kernel, the following vulnerability has been resolved:
orangefs: fix xattr related buffer overflow...
Willy Tarreau <w@1wt.eu> forwarded me a message from Disclosure <disclosure@aisle.com> with the following warning:
> The helper xattr_key() uses the pointer variable in the loop condition > rather than dereferencing it. As key is incremented, it remains non-NULL > (until it runs into unmapped memory), so the loop does not terminate on > valid C strings and will walk memory indefinitely, consuming CPU or hanging > the thread.
I easily reproduced this with setfattr and getfattr, causing a kernel oops, hung user processes and corrupted orangefs files. Disclosure sent along a diff (not a patch) with a suggested fix, which I based this patch on.
After xattr_key started working right, xfstest generic/069 exposed an xattr related memory leak that lead to OOM. xattr_key returns a hashed key. When adding xattrs to the orangefs xattr cache, orangefs used hash_add, a kernel hashing macro. hash_add also hashes the key using hash_log which resulted in additions to the xattr cache going to the wrong hash bucket. generic/069 tortures a single file and orangefs does a getattr for the xattr "security.capability" every time. Orangefs negative caches on xattrs which includes a kmalloc. Since adds to the xattr cache were going to the wrong bucket, every getattr for "security.capability" resulted in another kmalloc, none of which were ever freed.
I changed the two uses of hash_add to hlist_add_head instead and the memory leak ceased and generic/069 quit throwing furniture.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
A buffer overflow in OrangeFS's xattr handling due to a non-terminating loop in xattr_key leads to memory corruption and OOM; patched in Linux stable.
Vulnerability: xattr Buffer Overflow in OrangeFS
The vulnerability resides in the xattr_key() helper function within the OrangeFS file system code in the Linux kernel. The function uses the pointer variable key in the loop condition rather than dereferencing it. As key is incremented, it remains non-NULL until it encounters unmapped memory, so the loop never terminates on valid C strings. This results in an infinite loop that walks memory indefinitely, consuming CPU or hanging the thread [1]. The bug was discovered by Disclosure and forwarded by Willy Tarreau.
Exploitation and
Attack Surface
The issue is triggered by legitimate xattr operations such as setfattr or getfattr. Reproducing the bug causes a kernel oops, hung user processes, and corrupted OrangeFS files. No special privileges are required beyond the ability to set or get extended attributes on an OrangeFS filesystem [1]. The second aspect of the vulnerability is a memory leak and hash bucket misrouting. xattr_key() returns a hashed key, but when adding xattrs to the OrangeFS xattr cache, the kernel macro hash_add rehashes the key using hash_log, resulting in cache entries being placed in the wrong hash bucket. This was exposed by xfstest generic/069 [1].
Impact
An attacker who can perform xattr operations can cause a denial of service (DoS) through infinite loops and kernel panics. Additionally, the hash bucket misrouting leads to a memory leak where every getattr for an xattr like "security.capability" results in a kmalloc that is never freed. This can quickly exhaust system memory (OOM), crashing the system [1].
Mitigation
The fix replaces the two uses of hash_add with hlist_add_head and corrects the looping condition in xattr_key(). The stable kernel patches are available at commits [2] and [3]. Users should update to the latest stable kernel to mitigate this vulnerability.
AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
1Patches
8c6564ff6b53cef892d2bf4f315afebb95974bc812574de63e09a096104fc9127d1e90c90c2ca015ac109025e880759c2Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
8- git.kernel.org/stable/c/025e880759c279ec64d0f754fe65bf45961da864nvd
- git.kernel.org/stable/c/15afebb9597449c444801d1ff0b8d8b311f950abnvd
- git.kernel.org/stable/c/9127d1e90c90e5960c8bc72a4ce2c209691a7021nvd
- git.kernel.org/stable/c/bc812574de633cf9a9ad6974490e45f6a4bb5126nvd
- git.kernel.org/stable/c/c2ca015ac109fd743fdde27933d59dc5ad46658envd
- git.kernel.org/stable/c/c6564ff6b53c9a8dc786b6f1c51ae7688273f931nvd
- git.kernel.org/stable/c/e09a096104fc65859422817fb2211f35855983fenvd
- git.kernel.org/stable/c/ef892d2bf4f3fa2c8de1677dd307e678bdd3d865nvd
News mentions
0No linked articles in our index yet.