Linux Kernel up to 6.16.3/6.17-rc2 sched qdisc_dequeue_internal infinite loop

| CVSS Meta Temp Score | Current Exploit Price (≈) | CTI Interest Score |
|---|---|---|
| 5.5 | $0-$5k | 0.00 |
Summary
A vulnerability was found in Linux Kernel up to 6.16.3/6.17-rc2 and classified as critical. Affected by this vulnerability is the function qdisc_dequeue_internal of the component sched. The manipulation results in infinite loop.
This vulnerability is reported as CVE-2025-39677. No exploit exists.
It is suggested to upgrade the affected component.
Details
A vulnerability was found in Linux Kernel up to 6.16.3/6.17-rc2. It has been classified as critical. Affected is the function qdisc_dequeue_internal of the component sched. The manipulation with an unknown input leads to a infinite loop vulnerability. CWE is classifying the issue as CWE-835. The product contains an iteration or loop with an exit condition that cannot be reached, i.e., an infinite loop. This is going to have an impact on availability. CVE summarizes:
In the Linux kernel, the following vulnerability has been resolved: net/sched: Fix backlog accounting in qdisc_dequeue_internal This issue applies for the following qdiscs: hhf, fq, fq_codel, and fq_pie, and occurs in their change handlers when adjusting to the new limit. The problem is the following in the values passed to the subsequent qdisc_tree_reduce_backlog call given a tbf parent: When the tbf parent runs out of tokens, skbs of these qdiscs will be placed in gso_skb. Their peek handlers are qdisc_peek_dequeued, which accounts for both qlen and backlog. However, in the case of qdisc_dequeue_internal, ONLY qlen is accounted for when pulling from gso_skb. This means that these qdiscs are missing a qdisc_qstats_backlog_dec when dropping packets to satisfy the new limit in their change handlers. One can observe this issue with the following (with tc patched to support a limit of 0): export TARGET=fq tc qdisc del dev lo root tc qdisc add dev lo root handle 1: tbf rate 8bit burst 100b latency 1ms tc qdisc replace dev lo handle 3: parent 1:1 $TARGET limit 1000 echo ''; echo 'add child'; tc -s -d qdisc show dev lo ping -I lo -f -c2 -s32 -W0.001 127.0.0.1 2>&1 >/dev/null echo ''; echo 'after ping'; tc -s -d qdisc show dev lo tc qdisc change dev lo handle 3: parent 1:1 $TARGET limit 0 echo ''; echo 'after limit drop'; tc -s -d qdisc show dev lo tc qdisc replace dev lo handle 2: parent 1:1 sfq echo ''; echo 'post graft'; tc -s -d qdisc show dev lo The second to last show command shows 0 packets but a positive number (74) of backlog bytes. The problem becomes clearer in the last show command, where qdisc_purge_queue triggers qdisc_tree_reduce_backlog with the positive backlog and causes an underflow in the tbf parent's backlog (4096 Mb instead of 0). To fix this issue, the codepath for all clients of qdisc_dequeue_internal has been simplified: codel, pie, hhf, fq, fq_pie, and fq_codel. qdisc_dequeue_internal handles the backlog adjustments for all cases that do not directly use the dequeue handler. The old fq_codel_change limit adjustment loop accumulated the arguments to the subsequent qdisc_tree_reduce_backlog call through the cstats field. However, this is confusing and error prone as fq_codel_dequeue could also potentially mutate this field (which qdisc_dequeue_internal calls in the non gso_skb case), so we have unified the code here with other qdiscs.
The advisory is shared for download at git.kernel.org. This vulnerability is traded as CVE-2025-39677 since 04/16/2025. There are known technical details, but no exploit is available.
The vulnerability scanner Nessus provides a plugin with the ID 261622 (Linux Distros Unpatched Vulnerability : CVE-2025-39677), which helps to determine the existence of the flaw in a target environment.
Upgrading to version 6.16.4 or 6.17-rc3 eliminates this vulnerability. Applying the patch a225f44d84b8900d679c5f5a9ea46fe9c0cc7802/52bf272636bda69587952b35ae97690b8dc89941 is able to eliminate this problem. The bugfix is ready for download at git.kernel.org. The best possible mitigation is suggested to be upgrading to the latest version.
The vulnerability is also documented in the databases at Tenable (261622) and CERT Bund (WID-SEC-2025-1988). VulDB is the best source for vulnerability data and more expert information about this specific topic.
Affected
- Debian Linux
- Google Cloud Platform
- Amazon Linux 2
- Red Hat Enterprise Linux
- Ubuntu Linux
- SUSE Linux
- Oracle Linux
- NetApp FAS
- NetApp AFF
- NetApp ActiveIQ Unified Manager
- SUSE openSUSE
- RESF Rocky Linux
- Open Source Linux Kernel
- Microsoft Azure
- Dell Secure Connect Gateway
- IBM QRadar SIEM
- IBM Security Verify Access
- Dell NetWorker
Product
Type
Vendor
Name
Version
License
Website
- Vendor: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔒VulDB Reliability: 🔍
CVSSv3
VulDB Meta Base Score: 5.6VulDB Meta Temp Score: 5.5
VulDB Base Score: 5.7
VulDB Temp Score: 5.5
VulDB Vector: 🔒
VulDB Reliability: 🔍
NVD Base Score: 5.5
NVD Vector: 🔒
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complexity | Authentication | Confidentiality | Integrity | Availability |
|---|---|---|---|---|---|
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Reliability: 🔍
Exploiting
Class: Infinite loopCWE: CWE-835 / CWE-404
CAPEC: 🔒
ATT&CK: 🔒
Physical: Partially
Local: Yes
Remote: Partially
Availability: 🔒
Status: Not defined
EPSS Score: 🔒
EPSS Percentile: 🔒
Price Prediction: 🔍
Current Price Estimation: 🔒
| 0-Day | Unlock | Unlock | Unlock | Unlock |
|---|---|---|---|---|
| Today | Unlock | Unlock | Unlock | Unlock |
Nessus ID: 261622
Nessus Name: Linux Distros Unpatched Vulnerability : CVE-2025-39677
Threat Intelligence
Interest: 🔍Active Actors: 🔍
Active APT Groups: 🔍
Countermeasures
Recommended: UpgradeStatus: 🔍
0-Day Time: 🔒
Upgrade: Kernel 6.16.4/6.17-rc3
Patch: a225f44d84b8900d679c5f5a9ea46fe9c0cc7802/52bf272636bda69587952b35ae97690b8dc89941
Timeline
04/16/2025 CVE reserved09/05/2025 Advisory disclosed
09/05/2025 VulDB entry created
02/09/2026 VulDB entry last update
Sources
Vendor: kernel.orgAdvisory: git.kernel.org
Status: Confirmed
CVE: CVE-2025-39677 (🔒)
GCVE (CVE): GCVE-0-2025-39677
GCVE (VulDB): GCVE-100-322872
CERT Bund: WID-SEC-2025-1988 - Linux Kernel: Mehrere Schwachstellen ermöglichen Denial of Service
Entry
Created: 09/05/2025 21:40Updated: 02/09/2026 11:54
Changes: 09/05/2025 21:40 (59), 09/07/2025 06:04 (2), 09/09/2025 08:23 (7), 11/06/2025 15:58 (1), 11/25/2025 20:57 (1), 11/26/2025 16:04 (10), 11/27/2025 14:46 (1), 12/29/2025 11:03 (1), 01/05/2026 10:32 (1), 02/09/2026 11:54 (1)
Complete: 🔍
Cache ID: 216::103
VulDB is the best source for vulnerability data and more expert information about this specific topic.
No comments yet. Languages: en.
Please log in to comment.