Description
In the Linux kernel, the following vulnerability has been resolved: udf: reject VAT indexes equal to the entry count UDF 1.50 virtual partition mapping uses the VAT as an array of physical block mappings. s_num_entries stores the number of entries in that array, not the highest valid index. The valid VAT indexes are therefore below s_num_entries. udf_get_pblock_virt15() currently rejects only indexes greater than s_num_entries. A crafted image can request index s_num_entries, pass the bounds check, and make the kernel read one entry past the allocated VAT table. Change the check to reject block >= s_num_entries, so the count is handled as an exclusive upper bound. A crafted UDF image reproduced this on origin/master commit 0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53 with a KASAN slab-out-of-bounds report in udf_get_pblock_virt15(). Trail of Bits has a reproducer that triggers kernel panic demonstrating the bug, and can share it if needed.
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
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < f64e01a90326bb85a3cc8aa0199931dc2f15b589affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 8a8c1c42a34349a0626d910abbad5a29136446b7affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 19f36c6453cd88fe6d60ef36ab1f1cad8ddf4ce4affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < b77b83f5529a26d084d64ece98abd6f0cc86e053affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 9193368408d792cec2057628d87862140fb1ce1caffected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < b95c33a4e743874f1b0a45bf2aaa4da553552bd1affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < 1bd7947f1463c21edafa256d0fbec5b99215e2b6affected1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to < cac0cb07f29ccfb373fd4a36c81e908ef3ce608caffected
Linux Linux
Default version status: affected
2.6.12affected0 to < 2.6.12unaffected5.10.270 to ≤ 5.10.*unaffected5.15.221 to ≤ 5.15.*unaffected6.1.188 to ≤ 6.1.*unaffected6.6.157 to ≤ 6.6.*unaffected6.12.109 to ≤ 6.12.*unaffected6.18.50 to ≤ 6.18.*unaffected7.2.4 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/f64e01a90326bb85a3cc8aa0199931dc2f15b589 ↗
- https://git.kernel.org/stable/c/8a8c1c42a34349a0626d910abbad5a29136446b7 ↗
- https://git.kernel.org/stable/c/19f36c6453cd88fe6d60ef36ab1f1cad8ddf4ce4 ↗
- https://git.kernel.org/stable/c/b77b83f5529a26d084d64ece98abd6f0cc86e053 ↗
- https://git.kernel.org/stable/c/9193368408d792cec2057628d87862140fb1ce1c ↗
- https://git.kernel.org/stable/c/b95c33a4e743874f1b0a45bf2aaa4da553552bd1 ↗
- https://git.kernel.org/stable/c/1bd7947f1463c21edafa256d0fbec5b99215e2b6 ↗
- https://git.kernel.org/stable/c/cac0cb07f29ccfb373fd4a36c81e908ef3ce608c ↗