Description
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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
b64ec075bded2b30bcd90af5aa5256d2237c885d to < 1370badf6b823ce3cde39a65f46f9e5dc7b4bf43affectedb64ec075bded2b30bcd90af5aa5256d2237c885d to < ba6c4fc662853f6662e4db060cf88ee994053e21affectedb64ec075bded2b30bcd90af5aa5256d2237c885d to < 9154542070ca7eadb3c764a882f39a127677854baffectedb64ec075bded2b30bcd90af5aa5256d2237c885d to < 74f577c722c99248d804eca18e7de7c5e47549d7affectedb64ec075bded2b30bcd90af5aa5256d2237c885d to < 0af37c217edf15fa21dac1c40822086df356c6bbaffected
Linux Linux
Default version status: affected
4.18affected0 to < 4.18unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.53 to ≤ 6.18.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/1370badf6b823ce3cde39a65f46f9e5dc7b4bf43 ↗
- https://git.kernel.org/stable/c/ba6c4fc662853f6662e4db060cf88ee994053e21 ↗
- https://git.kernel.org/stable/c/9154542070ca7eadb3c764a882f39a127677854b ↗
- https://git.kernel.org/stable/c/74f577c722c99248d804eca18e7de7c5e47549d7 ↗
- https://git.kernel.org/stable/c/0af37c217edf15fa21dac1c40822086df356c6bb ↗