CVE-2026-90059
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
net: stmmac: przywróć NET_IP_ALIGN w przesunięciu RX DMA
Ponieważ ścieżka RX została przekonwertowana na kopię zerową, przekazywana jest strona puli stron
do stosu bezpośrednio jako głowica skb i przesunięcie zapisywane przez silnik DMA
at określa wyrównanie nagłówków pakietów.
Przed konwersją ładunek został skopiowany do uzyskanego skb
napi_alloc_skb(), która rezerwuje NET_SKB_PAD + NET_IP_ALIGN. The
konwersja przeniosła zapas do stmmac_rx_offset(), ale nie została przeniesiona
przez NET_IP_ALIGN, więc na architekturach, gdzie NET_IP_ALIGN to 2 adres IP
nagłówek jest teraz źle wyrównany:
64 (NET_SKB_PAD) + 14 (Ethernet) + 20 (IP) = 98
To samo dla oddziału XDP:
256 (XDP_PACKET_HEADROOM) + 14 (Ethernet) + 20 (IP) = 290
Na ARM32 jest to fatalne, ponieważ ldm i ldrd zatrzymują się na niewyrównanych adresach
nawet jeśli ustawiono CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS.
Każde otrzymane żądanie echa wywołuje panikę w maszynie, np.:
Nieobsługiwany błąd: wyjątek wyrównania (0x001) pod adresem 0x81873062
Błąd wewnętrzny: : 1 [#1] SMP ARM
Nazwa sprzętu: Altera SOCFPGA Arria10
Komputer znajduje się pod adresem icmp_echo+0x38/0xa8
LR znajduje się w icmp_rcv+0x22c/0x370
Śledzenie połączeń:
icmp_echo z icmp_rcv+0x22c/0x370
icmp_rcv z ip_protocol_deliver_rcu+0x2c/0x224
ip_protocol_deliver_rcu z ip_local_deliver+0xc8/0x1a0
ip_local_deliver z ip_sublist_rcv_finish+0x3c/0x50
ip_sublist_rcv_finish z ip_list_rcv_finish+0x110/0x118
ip_list_rcv_finish z ip_list_rcv+0xc8/0xdc
ip_list_rcv z __netif_receive_skb_list_core+0x170/0x1c0
...
napi_complete_done z stmmac_napi_poll_rx+0xcb0/0x1030
Kod: e24dd068 e59020a0 e28dc010 e0822001 (e8920003)
Panika jądra – brak synchronizacji: krytyczny wyjątek w przerwaniu
Instrukcja powodująca błąd to ldm *icmp_hdr(skb) w icmp_echo().
Napraw, dodając z powrotem NET_IP_ALIGN do przesunięcia RX, co przywraca
wyrównanie stosu używanego do uzyskania.
Zauważ, że zatwierdzenie a955318fe67e („stmmac: wyrównanie buforów RX”) spowodowało podobny efekt
zmiana w 2021 r. i została cofnięta przez zatwierdzenie 12d125b4574b („stmmac: Revert
„stmmac: wyrównaj bufory RX””), ponieważ spowodowało to uszkodzenie pakietu. To
patch podniósł przesunięcie z 0 bez zmiany rozmiaru bufora
rachunkowości, więc silnik DMA mógłby prawdopodobnie pisać poza końcem RX
bufory, chociaż nigdy nie było to spowodowane rootem.
Zatwierdź df542f669307 („net: stmmac: Przełącz na kopię zerową w RX innym niż XDP
path”), ponieważ wyznacza alokację puli stron z stmmac_rx_offset(), więc
dodatkowe bajty są uwzględniane.
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org