ZeroHour

CVE-2026-80631

large

NULL pointer dereference in Linux kernel btrfs LZO decompression

CVSS 3.1
7.5 high
EPSS
<1%p27
Published
()
Modified
AI analysis

CVE-2026-80631 is a missing bounds check in the Linux kernel's btrfs LZO decompression path: lzo_decompress_bio() validates each on-disk segment length (seg_len) only against the workspace cbuf size and not against the total compressed input size (compressed_len). A crafted or corrupt btrfs extent can therefore contain a segment whose length passes the cbuf check but runs past the end of the compressed input, so copy_compressed_segment() walks off the last folio, bio_next_folio() returns NULL, and folio_size(NULL) faults, crashing the kernel (KASAN null-pointer read at address 0 in lzo_decompress_bio, fs/btrfs/lzo.c:383). An attacker who can get such crafted on-disk data read from an LZO-compressed btrfs volume gains a kernel denial of service; the CVSS vector (AV:N/AC:L/PR:N/UI:N, A:H only) indicates no confidentiality or integrity impact. Any Linux system running a kernel with the flawed btrfs LZO code is potentially affected, but only when btrfs volumes using LZO compression are read; note the crash occurs by default (CONFIG_BTRFS_ASSERT disabled). No public proof-of-concept, in-the-wild exploitation, or KEV listing is known, and EPSS estimates a 0.3% probability of exploitation within 30 days.

What to do: Install kernel updates from your distribution that incorporate the upstream btrfs LZO fix (the advisory does not list fixed version numbers, so track your vendor's kernel advisory). Until patched, avoid mounting or attaching btrfs filesystems or images of untrusted provenance that use LZO compression, and treat any null-pointer-deref crash reports in lzo_decompress_bio (fs/btrfs/lzo.c) as this vulnerability rather than failing hardware.

Affected
Linux (kernel.org) Linux kernel — btrfs filesystem, LZO decompression (lzo_decompress_bio / copy_compressed_segment)Version range not enumerated in the advisory; kernels containing the vulnerable btrfs LZO validation are affected, resolved by the upstream btrfs patch that rej
Estimated exposure
largeplausibly hundreds of thousands of Linux systems (btrfs is a default or widely deployed filesystem on mainstream distributions and storage/NAS appliances, but… — Btrfs ships as a default or heavily used filesystem in several mainstream Linux distributions and commercial NAS/storage products, and restricting to the subset running LZO compression puts the installed base in the 100k–1M range; the…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

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.

Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

In the news

No ingested article mentions this CVE yet.