CVE-2026-64324: udf: validate free block extents against the partition length

Greg Kroah-Hartman <[email protected]> Sat, 25 Jul 2026 10:49:01 +0200
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026072512-CVE-2026-64324-0b17@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

udf: validate free block extents against the partition length

udf_free_blocks() checks the logical block number and count against the
partition length, but drops the extent offset from that final bound.  A
crafted extent can pass the guard while logicalBlockNum + offset + count
points past the partition, which later indexes past the space bitmap
array.

A single ftruncate(2) on a file backed by such an extent reliably
panics the kernel.  This is a local availability issue.  On desktop
systems where UDisks/polkit allows the active user to mount removable
UDF media without CAP_SYS_ADMIN, an unprivileged local user can supply
the crafted filesystem and trigger the panic by truncating a writable
file on it.  Systems that require root or CAP_SYS_ADMIN to mount the
image have a higher prerequisite.

No confidentiality or integrity impact is claimed: the reproduced
primitive is an out-of-bounds read of a bitmap pointer slot followed by
a kernel panic.

Use the already computed logicalBlockNum + offset + count value for the
partition length check.  Also make load_block_bitmap() reject an
out-of-range block group before indexing s_block_bitmap[], so corrupted
callers cannot walk past the flexible array.

The Linux kernel CVE team has assigned CVE-2026-64324 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 5.10.224 with commit 934f815345c09c290a9b9a9cfdddc203ec2117e8 and fixed in 5.10.261 with commit fdd6229d2ae9914c1f25d1041db0f4f312a4fa76
	Issue introduced in 5.15.165 with commit 22cc7323f090646c8cfb5939e6f15bdc2ed3fd27 and fixed in 5.15.212 with commit b54aee5652fcd7c23a0904a4623ec462c3edc70c
	Issue introduced in 6.1.105 with commit 7c4fa9ebfce69619d132fe703dc2e2cf62a13723 and fixed in 6.1.178 with commit 12af328d2ee8d68e81ba612246d0b54b22d23e1f
	Issue introduced in 6.6.46 with commit 5cc9745e2ea11aef7d5c9a42bc36f6cd3e1b4cc3 and fixed in 6.6.145 with commit fb49099206c5c57af28a157249fa7bcb5518f99e
	Issue introduced in 6.11 with commit 56e69e59751d20993f243fb7dd6991c4e522424c and fixed in 6.12.96 with commit 9442d75429b0c556292a7454fe888d54259f5240
	Issue introduced in 6.11 with commit 56e69e59751d20993f243fb7dd6991c4e522424c and fixed in 6.18.39 with commit 335202ab25b01fdd45889ff25eab70864686dea3
	Issue introduced in 6.11 with commit 56e69e59751d20993f243fb7dd6991c4e522424c and fixed in 7.1.4 with commit be87de7789a82a030a4896bc7683415ec9fa6f2b
	Issue introduced in 6.11 with commit 56e69e59751d20993f243fb7dd6991c4e522424c and fixed in 7.2-rc1 with commit 5f0419457f89dce1a3f1c8e62a3adf2f39ab8168
	Issue introduced in 4.19.320 with commit 097420e48e30f51e8f4f650b5c946f5af63ec1a3
	Issue introduced in 5.4.282 with commit 5def895b42ef16a2da6402818cba8d7ec8ede1ef
	Issue introduced in 6.10.5 with commit 05fb2bf477d3fe5421bd4cb699574737f52bd88b

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64324
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	fs/udf/balloc.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/fdd6229d2ae9914c1f25d1041db0f4f312a4fa76
	https://git.kernel.org/stable/c/b54aee5652fcd7c23a0904a4623ec462c3edc70c
	https://git.kernel.org/stable/c/12af328d2ee8d68e81ba612246d0b54b22d23e1f
	https://git.kernel.org/stable/c/fb49099206c5c57af28a157249fa7bcb5518f99e
	https://git.kernel.org/stable/c/9442d75429b0c556292a7454fe888d54259f5240
	https://git.kernel.org/stable/c/335202ab25b01fdd45889ff25eab70864686dea3
	https://git.kernel.org/stable/c/be87de7789a82a030a4896bc7683415ec9fa6f2b
	https://git.kernel.org/stable/c/5f0419457f89dce1a3f1c8e62a3adf2f39ab8168