PT-2026-61209 · Linux · Linux
CVE-2026-63892
·
Published
2026-07-19
·
Updated
2026-07-19
None
No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
In the Linux kernel, the following vulnerability has been resolved:
thunderbolt: property: Reject dir len < 4 to prevent size t underflow
On the non-root path, tb property parse dir() takes dir len from
entry->length (u16 widened to size t). Two distinct OOB conditions
follow when entry->length < 4:
-
The non-root path begins with kmemdup(&block[dir offset], sizeof(*dir->uuid), ...) which always reads 4 dwords from dir offset. tb property entry valid() only enforces dir offset + entry->length <= block len, so a crafted entry with dir offset close to the end of the property block and entry->length in 0..3 passes that gate but lets the UUID copy run off the block (e.g. dir offset = 497, dir len = 3 in a 500-dword block reads block[497..501]).
-
After the kmemdup, content len = dir len - 4 underflows size t to ~SIZE MAX, nentries becomes SIZE MAX / 4, and the entry walk runs OOB on each iteration until an entry fails validation or the kernel oopses on an unmapped page.
Reject dir len < 4 on the non-root path before the UUID kmemdup,
which closes both holes.
Also move INIT LIST HEAD(&dir->properties) up to immediately after
the dir allocation so the new error-return path (and the existing
uuid-alloc failure path) calling tb property free dir() sees a
walkable list rather than the zero-initialized NULL next/prev that
list for each entry safe() would oops on.
Found an issue in the description? Have something to add? Feel free to write us 👾
Related Identifiers
Affected Products
Linux