KernelScan.io

HIGH Public exploit Introduced in 4.14

net HFSC Qdisc Corruption

CVE-2025-38177

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 AI7.8HIGH

01

In the Linux kernel, the following vulnerability has been resolved: sch_hfsc: make hfsc_qlen_notify() idempotent hfsc_qlen_notify() is not idempotent either and not friendly to its callers, like fq_codel_dequeue(). Let's make it idempotent to ease qdisc_tree_reduce_backlog() callers' life: 1. update_vf() decreases cl->cl_nactive, so we can check whether it is non-zero before calling it. 2. eltree_remove() always removes RB node cl->el_node, but we can use RB_EMPTY_NODE() + RB_CLEAR_NODE() to make it safe.

02

Engine v0.6.0

Risk summary

A local actor able to administer HFSC traffic-control queues can cause scheduler state to be cleaned up twice, corrupting kernel bookkeeping and crashing the kernel. In multi-tenant environments, tenant code with namespaced network-administration rights could disrupt all services sharing the host kernel.

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

Vulnerability analysis

The vulnerable scheduler assumes that a queue-length notification is delivered only once, but a second notification can perform final deactivation after active state is already gone and attempt to remove the same scheduling entry again, corrupting internal bookkeeping and crashing the kernel. The fix makes cleanup repeatable by skipping final deactivation when nothing remains active and by marking a scheduling entry as removed only when it is actually linked. The path is local and requires permission to configure or control HFSC traffic-control queues, which may be available to a tenant in its own network namespace; no special hardware or remote network access is required.

Exploit availability

KernelScan found public exploit code for this CVE. Open it in the CVE browser to see what we found, where, and how strong the evidence is — that needs a free account with a confirmed email address.

03

BranchIntroducedFixed inPatch commit
5.104.145.10.24172c61ffbeeb8
5.154.145.15.190a5efc95a33bd
5.44.145.4.2979a5fd5c2f4d4
6.14.146.1.1380475c85426b1
6.124.146.12.28d06476714d28
6.144.146.14.6c1175c4ad01d
6.64.146.6.909030a91235ae
mainline4.146.1551eb3b65544c
cip/4.194.144.19.325-cip124d1904bb7bf33
cip/4.19-rt4.144.19.325-cip124-rt44d1904bb7bf33
cip/5.104.145.10.241-cip6472c61ffbeeb8
cip/5.10-rt4.145.10.241-cip64-rt2872c61ffbeeb8
cip/6.14.146.1.141-cip430475c85426b1
cip/6.1-rt4.146.1.141-cip43-rt230475c85426b1
cip/6.124.146.12.29-cip1d06476714d28

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.29-cip1
cip/6.1Fixed in 6.1.141-cip43
cip/6.1-rtFixed in 6.1.141-cip43-rt23
cip/5.10Fixed in 5.10.241-cip64
cip/5.10-rtFixed in 5.10.241-cip64-rt28
cip/4.19Fixed in 4.19.325-cip124
cip/4.19-rtFixed in 4.19.325-cip124-rt44