Katalog CVE

CVE-2026-74284

Niskie ryzyko· EPSS 12%
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.21%

Percentyl 12 - wyżej niż 12% wszystkich znanych CVE

Streszczenie

W jądrze Linux wykryto podatność w schedulerze sieciowym HFSC (sch_hfsc). Podczas pojedynczego dequeuing klasa może być dwukrotnie oznaczona jako pasywna, co prowadzi do nieprawidłowego dekrementowania licznika aktywnych klas rodzica. W efekcie rodzic z aktywnymi klasami potomnymi zostaje usunięty z drzewa vttree, a kolejki przestają być obsługiwane (stall).

Ocena ryzyka

Podatność może prowadzić do całkowitego zatrzymania ruchu sieciowego na interfejsach używających dyscypliny HFSC, co skutkuje przerwą w dostępności usług sieciowych. Atakujący może celowo wywołać ten scenariusz, wysyłając odpowiednio spreparowany ruch, powodując DoS.

Rekomendacja

Zaleca się natychmiastowe zaktualizowanie jądra Linux do wersji zawierającej poprawkę (commit rozwiązujący problem). Jeśli aktualizacja nie jest możliwa, należy rozważyć tymczasowe wyłączenie dyscypliny HFSC lub ograniczenie jej użycia do czasu wdrożenia poprawki.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_hfsc: Don't make class passive twice update_vf() is called from two places for the same class during a single dequeue when the class's child qdisc (e.g. codel/fq_codel) drops its last packets while dequeuing: 1. The child calls qdisc_tree_reduce_backlog(), which, now that the child is empty, invokes hfsc_qlen_notify() -> update_vf(cl, 0, 0) and turns the class passive (cl_nactive is decremented up the hierarchy). 2. hfsc_dequeue() then calls update_vf(cl, qdisc_pkt_len(skb), cur_time) to charge the dequeued bytes. On the second call the class is already passive, but its child qdisc is still empty, so update_vf() arms go_passive again: if (cl->qdisc->q.qlen == 0 && cl->cl_flags & HFSC_FSC) go_passive = 1; The leaf is then skipped by the cl_nactive == 0 check inside the loop, which does not clear go_passive, so the stale go_passive propagates to the parent and decrements its cl_nactive a second time. A parent that still has other active children is driven to cl_nactive == 0 and removed from the vttree, even though those siblings are still backlogged. They are never dequeued again and the qdisc stalls. Fix this by only arming go_passive when the class is actually active, so an already-passive class no longer triggers a second passive transition. The byte accounting (cl->cl_total += len) still runs for every ancestor, so dequeued bytes continue to be counted exactly once.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS