CVE-2026-98271
Niskie ryzyko· EPSS 7%Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
W jądrze Linux wykryto podatność w funkcjach pskb_carve_inside_header() i pskb_carve_inside_nonlinear(), które po usunięciu początkowych bajtów pakietu nie aktualizują poprawnie wskaźników nagłówków (mac_header, network_header, transport_header, csum_start). Pozostawione nieaktualne wartości wskazują poza faktyczne dane, co może prowadzić do błędów jądra (kernel BUG) podczas przetwarzania pakietów przez RDS TCP.
Ocena ryzyka
Atakujący może wykorzystać tę podatność do wywołania awarii systemu (kernel panic) poprzez wysłanie specjalnie skonstruowanych pakietów RDS, co prowadzi do niedostępności usług (DoS).
Rekomendacja
Zastosuj łatkę z jądra Linux, która dodaje funkcję skb_carve_reset_headers() i unieważnia wszystkie nagłówki po operacji pskb_carve(). Zaktualizuj system do wersji jądra zawierającej poprawkę.
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: net: skbuff: do not leave stale header offsets after pskb_carve() pskb_carve_inside_header() and pskb_carve_inside_nonlinear() remove the first bytes of a packet and reallocate skb->head. All the headers that were present before the operation are gone, but both functions call skb_headers_offset_update(skb, 0), which is a no-op : skb->mac_header, skb->network_header, skb->transport_header and skb->csum_start keep their old values and now describe bytes which are no longer there. Both helpers size the new head from the old skb_end_offset(), so the stale offsets still land inside the new allocation. They point past skb_tail_pointer() though, to bytes that were never initialized. pskb_carve_inside_nonlinear() is the worst case, because it leaves a zombie skb with an empty linear part (skb->data == skb_tail_pointer(skb), skb_headlen(skb) == 0), while skb_mac_header_was_set() is still true and skb->mac_header is way ahead of skb->data. The only user of pskb_extract() is rds_tcp_data_recv(), and the carved skb is queued on tinc->ti_skb_list. When the RDS incoming message is released, rds_tcp_inc_free() calls skb_queue_purge(), which frees the skbs with SKB_DROP_REASON_QUEUE_PURGE. This is visible from drop_monitor, which then tries to pull back to the (bogus) mac header : skbuff: __skb_pull(len=234) skb len=6968 data_len=6968 headroom=0 headlen=0 tailroom=0 end-tail=384 mac=(234,14) mac_len=14 net=(248,40) trans=288 shinfo(txflags=0 nr_frags=1 gso(size=1428 type=16 segs=5)) csum(0x100120 start=288 offset=16 ip_summed=3 complete_sw=0 valid=1 level=0) hash(0x7b446c6c sw=0 l4=1) proto=0x86dd pkttype=0 iif=60 kernel BUG at ./include/linux/skbuff.h:2847! Add skb_carve_reset_headers() to mark the mac and transport headers as not set, reset the network header, clear skb->mac_len, and drop a now meaningless CHECKSUM_PARTIAL (csum_start no longer describes anything). Invalidate the inner offsets as well. Unlike mac_header and transport_header they have no "unset" sentinel, so a leftover non-zero value still looks like a real header. Zero skb->inner_mac_header, skb->inner_network_header, skb->inner_transport_header, skb->inner_protocol and skb->encapsulation, so that all the header state is invalidated in one place. v2: fixed an inaccurate changelog. The stale offsets stay inside the new skb->head, which is never smaller than the old one, they simply point past skb_tail_pointer() to bytes that are gone. Thanks to Xuanqiang Luo for insisting on this. Also invalidate the inner header state, as suggested by the netdev AI review : https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260911114922.621937-1-edumazet%40google.com
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

