KernelScan.io

HIGH Introduced in 4.14

cls_u32 BindClass OOB

CVE-2026-74739

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI3.3LOW

01

In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_u32: skip hash tables in u32_bind_class() u32_walk() enumerates both struct tc_u_hnode and struct tc_u_knode through the walker callback. u32_bind_class() unconditionally casts the passed fh to tc_u_knode and accesses &n->res, so when fh is actually a tc_u_hnode, which has no tcf_result member, this results in a slab-out-of-bounds read of res->classid in tc_cls_bind_class(). The issue can be reproduced with the following commands: tc qdisc add dev lo root handle 1: hfsc tc class add dev lo parent 1: classid 1:1 hfsc sc rate 1000kbit tc filter add dev lo parent 1:1 protocol ip prio 1 u32 match u32 0 0 flowid 1:1 tc class add dev lo parent 1: classid 1:2 hfsc sc rate 2000kbit Fix this by skipping hash tables via the TC_U32_KEY(handle) check.

02

Engine v0.6.0

Risk summary

A local user who can obtain CAP_NET_ADMIN (e.g., inside a user namespace) can trigger an out-of-bounds slab read in the u32 traffic classifier by adding qdiscs, classes, and filters in a specific order. The read is bounded and consumed only by an internal comparison, limiting impact to a potential kernel oops under debug configurations. Products that block unprivileged user namespaces or restrict netlink access are not exposed.

Affectednet/sched/cls_u32.c (net/sched)

Vulnerability analysis

When a new traffic-control class is created, the kernel walks all attached u32 filters to bind matching class IDs. The walk visits both hash-table nodes and key nodes, but the binding function unconditionally treats every visited handle as a key node and reads a result field that only exists on key nodes. When the handle is actually a hash-table node, this reads past the end of the slab object. The fix adds a type check so hash-table handles are skipped before the field is accessed. The vulnerable path is reached through netlink tc configuration commands that require CAP_NET_ADMIN, which an unprivileged local user can obtain inside a user namespace; a network management daemon holding that capability could also trigger it.

03

BranchIntroducedFixed inPatch commit
6.64.146.6.15319d114b93c94
6.124.146.12.105594a064d6032
6.184.146.18.4631f26a95eeee
mainline4.147.26d3724e616fa
7.14.147.1.10e71f8e9ed6f3
6.14.146.1.184ec5f3005586a
cip/6.14.146.1.187-cip60ec5f3005586a
cip/6.124.146.12.108-cip31594a064d6032