CVE-2026-98427
NieznaneStreszczenie
W jądrze Linux w kodzie algorytmu CoDel (net/sched) pętla odrzucania w codel_dequeue() mogła nie przesuwać się do przodu przy bardzo małych wartościach interwału, co prowadziło do opróżnienia całego backlogu pod blokadą qdisc w jednym wywołaniu. Nieuprzywilejowany użytkownik mógł w ten sposób wywołać soft lockup. Poprawka ogranicza krok pętli do co najmniej 1 ticka oraz maksymalnie 256 odrzuceń na wywołanie codel_dequeue().
Ocena ryzyka
Podatność pozwala lokalnemu, nieuprzywilejowanemu użytkownikowi na wywołanie soft lockup jądra poprzez odpowiednią konfigurację qdisc codel/fq_codel i zalanie UDP, co może prowadzić do zawieszenia systemu i odmowy usługi.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę dla CVE-2026-98427. Do czasu aktualizacji unikaj konfiguracji qdisc codel/fq_codel z ekstremalnie małymi interwałami (np. 2us) na współdzielonych systemach.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-98431Nieznane
W jądrze Linux występuje zakleszczenie (deadlock) typu ABBA pomiędzy blokadami mmap_lock i disassociation_lock w podsystemie RDMA/uverbs. Wątek wykonujący mmap/fork zakłada blokady w kolejności mmap_lock → disassociation_lock, natomiast wątek wykonujący uverbs_user_mmap_disassociate() w kolejności odwrotnej, co prowadzi do możliwego zakleszczenia. Problem został rozwiązany poprzez usunięcie disassociation_lock i użycie istniejącej blokady hw_destroy_rwsem.
- CVE-2026-98430Nieznane
W jądrze Linux w sterowniku RDMA/efa procedura obsługi przerwania zarządzającego uzyskuje dostęp zarówno do kolejki ukończeń administracyjnych, jak i do kolejki zdarzeń asynchronicznych. Sterownik rejestrował przerwanie przed utworzeniem tych kolejek i niszczył je przed zwolnieniem przerwania, przez co czas życia procedury obsługi nie był ograniczony przez zasoby, do których się odwołuje. Poprawka inicjalizuje kolejki z zamaskowanymi przerwaniami, rejestruje przerwanie, a następnie przełącza w tryb przerwań, a przy usuwaniu resetuje urządzenie i zwalnia przerwanie przed zniszczeniem kolejek.
- CVE-2026-98429Nieznane
W jądrze Linux w sterowniku RDMA/efa procedura obsługi przerwania ukończeń uzyskuje dostęp do stanu EQ i bufora DMA. Jej przerwanie było rejestrowane przed zainicjalizowaniem tego stanu, a demontaż zwalniał bufor przed free_irq() synchronizującym procedurę obsługi. Poprawka inicjalizuje EQ bez uzbrajania go, rejestruje przerwanie, a następnie je uzbraja, a przy demontażu zwalnia przerwanie przed zniszczeniem EQ.
- CVE-2026-98428Nieznane
W jądrze Linux sterownik USB 6fire używa URB osadzonych w różnych strukturach dla PCM, MIDI i komunikacji, co jest wadliwą implementacją; ponieważ URB jest zarządzany przez licznik referencji, może to prowadzić do użycia zwolnionej pamięci (UAF), gdy URB jest zwalniany asynchronicznie. Poprawka konwertuje te osadzone URB na alokowane przez usb_alloc_urb(), zamieniając każde osadzone struct urb na wskaźnik i aktualizując wywołania; zasoby są zwalniane w wspólnych destruktorach wywoływanych zarówno przy błędzie inicjalizacji, jak i przy odłączeniu.
- CVE-2026-98426Nieznane
W jądrze Linux w sterowniku wifi mwifiex funkcja mwifiex_pcie_request_irq() rejestruje każdy wektor MSI-X z dev_id dla danego indeksu (&card->msix_ctx[i]). Przy błędzie request_irq() pętla czyszcząca "for (j = 0; j < i; j++)" zwalnia msix_entries[j].vector, ale przekazuje &card->msix_ctx[i] z nieudanego indeksu jako dev_id. Ponieważ free_irq() dopasowuje po (irq, dev_id), nie znajduje akcji zarejestrowanej z &card->msix_ctx[j]: już zarejestrowane przerwanie j nie jest zwalniane (wyciek), a free_irq() ostrzega o zwalnianiu nieistniejącego przerwania. Poprawka używa &card->msix_ctx[j].
- CVE-2026-98425Nieznane
W jądrze Linux funkcja ieee80211_request_ibss_scan() w module mac80211 wywołuje ostrzeżenie, gdy regdomain nie pozostawia żadnego dozwolonego kanału do skanowania. Sytuacja ta może wystąpić, ponieważ regdomain może się zmienić podczas pracy interfejsu IBSS, który może działać jeszcze przez 60-sekundowy okres karencji przed wyłączeniem. Poprawka usuwa to ostrzeżenie.
- CVE-2026-98424Nieznane
W jądrze Linux funkcja cfg80211_switch_netns() w module cfg80211 przenosi interfejsy, a następnie przenosi samo wiphy, ustawiając jego przestrzeń nazw sieci i zmieniając nazwę, co powoduje przeniesienie w sysfs. Zmiana nazwy może się nie powieść (tylko przy błędach alokacji), pozostawiając niespójny stan i wywołując ostrzeżenie. Poprawka cofa przeniesienie i pozwala operacji zakończyć się niepowodzeniem, a jeśli cofnięcie się nie powiedzie, wywołuje WARN.
- CVE-2026-98423Nieznane
W jądrze Linux moduł mac80211_hwsim sprawdza pole ->started dla ramek pochodzących z wmediumd, ale radio może zostać zatrzymane po sprawdzeniu, a przed dostarczeniem ramki, co powoduje wywołanie WARN_ON(!local->started) w mac80211. Poprawka rozszerza zakres blokady mutex i synchronizuje się z nią przy zatrzymywaniu radia, a także usuwa zbędny komunikat błędu.
- CVE-2026-98422Nieznane
W jądrze Linux moduł mac80211 przy interfejsach AP_VLAN pobiera crypto_tx_tailroom_needed_cnt z interfejsu AP przy ifup, ale nigdy nie zmniejsza tego licznika, chyba że AP również zostanie wyłączony. Ponowne włączenie tego samego AP_VLAN ponownie zwiększa licznik, co ostatecznie wywołuje sprawdzenie WARN_ON_ONCE. Poprawka resetuje licznik przy ifdown.
- CVE-2026-98421Nieznane
W jądrze Linux moduł mac80211 wymaga, aby potwierdzenie konfiguracji TDLS (WLAN_TDLS_SETUP_CONFIRM) było kierowane do istniejącej stacji TDLS. W przeciwnym razie podczas budowania ramki wywoływane jest ostrzeżenie WARN_ON_ONCE(!sta || !ap_sta). Poprawka akceptuje WLAN_TDLS_SETUP_CONFIRM tylko wtedy, gdy stacja już istnieje jako stacja TDLS.
Oryginalny opis (angielski, źródło NVD)
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).
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

