btrfs: tree-checker: validate names in ROOT_REF and ROOT_BACKREF
- 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 6.1.189, 6.6.158, 6.12.111, 6.18.53
- 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: tree-checker: validate names in ROOT_REF and ROOT_BACKREF ROOT_REF and ROOT_BACKREF items contain a struct btrfs_root_ref followed by the subvolume name. Several readers assume that this layout is already valid and then use the on-disk name length directly. A corrupted item can therefore make those readers address bytes outside the item, and BTRFS_IOC_GET_SUBVOL_INFO can copy too many bytes into its fixed-size UAPI name buffer. Validate ROOT_REF and ROOT_BACKREF items in tree-checker before any reader uses them. Reject records that do not contain a non-empty name, whose name_len does not exactly describe the remaining item payload, or whose name exceeds BTRFS_NAME_LEN. For BTRFS_IOC_GET_SUBVOL_INFO, copy only the validated on-disk name_len instead of deriving the copy length from the item size. The ioctl result is zeroed when allocated. That leaves the existing trailing zero byte untouched.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From b64ec075bded2b30bcd90af5aa5256d2237c885d · fixed in 1370badf6b823ce3cde39a65f46f9e5dc7b4bf43; From b64ec075bded2b30bcd90af5aa5256d2237c885d · fixed in ba6c4fc662853f6662e4db060cf88ee994053e21; From b64ec075bded2b30bcd90af5aa5256d2237c885d · fixed in 9154542070ca7eadb3c764a882f39a127677854b; From b64ec075bded2b30bcd90af5aa5256d2237c885d · fixed in 74f577c722c99248d804eca18e7de7c5e47549d7; From b64ec075bded2b30bcd90af5aa5256d2237c885d · fixed in 0af37c217edf15fa21dac1c40822086df356c6bb
- Linux Linux
4.18
- KernelLinux
From 4.18.0 · fixed in 6.1.189; From 6.2.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.53