net_sched: hfsc: Fix a UAF vulnerability in class handling
This patch fixes a Use-After-Free vulnerability in the HFSC qdisc class
handling. The issue occurs due to a time-of-check/time-of-use condition
in hfsc_change_class() when working with certain child qdiscs like netem
or codel.
The vulnerability works as follows:
1. hfsc_change_class() checks if a class has packets (q.qlen != 0)
2. It then calls qdisc_peek_len(), which for certain qdiscs (e.g.,
codel, netem) might drop packets and empty the queue
3. The code continues assuming the queue is still non-empty, adding
the class to vttree
4. This breaks HFSC scheduler assumptions that only non-empty classes
are in vttree
5. Later, when the class is destroyed, this can lead to a Use-After-Free
The fix adds a second queue length check after qdisc_peek_len() to verify
the queue wasn't emptied.
Metrics
Affected Vendors & Products
| Source | ID | Title |
|---|---|---|
Debian DLA |
DLA-4178-1 | linux security update |
Debian DLA |
DLA-4193-1 | linux-6.1 security update |
EUVD |
EUVD-2025-13245 | In the Linux kernel, the following vulnerability has been resolved: net_sched: hfsc: Fix a UAF vulnerability in class handling This patch fixes a Use-After-Free vulnerability in the HFSC qdisc class handling. The issue occurs due to a time-of-check/time-of-use condition in hfsc_change_class() when working with certain child qdiscs like netem or codel. The vulnerability works as follows: 1. hfsc_change_class() checks if a class has packets (q.qlen != 0) 2. It then calls qdisc_peek_len(), which for certain qdiscs (e.g., codel, netem) might drop packets and empty the queue 3. The code continues assuming the queue is still non-empty, adding the class to vttree 4. This breaks HFSC scheduler assumptions that only non-empty classes are in vttree 5. Later, when the class is destroyed, this can lead to a Use-After-Free The fix adds a second queue length check after qdisc_peek_len() to verify the queue wasn't emptied. |
Ubuntu USN |
USN-7594-1 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-7594-2 | Linux kernel (Azure) vulnerabilities |
Ubuntu USN |
USN-7594-3 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-7654-1 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-7654-2 | Linux kernel (Real-time) vulnerabilities |
Ubuntu USN |
USN-7654-3 | Linux kernel (FIPS) vulnerabilities |
Ubuntu USN |
USN-7654-4 | Linux kernel (KVM) vulnerabilities |
Ubuntu USN |
USN-7654-5 | Linux kernel (Xilinx ZynqMP) vulnerabilities |
Ubuntu USN |
USN-7655-1 | Linux kernel (Intel IoTG) vulnerabilities |
Ubuntu USN |
USN-7682-1 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-7682-2 | Linux kernel (Oracle) vulnerabilities |
Ubuntu USN |
USN-7682-3 | Linux kernel (Real-time) vulnerabilities |
Ubuntu USN |
USN-7682-4 | Linux kernel (Low Latency) vulnerabilities |
Ubuntu USN |
USN-7682-5 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-7682-6 | Linux kernel (IBM) vulnerabilities |
Ubuntu USN |
USN-7685-1 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-7685-2 | Linux kernel (Azure) vulnerabilities |
Ubuntu USN |
USN-7685-3 | Linux kernel (FIPS) vulnerabilities |
Ubuntu USN |
USN-7685-4 | Linux kernel (Oracle) vulnerabilities |
Ubuntu USN |
USN-7685-5 | Linux kernel (Oracle) vulnerabilities |
Ubuntu USN |
USN-7686-1 | Linux kernel (Raspberry Pi) vulnerabilities |
Ubuntu USN |
USN-7701-1 | Linux kernel vulnerabilities |
Ubuntu USN |
USN-7701-2 | Linux kernel (FIPS) vulnerabilities |
Ubuntu USN |
USN-7701-3 | Linux kernel (IoT) vulnerabilities |
Ubuntu USN |
USN-7711-1 | Linux kernel (Azure) vulnerabilities |
Ubuntu USN |
USN-7712-1 | Linux kernel (Azure FIPS) vulnerabilities |
Ubuntu USN |
USN-7712-2 | Linux kernel (Azure) vulnerabilities |
Ubuntu USN |
USN-7719-1 | Linux kernel (Raspberry Pi Real-time) vulnerabilities |
Ubuntu USN |
USN-7737-1 | Linux kernel (Azure) vulnerabilities |
Ubuntu USN |
USN-7819-1 | Linux kernel (Azure) vulnerabilities |
Ubuntu USN |
USN-7832-1 | Linux kernel (Oracle) vulnerabilities |
Ubuntu USN |
USN-7819-2 | Linux kernel (Azure FIPS) vulnerabilities |
Solution
No solution given by the vendor.
Workaround
No workaround given by the vendor.
Thu, 06 Nov 2025 21:00:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Debian
Debian debian Linux Linux Linux linux Kernel |
|
| CPEs | cpe:2.3:o:debian:debian_linux:11.0:*:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:4.14:-:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:4.14:rc2:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:4.14:rc3:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:4.14:rc4:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:4.14:rc5:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:4.14:rc6:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:4.14:rc7:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:4.14:rc8:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:6.15:rc2:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:6.15:rc3:*:*:*:*:*:* |
|
| Vendors & Products |
Debian
Debian debian Linux Linux Linux linux Kernel |
|
| Metrics |
cvssV3_1
|
cvssV3_1
|
Mon, 03 Nov 2025 20:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| References |
|
Tue, 10 Jun 2025 06:45:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Weaknesses | CWE-416 | |
| Metrics |
threat_severity
|
threat_severity
|
Sat, 07 Jun 2025 02:45:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
cvssV3_1
|
cvssV3_1
|
Mon, 05 May 2025 14:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| References |
| |
| Metrics |
threat_severity
|
cvssV3_1
|
Fri, 02 May 2025 14:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Description | In the Linux kernel, the following vulnerability has been resolved: net_sched: hfsc: Fix a UAF vulnerability in class handling This patch fixes a Use-After-Free vulnerability in the HFSC qdisc class handling. The issue occurs due to a time-of-check/time-of-use condition in hfsc_change_class() when working with certain child qdiscs like netem or codel. The vulnerability works as follows: 1. hfsc_change_class() checks if a class has packets (q.qlen != 0) 2. It then calls qdisc_peek_len(), which for certain qdiscs (e.g., codel, netem) might drop packets and empty the queue 3. The code continues assuming the queue is still non-empty, adding the class to vttree 4. This breaks HFSC scheduler assumptions that only non-empty classes are in vttree 5. Later, when the class is destroyed, this can lead to a Use-After-Free The fix adds a second queue length check after qdisc_peek_len() to verify the queue wasn't emptied. | |
| Title | net_sched: hfsc: Fix a UAF vulnerability in class handling | |
| References |
|
|
Status: PUBLISHED
Assigner: Linux
Published:
Updated: 2025-11-03T19:55:28.428Z
Reserved: 2025-04-16T04:51:23.941Z
Link: CVE-2025-37797
No data.
Status : Analyzed
Published: 2025-05-02T15:15:48.557
Modified: 2025-11-06T20:48:20.637
Link: CVE-2025-37797
OpenCVE Enrichment
No data.
Debian DLA
EUVD
Ubuntu USN