Read the docs
TI-2025-15615 Aliases CVE-2025-21658GHSA-phh3-rpf3-3q9p

btrfs: avoid NULL pointer dereference if no valid extent tree

Priority LOW 24CWE-476Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Denial of service
Confidentiality · integrity · availability
None · None · High
Fix status
Partial Red Hat: 2 without a fix

Attack profile from CVSS 3.1 · CISA ADP. Fix status from CNA and Red Hat. Impact type from CWE-476.

Summary

In the Linux kernel, the following vulnerability has been resolved: btrfs: avoid NULL pointer dereference if no valid extent tree [BUG] Syzbot reported a crash with the following call trace: BTRFS info (device loop0): scrub: started on devid 1 BUG: kernel NULL pointer dereference, address: 0000000000000208 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 106e70067 P4D 106e70067 PUD 107143067 PMD 0 Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI CPU: 1 UID: 0 PID: 689 Comm: repro Kdump: loaded Tainted: G O 6.13.0-rc4-custom+ #206 Tainted: [O]=OOT_MODULE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS unknown 02/02/2022 RIP: 0010:find_first_extent_item+0x26/0x1f0 [btrfs] Call Trace: <TASK> scrub_find_fill_first_stripe+0x13d/0x3b0 [btrfs] scrub_simple_mirror+0x175/0x260 [btrfs] scrub_stripe+0x5d4/0x6c0 [btrfs] scrub_chunk+0xbb/0x170 [btrfs] scrub_enumerate_chunks+0x2f4/0x5f0 [btrfs] btrfs_scrub_dev+0x240/0x600 [btrfs] btrfs_ioctl+0x1dc8/0x2fa0 [btrfs] ? do_sys_openat2+0xa5/0xf0 __x64_sys_ioctl+0x97/0xc0 do_syscall_64+0x4f/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e </TASK> [CAUSE] The reproducer is using a corrupted image where extent tree root is corrupted, thus forcing to use "rescue=all,ro" mount option to mount the image. Then it triggered a scrub, but since scrub relies on extent tree to find where the data/metadata extents are, scrub_find_fill_first_stripe() relies on an non-empty extent root. But unfortunately scrub_find_fill_first_stripe() doesn't really expect an NULL pointer for extent root, it use extent_root to grab fs_info and triggered a NULL pointer dereference. [FIX] Add an extra check for a valid extent root at the beginning of scrub_find_fill_first_stripe(). The new error path is introduced by 42437a6386ff ("btrfs: introduce mount option rescue=ignorebadroots"), but that's pretty old, and later commit b979547513ff ("btrfs: scrub: introduce helper to find and fill sector info for a scrub_stripe") changed how we do scrub. So for kernels older than 6.6, the fix will need manual backport.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00203 10th percentileScored 2026-11-07
Fix Partial Linux (Linux): 6.1.191, 6.6.72, 6.12.10 +1Red Hat: 2 without a fix

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
LinuxLinux5.11 and later6.1.191, 6.6.72, 6.12.10, 6.13Patch availableCNA
  • Linux VendorLinux Affected 5.11 and later Fixed in 6.1.191, 6.6.72, 6.12.10, 6.13 Patch available CNA

CPE configurations NVD · 7

CPEVersionsRoleVendor
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*5.11 to before 6.6.72; 6.7 to before 6.12.10VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:*6.13 rc1VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:*6.13 rc2VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:*6.13 rc3VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:*6.13 rc4VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.13:rc5:*:*:*:*:*:*6.13 rc5VulnerableLinux
cpe:2.3:o:linux:linux_kernel:6.13:rc6:*:*:*:*:*:*6.13 rc6VulnerableLinux
  • cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 5.11 to before 6.6.72; 6.7 to before 6.12.10 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:* Versions 6.13 rc1 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:* Versions 6.13 rc2 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:* Versions 6.13 rc3 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:* Versions 6.13 rc4 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.13:rc5:*:*:*:*:*:* Versions 6.13 rc5 Vulnerable ·Linux
  • cpe:2.3:o:linux:linux_kernel:6.13:rc6:*:*:*:*:*:* Versions 6.13 rc6 Vulnerable ·Linux

Remediation

  • Fix · CNA Linux (Linux) Fixed in 6.1.191, 6.6.72, 6.12.10, 6.13

Vendor assessments

Red Hat

Red Hat rating: Moderate. Red Hat's page for this CVE →

ProductStatusPlan or fix
Red Hat Enterprise Linux 6AffectedNo fix planned: Out of support scope
Red Hat Enterprise Linux 7AffectedNo fix planned: Out of support scope
Not affected: 3 products
  • Red Hat Enterprise Linux 10
  • Red Hat Enterprise Linux 8
  • Red Hat Enterprise Linux 9

Timeline

  1. 2026-10-02 Threatist record created from CVE-2025-21658
  2. 2026-10-03 Alias added: GHSA-phh3-rpf3-3q9p
  3. 2026-10-30 Fix available: Linux/Linux@1fb37b7840fdcbf69d062a79d14afbf566b11873, Linux/[email protected] · CNA
  4. 2026-10-30 1 new reference · CNA

References

  • TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
  • TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
  • TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
  • TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
  • TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
  • TI-2021-05514 Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACE KEVCVSS 3.1HIGH 8.3
See all 15278 →

Sources