Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

redhat логотип

CVE-2026-98427

Опубликовано: 14 окт. 2026
Источник: redhat
CVSS3: 5.5
EPSS Низкий

Описание

In the Linux kernel, the following vulnerability has been resolved: net/sched: codel: bound the dropping loop per dequeue call The CoDel control law schedules the next drop one interval/sqrt(count) after the previous drop, using the configured interval (codel_params.interval). For very small intervals the scheduled step rounds down to zero, so the dropping loop in codel_dequeue() never advances and drains the entire backlog under the qdisc lock in one call - an unprivileged user can trigger a soft lockup this way. Fix in the shared codel code used by both codel and fq_codel:

  1. Make the control-law step at least 1 tick so the dropping loop always moves forward.
  2. Cap the dropping loop at CODEL_MAX_DROPS_PER_DEQUEUE (256) drops per codel_dequeue() call, resyncing drop_next to now when the cap is hit: the catch-up owed to the loop grows with the idle gap and the backlog, which no interval threshold can bound. This is a deliberate behaviour change after long idle gaps. The cap applies to fq_codel (4b549a2ef4be) and the mac80211 TXQ path (fixed interval, cap only). The target sojourn delay (codel_params.target) is not validated: it does not feed the control law, so a sub-tick value is aggressive rather than deadlock-prone. Conditions to recreate the bug:
  • tc qdisc add dev lo root handle 1: tbf rate 1kbit burst 2kb limit 1000000
  • tc qdisc add dev lo parent 1:1 handle 10: codel interval 2us target 1ms noecn limit 1000000 (same for fq_codel)
  • unpatched kernel: tc accepts it; a UDP flood under the 1kbit tbf soft-lockups (watchdog: BUG: soft lockup) while one codel_dequeue() call drops the backlog under the qdisc lock
  • patched kernel: same setup, at most 256 drops per dequeue call, no soft lockup Testing: claim reproducer and interval 2us/3us variants run clean; tdc qdisc category passes (see the selftests patch).

    A flaw was found in the Linux kernel's CoDel (Controlled Delay) network packet scheduling subsystem. An unprivileged local user can trigger a Denial of Service (DoS) by configuring extremely small packet intervals on network queues. This flaw causes the packet-dropping logic to enter an unbounded loop while holding a system lock, resulting in a CPU soft lockup that renders the system unresponsive.

Отчет

Red Hat Product Security has rated the security impact of this issue as Low for the affected products: the kernel and kernel-rt packages in Red Hat Enterprise Linux 7 and 8, and the RHEL CoreOS 8 kernel shipped in OpenShift Container Platform 4.12. The Red Hat Enterprise Linux 6, 9, and 10 kernels, the RHEL CoreOS 9 kernel used by later OpenShift Container Platform releases, and Red Hat In-Vehicle OS are not affected. A flaw was found in the Linux kernel's CoDel (Controlled Delay) packet scheduler (net/sched/codel), whose implementation is shared by the codel and fq_codel queueing disciplines. When a codel or fq_codel queue is configured with a very small interval, the CoDel control-law step between scheduled drops rounds down to zero, so the packet-dropping loop in codel_dequeue() never advances and instead drains the entire queue backlog while holding the qdisc lock. An unprivileged local user with the ability to set up such a queueing configuration (for example, by gaining CAP_NET_ADMIN within a user and network namespace) and to generate traffic through it can keep the CPU spinning in this loop, producing a kernel soft lockup that makes the system unresponsive. The issue affects availability only; there is no impact on confidentiality or integrity. The Red Hat CVSS base score is 5.5 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H), with the Low impact rating reflecting the local attack vector, the prerequisite non-default queueing configuration, and the denial-of-service-only consequence. For the affected Red Hat Enterprise Linux 7 and 8 streams, delivery of a fix is currently deferred. The residual risk is a local denial of service: exploitation requires local access, the ability to configure a queueing discipline with a sub-tick interval, and sufficient queued traffic, and it does not cross privilege or trust boundaries or otherwise compromise the system.

Меры по смягчению последствий

Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.

Затронутые пакеты

ПлатформаПакетСостояниеРекомендацияРелиз
Red Hat Enterprise Linux 10kernelNot affected
Red Hat Enterprise Linux 6kernelNot affected
Red Hat Enterprise Linux 7kernelFix deferred
Red Hat Enterprise Linux 7kernel-rtFix deferred
Red Hat Enterprise Linux 8kernelFix deferred
Red Hat Enterprise Linux 8kernel-rtFix deferred
Red Hat Enterprise Linux 9kernelNot affected
Red Hat Enterprise Linux 9kernel-rtNot affected
Red Hat OpenShift Container Platform 4openshift/ose-rhel-coreos-8Fix deferred
Red Hat OpenShift Container Platform 4openshift/ose-rhel-coreos-9Not affected

Показывать по

Дополнительная информация

Статус:

Low
Дефект:
CWE-835
https://bugzilla.redhat.com/show_bug.cgi?id=2552199kernel: net/sched: codel: bound the dropping loop per dequeue call

EPSS

Процентиль: 10%
0.00198
Низкий

5.5 Medium

CVSS3

Связанные уязвимости

ubuntu
29 дней назад

In the Linux kernel, the following vulnerability has been resolved: net/sched: codel: bound the dropping loop per dequeue call The CoDel control law schedules the next drop one interval/sqrt(count) after the previous drop, using the configured interval (codel_params.interval). For very small intervals the scheduled step rounds down to zero, so the dropping loop in codel_dequeue() never advances and drains the entire backlog under the qdisc lock in one call - an unprivileged user can trigger a soft lockup this way. Fix in the shared codel code used by both codel and fq_codel: 1. Make the control-law step at least 1 tick so the dropping loop always moves forward. 2. Cap the dropping loop at CODEL_MAX_DROPS_PER_DEQUEUE (256) drops per codel_dequeue() call, resyncing drop_next to now when the cap is hit: the catch-up owed to the loop grows with the idle gap and the backlog, which no interval threshold can bound. This is a deliberate behaviour change after long idle gaps. The cap applies...

nvd
29 дней назад

In the Linux kernel, the following vulnerability has been resolved: net/sched: codel: bound the dropping loop per dequeue call The CoDel control law schedules the next drop one interval/sqrt(count) after the previous drop, using the configured interval (codel_params.interval). For very small intervals the scheduled step rounds down to zero, so the dropping loop in codel_dequeue() never advances and drains the entire backlog under the qdisc lock in one call - an unprivileged user can trigger a soft lockup this way. Fix in the shared codel code used by both codel and fq_codel: 1. Make the control-law step at least 1 tick so the dropping loop always moves forward. 2. Cap the dropping loop at CODEL_MAX_DROPS_PER_DEQUEUE (256) drops per codel_dequeue() call, resyncing drop_next to now when the cap is hit: the catch-up owed to the loop grows with the idle gap and the backlog, which no interval threshold can bound. This is a deliberate behaviour change after long idle gaps

CVSS3: 5.5
msrc
27 дней назад

net/sched: codel: bound the dropping loop per dequeue call

debian
29 дней назад

In the Linux kernel, the following vulnerability has been resolved: n ...

github
29 дней назад

In the Linux kernel, the following vulnerability has been resolved: net/sched: codel: bound the dropping loop per dequeue call The CoDel control law schedules the next drop one interval/sqrt(count) after the previous drop, using the configured interval (codel_params.interval). For very small intervals the scheduled step rounds down to zero, so the dropping loop in codel_dequeue() never advances and drains the entire backlog under the qdisc lock in one call - an unprivileged user can trigger a soft lockup this way. Fix in the shared codel code used by both codel and fq_codel: 1. Make the control-law step at least 1 tick so the dropping loop always moves forward. 2. Cap the dropping loop at CODEL_MAX_DROPS_PER_DEQUEUE (256) drops per codel_dequeue() call, resyncing drop_next to now when the cap is hit: the catch-up owed to the loop grows with the idle gap and the backlog, which no interval threshold can bound. This is a deliberate behaviour change after long idle g...

EPSS

Процентиль: 10%
0.00198
Низкий

5.5 Medium

CVSS3