What’s Vulnerable › Vulnerabilities
CVE-2024-46701: libfs: fix infinite directory reads for offset dir
- Severity: medium (CVSS 5.5 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.2% probability of exploitation in the next 30 days
- Public exploit or detection template: none known
- Published: 2024-09-13 · updated 2026-06-17
- Weakness: CWE-835
Description
In the Linux kernel, the following vulnerability has been resolved: libfs: fix infinite directory reads for offset dir After we switch tmpfs dir operations from simple_dir_operations to simple_offset_dir_operations, every rename happened will fill new dentry to dest dir's maple tree(&SHMEM_I(inode)->dir_offsets->mt) with a free key starting with octx->newx_offset, and then set newx_offset equals to free key + 1. This will lead to infinite readdir combine with rename happened at the same time, which fail generic/736 in xfstests(detail show as below). 1. create 5000 files(1 2 3...) under one dir 2. call readdir(man 3 readdir) once, and get one entry 3. rename(entry, "TEMPFILE"), then rename("TEMPFILE", entry) 4. loop 2~3, until readdir return nothing or we loop too many times(tmpfs break test with the second condition) We choose the same logic what commit 9b378f6ad48cf ("btrfs: fix infinite directory reads") to fix it, record the last_index when we open dir, and do not emit the entry which index >= last_index. The file->private_data now used in offset dir can use directly to do this, and we also update the last_index when we llseek the dir file. [brauner: only update last_index after seek when offset is zero like Jan suggested]
Affected products
- Linux kernel: from 6.6 before 6.10.7; 6.11-rc1, 6.11-rc2, 6.11-rc3 — fixed in 6.10.7
How to fix
Upgrade to a fixed version: Linux kernel 6.10.7. Check the vendor advisory for mitigations.
References
- https://git.kernel.org/stable/c/308b4fc2403b335894592ee9dc212a5e58bb309f
- https://git.kernel.org/stable/c/64a7ce76fb901bf9f9c36cf5d681328fc0fd4b5a
Get alerted when CVE-2024-46701 or the next vulnerability affects your stack