CVE-2023-52786 ext4: fix racy may inline data check in dio write

Medium 4.7 Published Updated

A race condition in the Linux kernel ext4 filesystem during direct I/O writes can trigger a kernel warning and potential 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-2023-52786?

CVE-2023-52786 is a medium-severity vulnerability in Linux kernel, published on 21 May 2024. 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:

ext4: fix racy may inline data check in dio write

syzbot reports that the following warning from ext4_iomap_begin() triggers as of the commit referenced below:

if (WARN_ON_ONCE(ext4_has_inline_data(inode))) return -ERANGE;

This occurs during a dio write, which is never expected to encounter an inode with inline data. To enforce this behavior, ext4_dio_write_iter() checks the current inline state of the inode and clears the MAY_INLINE_DATA state flag to either fall back to buffered writes, or enforce that any other writers in progress on the inode are not allowed to create inline data.

The problem is that the check for existing inline data and the state flag can span a lock cycle. For example, if the ilock is originally locked shared and subsequently upgraded to exclusive, another writer may have reacquired the lock and created inline data before the dio write task acquires the lock and proceeds.

The commit referenced below loosens the lock requirements to allow some forms of unaligned dio writes to occur under shared lock, but AFAICT the inline data check was technically already racy for any dio write that would have involved a lock cycle. Regardless, lift clearing of the state bit to the same lock critical section that checks for preexisting inline data on the inode to close the race.

Weakness: CWE-667

Which versions are affected by CVE-2023-52786?

It affects 1 product.

Products include Linux kernel.

How do I fix CVE-2023-52786?

Apply the vendor's patch.

Is CVE-2023-52786 being exploited?

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

All Linux kernel vulnerabilities

Sources

Also known as BELL-CVE-2023-52786, DEBIAN-CVE-2023-52786, GHSA-gv6c-55ww-r8wv, UBUNTU-CVE-2023-52786.

Is CVE-2023-52786 in your software?

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

Check your SBOMs for free