HIGH
udf PartitionDescriptor OOB
CVE-2026-45991
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: udf: fix partition descriptor append bookkeeping Mounting a crafted UDF image with repeated partition descriptors can trigger a heap out-of-bounds write in part_descs_loc[]. handle_partition_descriptor() deduplicates entries by partition number, but appended slots never record partnum. As a result duplicate Partition Descriptors are appended repeatedly and num_part_descs keeps growing. Once the table is full, the growth path still sizes the allocation from partnum even though inserts are indexed by num_part_descs. If partnum is already aligned to PART_DESC_ALLOC_STEP, ALIGN(partnum, step) can keep the old capacity and the next append writes past the end of the table. Store partnum in the appended slot and size growth from the next append count so deduplication and capacity tracking follow the same model.
02KernelScan AI Analysis
Risk summary
Local attackers with ability to mount crafted UDF filesystem images can trigger heap out-of-bounds writes, potentially leading to privilege escalation or system compromise. This affects systems that allow users to mount UDF images or process untrusted UDF media.
Vulnerability analysis
The vulnerability occurs in handle_partition_descriptor() where repeated partition descriptors with the same partition number bypass deduplication due to missing partnum recording in appended slots. When the partition descriptor table grows, the allocation size calculation uses partnum instead of the actual append count (num_part_descs). If partnum is already aligned to PART_DESC_ALLOC_STEP, the ALIGN() macro keeps the old capacity unchanged, but subsequent appends indexed by num_part_descs write beyond the allocated buffer. The fix stores partnum in appended slots and calculates growth size from the next append count, ensuring deduplication works correctly and preventing buffer overflows.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 4.19 | 4.19 | 058b451b1039 |
| 6.12 | 6.12.88 | 08fa5d818e5b |
| 6.6 | 6.6.140 | b5597bb83fc3 |
| 7.0 | 7.0.4 | 08841b06fa64 |
| mainline | 7.1-rc1 | — |