Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-45845

CVE-2026-45845: Linux Kernel Privilege Escalation Flaw

CVE-2026-45845 is a privilege escalation vulnerability in the Linux kernel's TAPRIO qdisc that triggers NULL pointer dereference. This article covers the technical details, affected versions, security impact, and mitigation.

Published:

CVE-2026-45845 Overview

CVE-2026-45845 is a NULL pointer dereference vulnerability in the Linux kernel's net/sched/sch_taprio.c Time-Aware Priority (TAPRIO) queueing discipline. The flaw occurs when a TAPRIO child qdisc is deleted via RTM_DELQDISC, causing taprio_graft() to store NULL into q->qdiscs[cl - 1]. Subsequent RTM_GETTCLASS dump operations invoke taprio_dump_class(), which dereferences the NULL pointer when reading child->handle and triggers a kernel panic.

Critical Impact

An unprivileged local user on systems with user namespaces enabled can trigger a kernel panic by creating a TAPRIO qdisc, grafting and deleting a child qdisc, and requesting a class dump.

Affected Products

  • Linux kernel builds with CONFIG_NET_SCH_TAPRIO enabled
  • Systems exposing unprivileged user namespaces with CAP_NET_ADMIN scoped capabilities
  • Distributions shipping vulnerable mainline and stable kernels prior to the referenced fix commits

Discovery Timeline

  • 2026-05-27 - CVE-2026-45845 published to NVD
  • 2026-05-27 - Last updated in NVD database

Technical Details for CVE-2026-45845

Vulnerability Analysis

The TAPRIO qdisc implements IEEE 802.1Qbv time-aware traffic scheduling in the Linux kernel networking stack. When user space deletes a child qdisc via RTM_DELQDISC, the kernel invokes taprio_graft() with the new parameter set to NULL, and the function writes NULL into the per-class slot q->qdiscs[cl - 1].

Later, when user space issues an RTM_GETTCLASS dump, the kernel walks every class via taprio_walk() and calls taprio_dump_class(). That handler calls taprio_leaf(), which returns the NULL pointer from the slot, and then dereferences it to read child->handle. The result is a general protection fault flagged by KASAN as a null-ptr-deref in the range [0x38-0x3f], matching the offset of the handle field.

The data-plane paths taprio_enqueue() and taprio_dequeue_from_txq() previously included explicit NULL guards, but the control-plane dump path lacked such checks. The fix substitutes &noop_qdisc for NULL inside taprio_graft(), mirroring the pattern used by multiq_graft(), so every slot in q->qdiscs[] always points to a valid qdisc.

Root Cause

The root cause is an inconsistent invariant on the q->qdiscs[] array. taprio_graft() allowed NULL writes, while consumers such as taprio_dump_class() assumed each slot held a valid struct Qdisc *. The dump path performed no NULL check before dereferencing child->handle [CWE-476].

Attack Vector

The bug is reachable through namespace-scoped CAP_NET_ADMIN. On systems where unprivileged user namespaces are enabled, a local user creates a new network namespace, instantiates a TAPRIO qdisc, grafts an explicit child qdisc, deletes the child, and then issues an RTM_GETTCLASS dump. The dump operation itself requires no capability, making the trigger trivial once the qdisc state is prepared. The result is a kernel general protection fault and denial of service.

The vulnerability is a kernel NULL pointer dereference reachable from local unprivileged code. No remote attack vector or code execution primitive is described in the upstream commit. See the kernel fix commit 3d07ca5 for the patch details.

Detection Methods for CVE-2026-45845

Indicators of Compromise

  • Kernel Oops: general protection fault entries referencing taprio_dump_class in dmesg or /var/log/kern.log
  • KASAN reports flagging null-ptr-deref in range [0x0000000000000038-0x000000000000003f] with RIP inside net/sched/sch_taprio.c
  • Unexpected node reboots or panics correlated with tc class show or netlink RTM_GETTCLASS activity from unprivileged processes

Detection Strategies

  • Audit tc qdisc operations involving TAPRIO from non-root UIDs, especially inside user-namespaced containers
  • Monitor unshare, clone(CLONE_NEWUSER|CLONE_NEWNET), and subsequent netlink RTM_NEWQDISC/RTM_DELQDISC sequences targeting the taprio kind
  • Correlate auditdnetlink events with kernel oops messages to identify trigger sequences

Monitoring Recommendations

  • Forward kernel ring buffer and auditd logs to a centralized analytics platform to detect repeated panics on the same host
  • Track kernel.unprivileged_userns_clone sysctl state across the fleet and flag hosts where it is enabled
  • Alert on container workloads invoking tc against TAPRIO qdiscs without an operational requirement

How to Mitigate CVE-2026-45845

Immediate Actions Required

  • Apply the upstream stable kernel patches that introduce the &noop_qdisc substitution in taprio_graft()
  • Reboot affected hosts after patching to load the corrected kernel image
  • Inventory hosts with CONFIG_NET_SCH_TAPRIO=y or =m and prioritize patching for multi-tenant or container-host systems

Patch Information

The fix is published across multiple stable trees. Relevant commits include 3d07ca5, 48b26d4, 8f1ff88, d02e2fb, and ec2501e. The patch replaces NULL writes with &noop_qdisc, updates data-plane guards to test against &noop_qdisc, and conditions qdisc_put(*old) on *old being a real qdisc to preserve noop_qdisc refcount integrity.

Workarounds

  • Disable unprivileged user namespaces by setting sysctl kernel.unprivileged_userns_clone=0 on Debian/Ubuntu or user.max_user_namespaces=0 on other distributions
  • Unload or blacklist the sch_taprio module on hosts that do not require time-aware traffic shaping
  • Restrict CAP_NET_ADMIN inside container runtimes and drop the capability from workload profiles where feasible

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.