{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2023-53733","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-10-22T13:21:37.350Z","datePublished":"2025-10-24T11:44:28.115Z","dateUpdated":"2026-08-05T09:15:44.713Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T09:15:44.713Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: sched: cls_u32: Undo tcf_bind_filter if u32_replace_hw_knode\n\nWhen u32_replace_hw_knode fails, we need to undo the tcf_bind_filter\noperation done at u32_set_parms."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerable path is reached through the rtnetlink `RTM_NEWTFILTER` interface (tc filter add/change) on the local system; no network peer can drive filter configuration. Packet transmission only serves to consume the corrupted state afterwards.\nAC:L - Failure of `u32_replace_hw_knode()` is fully attacker-controlled — setting the `skip_sw` flag on a filter attached to a non-offload-capable device (dummy/veth/lo) makes `tc_setup_cb_add()` return `-EOPNOTSUPP` deterministically on every attempt, with no race and no dependence on state outside the attacker's control.\nPR:L - Only `CAP_NET_ADMIN` within a network namespace is needed, which any unprivileged local user obtains with `unshare -Urn` before creating a dummy device, an HTB qdisc with classes, and u32 filters. Per kernel CNA guidance, tc/qdisc paths reachable via user namespaces are PR:L, not PR:H.\nUI:N - The attacker performs the entire sequence (create qdisc/class, repeatedly issue the failing filter add, delete the class, send traffic) unaided. No victim action is required at any point.\nS:U - The corrupted `filter_cnt` accounting and the resulting freed `htb_class` object both live in the kernel of the same machine, so the impact stays within a single security authority. This is standard kernel-local privilege escalation, not a hypervisor or IOMMU boundary crossing.\nC:H - The refcount imbalance permits a still-referenced traffic class to be freed while `res.class` remains a dangling pointer consumed by `htb_classify()`, giving a use-after-free on a slab object the attacker can reallocate and read back. Per guidance, a UAF that grants control over freed-object contents is High confidentiality impact.\nI:H - The same use-after-free lets a sprayed replacement object supply `cl->level`, `cl->leaf.q` and the qdisc function pointers dereferenced in the enqueue path, yielding a write/control-flow-hijack primitive — the same primitive that produced working local privilege escalation for the sibling cls_u32 tcf_result bugs. Type-confused/UAF corruption of kernel objects is High integrity impact.\nA:H - Even without exploitation, the leaked `filter_cnt` permanently pins the class and its qdisc so `tc class del` always returns `-EBUSY` and the memory is never reclaimed, and the dangling `res.class` dereference in the packet enqueue path oopses the kernel. Any kernel crash or use-after-free is High availability impact."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sched/cls_u32.c"],"versions":[{"version":"d34e3e181395192d6d1f50dd97bd7854e04e33a4","lessThan":"a9345793469b65ee5ba7b033239916c2a67d3dd4","status":"affected","versionType":"git"},{"version":"d34e3e181395192d6d1f50dd97bd7854e04e33a4","lessThan":"025159ed118ba5145b241d574edadb0e00d3c20f","status":"affected","versionType":"git"},{"version":"d34e3e181395192d6d1f50dd97bd7854e04e33a4","lessThan":"9cb36faedeafb9720ac236aeae2ea57091d90a09","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sched/cls_u32.c"],"versions":[{"version":"4.7","status":"affected"},{"version":"0","lessThan":"4.7","status":"unaffected","versionType":"semver"},{"version":"6.1.42","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.4.7","lessThanOrEqual":"6.4.*","status":"unaffected","versionType":"semver"},{"version":"6.5","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.1.42"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.4.7"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.5"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/a9345793469b65ee5ba7b033239916c2a67d3dd4"},{"url":"https://git.kernel.org/stable/c/025159ed118ba5145b241d574edadb0e00d3c20f"},{"url":"https://git.kernel.org/stable/c/9cb36faedeafb9720ac236aeae2ea57091d90a09"}],"title":"net: sched: cls_u32: Undo tcf_bind_filter if u32_replace_hw_knode","x_generator":{"engine":"bippy-1.2.0"}}}}