Description
In the Linux kernel, the following vulnerability has been resolved: btrfs: lzo: reject compressed segment that overflows the compressed input lzo_decompress_bio() validates each on-disk segment length seg_len only against the workspace cbuf size, not against the compressed input size (compressed_len, the total folio bytes of the bio). A crafted extent can carry a segment whose seg_len passes the cbuf check but runs past the end of the bio, so copy_compressed_segment() walks off the last folio: get_current_folio() then returns the NULL folio from bio_next_folio(), and with CONFIG_BTRFS_ASSERT disabled (default) folio_size(NULL) faults. BUG: KASAN: null-ptr-deref in lzo_decompress_bio (fs/btrfs/lzo.c:383) Read of size 8 at addr 0000000000000000 by task kworker/u8:1/29 Workqueue: btrfs-endio simple_end_io_work kasan_report (mm/kasan/report.c:590) lzo_decompress_bio (fs/btrfs/lzo.c:383) end_bbio_compressed_read (fs/btrfs/compression.c:1065) btrfs_bio_end_io (fs/btrfs/bio.c:135) btrfs_check_read_bio (fs/btrfs/bio.c:180 fs/btrfs/bio.c:285) simple_end_io_work process_one_work worker_thread Reject any segment whose payload would extend beyond compressed_len before copying it, treating it as corruption like the other on-disk validation failures in this function.
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
a6e66e6f8c1b685e11b778bef614480a9c1a5278 to < e4325fb00e0c7269cb67f97d7148507787a57fd7affecteda6e66e6f8c1b685e11b778bef614480a9c1a5278 to < d9b17f9ce67d00e48fab62dcae197612a58f625faffecteda6e66e6f8c1b685e11b778bef614480a9c1a5278 to < 1c48c8c807e49ac4f72819a89035fb8d2d094015affecteda6e66e6f8c1b685e11b778bef614480a9c1a5278 to < be7fb59512ffc2da5d98214a00117dfe9eccab78affecteda6e66e6f8c1b685e11b778bef614480a9c1a5278 to < 1641d058adfbd50cf95d54581ed5d142ee82c07faffecteda6e66e6f8c1b685e11b778bef614480a9c1a5278 to < b0d27d43791b7a3057c3c4aedf9b4aa033d37c46affected
Linux Linux
Default version status: affected
5.15affected0 to < 5.15unaffected6.1.191 to ≤ 6.1.*unaffected6.6.160 to ≤ 6.6.*unaffected6.12.114 to ≤ 6.12.*unaffected6.18.57 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/e4325fb00e0c7269cb67f97d7148507787a57fd7 ↗
- https://git.kernel.org/stable/c/d9b17f9ce67d00e48fab62dcae197612a58f625f ↗
- https://git.kernel.org/stable/c/1c48c8c807e49ac4f72819a89035fb8d2d094015 ↗
- https://git.kernel.org/stable/c/be7fb59512ffc2da5d98214a00117dfe9eccab78 ↗
- https://git.kernel.org/stable/c/1641d058adfbd50cf95d54581ed5d142ee82c07f ↗
- https://git.kernel.org/stable/c/b0d27d43791b7a3057c3c4aedf9b4aa033d37c46 ↗