In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_u32: validate...
🔗 CVE IDs covered (1)
📋 Description
In the Linux kernel, the following vulnerability has been resolved:
net/sched: cls_u32: validate offshift to prevent shift-out-of-bounds
u32_change() copies the user-provided tc_u32_sel.offshift (unsigned char,
0-255) into the kernel knode object without bounds validation. When a
packet later hits u32_classify() with TC_U32_VAROFFSET set, it evaluates
ntohs(offmask & *data) >> offshift where the left operand is a 16-bit
value promoted to a 32-bit int. Any offshift >= 32 is undefined behavior
per C11 6.5.7p3, triggerable by an unprivileged user via user/network
namespaces.
UBSAN: shift-out-of-bounds in net/sched/cls_u32.c:236:43 shift exponent 32 is too large for 32-bit type int
Fix this by rejecting offshift >= 16 during filter creation in u32_change().
🔗 References (5)
- https://nvd.nist.gov/vuln/detail/CVE-2026-74544
- https://git.kernel.org/stable/c/313cb9ffc4101a885d791facf4b5ea3d5e06144d
- https://git.kernel.org/stable/c/aef96eead2860cbfa371e4471d4f04412213b958
- https://git.kernel.org/stable/c/9990cac513e8b191de2ee589051ea7ebf3cee940
- https://github.com/advisories/GHSA-p37c-4w2w-mm9f