CVE-2025-40306 orangefs: fix xattr related buffer overflow...

High 7.8 Published Updated

A buffer overflow in the orangefs filesystem causes infinite loops and memory leaks, leading to system hangs and denial of service.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Local or same network only
Victim action needed
Not needed
Fix
Available

What is CVE-2025-40306?

CVE-2025-40306 is a high-severity denial of service vulnerability in Linux, published on 8 Dec 2025. It can only be exploited from the same machine or local network, with no action from the victim.

Official description

In the Linux kernel, the following vulnerability has been resolved:

orangefs: fix xattr related buffer overflow...

Willy Tarreau <[email protected]> forwarded me a message from Disclosure <[email protected]> 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.

Which versions are affected by CVE-2025-40306?

How do I fix CVE-2025-40306?

Apply the vendor's patch.

Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.

Is CVE-2025-40306 being exploited?

There is no known exploitation of CVE-2025-40306 in the wild and no public exploit code.

Sources

Also known as BELL-CVE-2025-40306, DEBIAN-CVE-2025-40306, GHSA-v4qq-9xc6-v286, ROOT-OS-DEBIAN-12-CVE-2025-40306, ROOT-OS-DEBIAN-13-CVE-2025-40306, ROOT-OS-UBUNTU-2204-CVE-2025-40306 and 2 more.

Is CVE-2025-40306 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free