CVE-2025-38001: net_sched: hfsc: Address reentrant enqueue adding class to eltree twice
In the Linux kernel, the following vulnerability has been resolved:
net_sched: hfsc: Address reentrant enqueue adding class to eltree twice
Savino says:
"We are writing to report that this recent patch
(141d34391abbb315d68556b7c67ad97885407547) [1]
can be bypassed, and a UAF can still occur when HFSC is utilized with
NETEM.
The patch only checks the cl->cl_nactive field to determine whether
it is the first insertion or not [2], but this field is only
incremented by init_vf [3].
By using HFSC_RSC (which uses init_ed) [4], it is possible to bypass the
check and insert the class twice in the eltree.
Under normal conditions, this would lead to an infinite loop in
hfsc_dequeue for the reasons we already explained in this report [5].
However, if TBF is added as root qdisc and it is configured with a
very low rate,
it can be utilized to prevent packets from being dequeued.
This behavior can be exploited to perform subsequent insertions in the
HFSC eltree and cause a UAF."
To fix both the UAF and the infinite loop, with netem as an hfsc child,
check explicitly in hfsc_enqueue whether the class is already in the eltree
whenever the HFSC_RSC flag is set.
[1] https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=141d34391abbb315d68556b7c67ad97885407547
[2] https://elixir.bootlin.com/linux/v6.15-rc5/source/net/sched/sch_hfsc.c#L1572
[3] https://elixir.bootlin.com/linux/v6.15-rc5/source/net/sched/sch_hfsc.c#L677
[4] https://elixir.bootlin.com/linux/v6.15-rc5/source/net/sched/sch_hfsc.c#L1574
[5] https://lore.kernel.org/netdev/8DuRWwfqjoRDLDmBMlIfbrsZg9Gx50DHJc1ilxsEBNe2D6NMoigR_eIRIG0LOjMc3r10nUUZtArXx4oZBIdUfZQrwjcQhdinnMis_0G7VEk=@willsroot.io/T/#u
Security readout for executives and security teams
Plain-English summary
CVE-2025-38001 is a Linux kernel traffic-scheduling flaw. A locally authenticated attacker with low privileges may trigger memory reuse or a system hang when specific HFSC and NETEM scheduling conditions exist. Successful exploitation could affect confidentiality, integrity, and availability. General internet exposure alone is insufficient; the vulnerable kernel functionality must be reachable locally.
Executive priority
Prioritize patching shared Linux hosts, network appliances, and other systems where untrusted local users may access traffic-control functionality. Internet-facing status alone does not determine risk. Treat exposed multi-user systems as urgent; handle systems without HFSC and NETEM through normal high-severity kernel maintenance after configuration validation.
Technical view
Reentrant enqueue processing can add an HFSC class to the eligible tree twice. The earlier cl_nactive check is bypassable because HFSC_RSC follows the init_ed path rather than init_vf. With NETEM involved, duplicate insertion can cause an infinite dequeue loop or use-after-free. The cited Linux stable commits explicitly check whether the class is already present.
Likely exposure
Exposure is concentrated on affected Linux systems where HFSC traffic scheduling is used with NETEM and a low-privileged local user can reach the relevant functionality. The supplied affected-version data spans multiple kernel branches, but its formatting is ambiguous; determine exposure using distribution advisories and applicable stable fixes rather than version strings alone.
Exploitation context
The CVSS 3.1 score is 7.8 with local access, low complexity, low privileges, and no user interaction. The source bundle marks CISA KEV as false and provides no evidence of exploitation in the wild. Public technical analysis exists, so absence from KEV should not be treated as proof that exploitation is impossible.
Researcher notes
The important distinction is that the earlier fix relied on cl_nactive, which init_ed does not increment. HFSC_RSC can therefore permit a second eligible-tree insertion. The supplied record names both infinite-loop and use-after-free outcomes and links branch-specific stable commits. Exact downstream package status is not established by these sources.
Mitigation direction
Install a vendor kernel package containing the applicable cited Linux stable fix or downstream backport.
Check distribution guidance to identify the correct fixed package for each deployed kernel branch.
Until patched, avoid HFSC configurations with NETEM child qdiscs where operationally feasible.
Restrict untrusted local access to systems requiring the affected traffic-scheduling configuration.
Validation and detection
Inventory running kernel versions and compare them with distribution advisories and fixed packages.
Identify hosts and network namespaces using HFSC with NETEM child qdiscs.
Confirm the running kernel contains the applicable stable commit or a documented downstream backport.
After updating, confirm systems are running the newly installed kernel.
Review kernel logs for scheduler hangs or memory-safety faults; their absence does not prove safety.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2025-38001 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
1ADP providers
13Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.