btrfs: fix btrfs_ioctl_space_info() slot_count TOCTOU which can lead to info-leak
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.259, 5.15.210, 6.1.176, 6.6.140, 6.12.90, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: btrfs: fix btrfs_ioctl_space_info() slot_count TOCTOU which can lead to info-leak btrfs_ioctl_space_info() has a TOCTOU race between two passes over the block group RAID type lists. The first pass counts entries to determine the allocation size, then the second pass fills the buffer. The groups_sem rwlock is released between passes, allowing concurrent block group removal to reduce the entry count. When the second pass fills fewer entries than the first pass counted, copy_to_user() copies the full alloc_size bytes including trailing uninitialized kmalloc bytes to userspace. Fix by copying only total_spaces entries (the actually-filled count from the second pass) instead of alloc_size bytes, and switch to kzalloc so any future copy size mismatch cannot leak heap data.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 7fde62bffb576d384ea49a3aed3403d5609ee5bc · fixed in f407aad350bdea4db300c47433573b7a41630d33; From 7fde62bffb576d384ea49a3aed3403d5609ee5bc · fixed in d8224b1be6627c6c3b204bfb264508d27c65ac44; From 7fde62bffb576d384ea49a3aed3403d5609ee5bc · fixed in d69a4a6813fdba7c4cc3695a7e843842b240790d; From 7fde62bffb576d384ea49a3aed3403d5609ee5bc · fixed in f5ee467b56764964027c361641f64953fc0f8f9a; From 7fde62bffb576d384ea49a3aed3403d5609ee5bc · fixed in 4fdc6ee0802121d9cd96b8d085e589f51e5a4ec3; From 7fde62bffb576d384ea49a3aed3403d5609ee5bc · fixed in 5d12e0ab009ade48c1bff9324fd9bea2c773d088; From 7fde62bffb576d384ea49a3aed3403d5609ee5bc · fixed in d09d67d5de577cedae3de9497dff217e0ac8b641; From 7fde62bffb576d384ea49a3aed3403d5609ee5bc · fixed in 973e57c726c1f8e77259d1c8e519519f1e9aea77
- Linux Linux
2.6.34
- KernelLinux
From 2.6.34 · fixed in 5.10.259; From 5.11.0 · fixed in 5.15.210; From 5.16.0 · fixed in 6.1.176; From 6.2.0 · fixed in 6.6.140; From 6.7.0 · fixed in 6.12.90; From 6.13.0 · fixed in 6.18.32; From 6.19.0 · fixed in 7.0.7
References 8
git.kernel.org
- stable/c/f407aad350bdea4db300c47433573b7a41630d33
- stable/c/d8224b1be6627c6c3b204bfb264508d27c65ac44
- stable/c/d69a4a6813fdba7c4cc3695a7e843842b240790d
- stable/c/f5ee467b56764964027c361641f64953fc0f8f9a
- stable/c/4fdc6ee0802121d9cd96b8d085e589f51e5a4ec3
- stable/c/5d12e0ab009ade48c1bff9324fd9bea2c773d088
- stable/c/d09d67d5de577cedae3de9497dff217e0ac8b641
- stable/c/973e57c726c1f8e77259d1c8e519519f1e9aea77