CVE-2026-98228
WysokieCVSS 7.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
W jądrze Linux dla procesorów MIPS I6500 brakuje wymaganego wyboru opcji CONFIG_WEAK_REORDERING_BEYOND_LLSC przy CONFIG_EYEQ. Instrukcje lld/scd na tych rdzeniach nie gwarantują kolejności, co powoduje, że arch_cmpxchg() nie jest w pełni uporządkowany. Może to prowadzić do błędów strony (kernel paging request) i awarii systemu, jak pokazano w raporcie oops.
Ocena ryzyka
Organizacje korzystające z systemów opartych na MIPS I6500 (np. platformy EyeQ5) są narażone na niestabilność jądra, awarie i potencjalne naruszenie integralności danych w wyniku nieprawidłowej kolejności operacji atomowych. Atakujący może wykorzystać tę podatność do wywołania odmowy usługi (DoS) lub eskalacji uprawnień.
Rekomendacja
Należy natychmiast zaktualizować jądro Linux do wersji zawierającej poprawkę, która wymusza wybór CONFIG_WEAK_REORDERING_BEYOND_LLSC dla CONFIG_EYEQ. Jeśli aktualizacja nie jest możliwa, należy rozważyć ręczne włączenie tej opcji w konfiguracji jądra i przebudowanie systemu.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-99216Nieznane
W jądrze Linux w sterowniku Hyper-V (hv) występuje błąd polegający na wymuszaniu stanu DISCONNECTED przed wywołaniem vmbus_disconnect(). Powoduje to, że vmbus_initiate_unload() nie odłącza połączenia VMBus, ponieważ sprawdza on stan CONNECTED, w wyniku czego host Hyper-V może nadal wysyłać komunikaty lub przerwania VMBus.
- CVE-2026-99215Nieznane
W jądrze Linux w podsystemie power supply występuje luka use-after-free. Jeśli zasilacz zostanie wyrejestrowany (power_supply_unregister) w trakcie wykonywania callbacku external_power_changed(), sterownik może zwolnić dane, do których callback nadal próbuje uzyskać dostęp, co prowadzi do awarii jądra (NULL pointer dereference).
- CVE-2026-99214Nieznane
W jądrze Linux w sterowniku drm/vc4 dla HDMI występuje problem z kolejnością włączania Packet RAM. Gdy dźwięk jest wyzwalany przez obsługę HPD przed przywróceniem obrazu, funkcja vc4_hdmi_write_infoframe() może próbować zapisać infoframe przy wyłączonym Packet RAM, co powoduje ostrzeżenie jądra (splat). Poprawka przenosi włączanie/wyłączanie Packet RAM do hooków Runtime PM.
- CVE-2026-99213Nieznane
W podsystemie vsock jądra Linux przejście ze stanu TCP_ESTABLISHED do TCP_CLOSING przy odebraniu OP_RST może wyścignąć się z pętlą connect. Reset gniazda wciąż obecnego w connected_table może prowadzić do uszkodzenia pamięci, w tym podwójnego dodania do listy i błędu jądra.
- CVE-2026-99212Nieznane
W module net/rds jądra Linux funkcja rds_rdma_cm_event_handler_cmn() zwraca wynik rdma_resolve_route() bezpośrednio do rdma_cm przy zdarzeniu RDMA_CM_EVENT_ADDR_RESOLVED. Synchroniczny błąd powoduje zniszczenie identyfikatora ic->i_cm_id, który nadal jest używany przez RDS, co prowadzi do użycia zwolnionego identyfikatora przy zamykaniu połączenia.
- CVE-2026-99211Nieznane
W podsystemie netlink jądra Linux filtry gniazd mogą używać SKF_NET_OFF i SKF_LL_OFF do odczytu względem nagłówków sieciowych i MAC skb. Producenci netlink mogą rezerwować headroom bez resetowania tych nagłówków, co pozwala filtrowi odbierającego gniazda odczytać dane sprzed zainicjowanej wiadomości i ujawnić zawartość pamięci.
- CVE-2026-99210Nieznane
W sterowniku accel/rocket jądra Linux funkcja rocket_probe() zapisuje wynik rocket_device_init() w globalnym wskaźniku rdev przed sprawdzeniem, czy jest to wskaźnik błędu. Przy niepowodzeniu rdev pozostaje jako ERR_PTR, a późniejsza próba może pominąć inicjalizację i wyłuskać wskaźnik błędu przy odczycie rdev->num_cores.
- CVE-2026-99209Nieznane
W sterowniku drm/xe jądra Linux funkcja xe_evict_flags() odczytuje tbo->resource->mem_type, ale bufor BO może trafić do eksmisji bez ttm.resource, np. importowany dma-buf, którego zasób zwolniono podczas rozbierania. Prowadzi to do wyłuskania wskaźnika NULL i błędu jądra.
- CVE-2026-99208Nieznane
W sterowniku drm/xe/oa jądra Linux bufory BO typu ttm_bo_type_kernel nie są gwarantowanie zerowane przy alokacji i mogą zawierać dane z wcześniej zwolnionych stron. Ponieważ bufor OA jest mapowalny przez przestrzeń użytkownika, może to ujawnić nieaktualną zawartość pamięci jądra.
- CVE-2026-99207Nieznane
W jądrze Linux w podsystemie scsi: target funkcja target_do_delayed_work() pobierała blokadę delayed_cmd_lock za pomocą zwykłego spin_lock(), nie wyłączając przerwań, podczas gdy wszystkie inne miejsca używają spin_lock_irqsave(). Odkąd komendy mogą być kończone w kontekście przerwania (complete_type=1 z direct_compl_supp), może to prowadzić do zakleszczenia, gdy ukończenie komendy trafi na ten sam CPU, na którym work item trzyma blokadę.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: mips: select CONFIG_WEAK_REORDERING_BEYOND_LLSC from CONFIG_EYEQ On I6500 CPU cores, lld and scd give no ordering guarantees (same as all other instructions). To respect the assumption that arch_cmpxchg() is fully ordered, we must inject sync instructions above and below our lld/scd loops using the already in place WEAK_REORDERING_BEYOND_LLSC infrastructure. Otherwise, bad things can happen: [ 34.054496] CPU 3 Unable to handle kernel paging request at virtual address 0000000000000000, epc == a80000080838e01c, ra == a80000080838dfc4 [ 34.054559] Oops[#1]: [ 34.069561] CPU: 3 UID: 0 PID: 170 Comm: pipe_race Not tainted 7.2.0-rc6-01553-gb73c35220968-dirty #103 VOLUNTARY [ 34.079932] Hardware name: Mobile EyeQ5 MP5 Evaluation board [ 34.085592] $ 0 : 0000000000000000 0000000000000001 0000000000000000 0000000000000000 [ 34.093616] $ 4 : a800000808ee2618 000000000b7a879d 0000000000001000 0000000000000000 [ 34.101638] $ 8 : 0000000000e3f2c9 0000000000000000 a800000808a2a9f8 0000000000000000 [ 34.109660] $12 : a8000008139ffcd8 ffffffff84080018 a80000080837fae0 7878787878787878 [ 34.117682] $16 : a800000807e82940 0000000000001000 0000000000000000 0000000000000000 [ 34.125704] $20 : a800000802920e00 a8000008139ffdf8 a800000802649400 0000000000e3f2c9 [ 34.133726] $24 : 0000000000000006 00000001200406e0 [ 34.141783] $28 : a8000008139fc000 a8000008139ffd10 0000000000e3f2c8 a80000080838dfc4 [ 34.149837] epc : a80000080838e01c anon_pipe_read+0xd4/0x428 [ 34.155697] ra : a80000080838dfc4 anon_pipe_read+0x7c/0x428 [ 34.161549] Status: 140000e3 KX SX UX KERNEL EXL IE [ 34.166551] Cause : 40800408 (ExcCode 02) [ 34.170574] BadVA : 0000000000000000 [ 34.174161] PrId : 0001b028 (MIPS I6500) [ 34.178183] Process pipe_race (pid: 170, threadinfo=000000005ca35720, task=00000000e1013890, tls=000000014ebbb780) [ 34.188568] Stack : a800000802649400 0000000000000000 0000000000000000 a8000008139ffdd0 [ 34.196623] 0000000000000fba a800000808ee0000 0000000000000001 a8000008130c3e80 [ 34.204676] a8000008080d1280 a8000008139ffd58 a8000008139ffd58 1dbd2b22ea1dd500 [ 34.212729] a800000802649400 a800000808ee0000 ffffffffffffffea 0000000000000001 [ 34.220783] 0000000000001000 0000000000000000 00000001200ae518 ffffffffffffffff [ 34.228836] 000000fffbe0e530 a80000080837edf4 000000fffbe0e530 0000000000000000 [ 34.236890] 0000000000000000 0000000000000000 000000014ebb55a0 0000000000001000 [ 34.244943] 0000000000000001 a800000802649400 0000000000000000 0000000000000000 [ 34.252996] 0000000000000000 0000400400000000 0000000000000000 1dbd2b22ea1dd500 [ 34.261049] 00000000140000e3 a800000802649400 a800000802649400 a800000808ee0000 [ 34.269103] ... [ 34.271568] Call Trace: [ 34.274026] [<a80000080838e01c>] anon_pipe_read+0xd4/0x428 [ 34.279533] [<a80000080837edf4>] vfs_read+0x25c/0x318 [ 34.284607] [<a80000080837faac>] ksys_read+0x104/0x138 [ 34.289763] [<a80000080802b9cc>] syscall_common+0x44/0x68 [ 34.295187] [ 34.296689] Code: f84000cf 02209825 de020010 <dc420000> d8400004 02002825 0040f809 02802025 f84000c3 [ 34.306504] [ 34.308099] ---[ end trace 0000000000000000 ]--- My initial reproducer was the xdp-tools test suite. A standalone reproducer would be an lld/scd loop that, when the read is reordered by the CPU, triggers a fault. We can achieve this from userspace by stressing an anonymous pipe, which uses a mutex. Program used: // SPDX-License-Identifier: GPL-2.0 // pipe_race.c - reproducer for MIPS LL/SC reordering vs fs/pipe.c // // Two userspace processes on an anonymous pipe: // parent = writer: tight write() loop // child = reader: tight read() loop #define _GNU_SOURCE #include <assert.h> #include <errno.h> #include <sched.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include ---truncated---
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

