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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
934f815345c09c290a9b9a9cfdddc203ec2117e8 to < fdd6229d2ae9914c1f25d1041db0f4f312a4fa76affected22cc7323f090646c8cfb5939e6f15bdc2ed3fd27 to < b54aee5652fcd7c23a0904a4623ec462c3edc70caffected7c4fa9ebfce69619d132fe703dc2e2cf62a13723 to < 12af328d2ee8d68e81ba612246d0b54b22d23e1faffected5cc9745e2ea11aef7d5c9a42bc36f6cd3e1b4cc3 to < fb49099206c5c57af28a157249fa7bcb5518f99eaffected56e69e59751d20993f243fb7dd6991c4e522424c to < 9442d75429b0c556292a7454fe888d54259f5240affected56e69e59751d20993f243fb7dd6991c4e522424c to < 335202ab25b01fdd45889ff25eab70864686dea3affected56e69e59751d20993f243fb7dd6991c4e522424c to < be87de7789a82a030a4896bc7683415ec9fa6f2baffected56e69e59751d20993f243fb7dd6991c4e522424c to < 5f0419457f89dce1a3f1c8e62a3adf2f39ab8168affected097420e48e30f51e8f4f650b5c946f5af63ec1a3affected5def895b42ef16a2da6402818cba8d7ec8ede1efaffected05fb2bf477d3fe5421bd4cb699574737f52bd88baffected5.10.224 to < 5.10.261affected5.15.165 to < 5.15.212affected6.1.105 to < 6.1.178affected6.6.46 to < 6.6.145affected4.19.320 to < 4.20affected5.4.282 to < 5.5affected6.10.5 to < 6.11affected
Linux Linux
Default version status: affected
6.11affected0 to < 6.11unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.96 to ≤ 6.12.*unaffected6.18.39 to ≤ 6.18.*unaffected7.1.4 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- 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 ↗