CVE-2026-64322

udf: validate sparing table length as an entry count, not a byte count

HIGH
7.8
CVSS Score
Published: July 25, 2026 at 08:49 AM UTC
Updated: October 19, 2026 at 09:17 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.8
Exploit prediction
EPSS 0.2%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: udf: validate sparing table length as an entry count, not a byte count udf_load_sparable_map() accepts a sparing table when sizeof(*st) + le16_to_cpu(st->reallocationTableLen) > sb->s_blocksize is false, i.e. it treats reallocationTableLen as a number of BYTES that must fit in the block. But the table is walked as an array of 8-byte sparingEntry elements: for (i = 0; i < le16_to_cpu(st->reallocationTableLen); i++) { struct sparingEntry *entry = &st->mapEntry[i]; ... entry->origLocation ... } in udf_get_pblock_spar15() and udf_relocate_blocks(). A reallocationTableLen of N therefore passes the check whenever sizeof(*st) + N <= blocksize, yet the consumers index sizeof(*st) + N * sizeof(struct sparingEntry) bytes -- up to ~8x the block. On a crafted UDF image this is an out-of-bounds read in udf_get_pblock_spar15(); udf_relocate_blocks() additionally feeds the same length to udf_update_tag(), whose crc_itu_t() reads far past the block, and its memmove() through st->mapEntry[] is an out-of-bounds write. Validate reallocationTableLen as the entry count it is, with struct_size().

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

2.6.32.60 ≤ v < 2.6.332.6.34.14 ≤ v < 2.6.353.0.37 ≤ v < 3.13.2.23 ≤ v < 3.33.4.5 ≤ v < 3.53.5.1 ≤ v < 5.10.2615.11 ≤ v < 5.15.2125.16 ≤ v < 6.1.1786.13 ≤ v < 6.18.396.19 ≤ v < 7.1.46.2 ≤ v < 6.6.1456.7 ≤ v < 6.12.961df2ae31c724e57be9d7ac00d78db8a5dabdd0502.6.32.602.6.34.143.0.373.2.233.4.53.53.5 rc53.5 rc63.5 rc74836ee563d65bb492f907cbe267a5761b9693e4d9ae30e324a96d0328a575329d7a95a09b3318601a9f1af04f086656246f30354fb4564ce3b08c4a0b1c5701ad6b3e5d21d16f65475651cfaaa41e7aae240873cb4a9fd18de60a817100a96fe670d4359
Vendor states this is fixed in 04f4599a9efb90992d072a814960edf0cd62805d (fixed)
Vendor states this is fixed in 0a9b79a951cfd70a9d31ca01ae2d08a20bb730e9 (fixed)
Vendor states this is fixed in 2a219acb2ce674d99bbd1b7b35ed8c384dac7200 (fixed)
Vendor states this is fixed in 2d726135099313958f8975532a2e15322ff150ce (fixed)
Vendor states this is fixed in 3ec997bd5508e9b25210b5bbec89031629cdb093 (fixed)
Vendor states this is fixed in 7285276aa50d2839afb5957ffd491ad282dc8f72 (fixed)
Vendor states this is fixed in 7f7774b9da0ef17b87bfa238cf966ad0b3376150 (fixed)
Vendor states this is fixed in eeb0f3e193f8e523d03e4c9e084f6b4875f50e8e (fixed)
Affected range stops below 2.6.33, so it looks safe — our inference, not a vendor statement
Affected range stops below 2.6.35, so it looks safe — our inference, not a vendor statement
Affected range stops below 3.1, so it looks safe — our inference, not a vendor statement
Affected range stops below 3.3, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 3.5 (unaffected)
Vendor states this is fixed in 5.10.261 (unaffected)
Vendor states this is fixed in 5.15.212 (unaffected)
Vendor states this is fixed in 6.1.178 (unaffected)
Vendor states this is fixed in 6.12.96 (unaffected)
Vendor states this is fixed in 6.18.39 (unaffected)
Vendor states this is fixed in 6.6.145 (unaffected)
Vendor states this is fixed in 7.1.4 (unaffected)
Vendor states this is fixed in 7.2 (unaffected)

SSVC — Action Prioritization

SSVCNo known exploitNot automatableTotal impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

7.8HIGHLinux
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-787

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card