CVE-2026-99033
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
net/packet: chroń wypychanie nagłówka ll w package_rcv_spkt()
package_rcv_spkt() przywraca nagłówek warstwy łącza za pomocą
skb_push(skb, skb->data - skb_mac_header(skb));
To odejmowanie ma sens tylko wtedy, gdy urządzenie faktycznie ma łącze
nagłówek warstwy. pakiet_rcv() i tpacket_rcv() zawijają go
dev_has_header(), która jest także predykatem komentarza blokowego w
na górze pliku znajduje się informacja o przywróceniu; package_rcv_spkt() tak
nie. zatwierdzić d549699048b4 („net/packet: napraw pakiet odbierany na L3
urządzenia bez widocznego twardego nagłówka”) wprowadził pomocnika i zmienił
dwa miejsca połączeń, a ten pozostał.
Urządzenie bez widocznego nagłówka ll może pozostawić skb->mac_header w miejscu
0xFFFF wartownik, do którego inicjuje go __alloc_skb(). CAN skb robi:
init_can_skb() ustawia pkt_type i ip_summed, ale nie resetuje
nagłówki i zatwierdź 9f10374bb024 („może: usunąć prywatny CAN skb
infrastruktura zapasów”) porzuciła wywołania skb_reset_*_header().
kiedyś tam byłem. skb_mac_header() wynosi wtedy 0xFFFF, długość wynosi
duża liczba ujemna, a skb_push() zgłasza ją
skb_under_panic() -- z kontekstu softirq, więc jest to pełna panika systemu
nawet przy panic_on_oops=0:
skbuff: skb_under_panic: tekst:ffffffff8bd21bc1 len:-65455 put:-65471 head:... dane:... tail:0x50 end:0x180 dev:can0
BŁĄD jądra w net/core/skbuff.c:214!
RIP: 0010:skb_panic+0x50/0x60
Zadzwoń do śledzenia:
<przerwanie>
skb_push+0x38/0x40
pakiet_rcv_spkt+0xe1/0x170
__netif_receive_skb_core.constprop.0+0x7e8/0xd30
...
Panika jądra – brak synchronizacji: krytyczny wyjątek w przerwaniu
Typ gniazda jest osiągalny: package_create() akceptuje SOCK_PACKET
obok SOCK_RAW i SOCK_DGRAM za tym samym czekiem CAP_NET_RAW,
i ani długość gniazda, ani kontrola możliwości tego nie powstrzymują
z interfejsu CAN.
Brakujące wywołania skb_reset_*_header() w init_can_skb() to:
regresji same w sobie i są ustalane oddzielnie, ale a
gniazdo pakietu nie powinno włączać warstwy łącza, która jej nie zainicjowała
mac do paniki jądra. Strzeż pchnięcia w stronę pozostałych dwóch
otrzymać ścieżki.
Testowane na v7.3-rc5 pod QEMU z urządzeniem slcan na pty, czyli
ścieżka RX sterownika: vcan jej nie odtwarza, ponieważ can_send()
resetuje nagłówki przy wyjściu. Jedno gniazdo SOCK_PACKET powiązane z
can0 i jedna ramka wpisana do linii dyscypliny paniki an
niezałatane jądro z powyższym śladem; ten sam obraz z tą łatką
nie drukuje bez paniki i normalnie się wyłącza. Oba jądra są tym drzewem,
defconfig plus CONFIG_CAN_SLCAN=y, różniące się tylko tą porcją.
>_ Referencje
- https://git.kernel.org/stable/c/00fbf71e74115f7628fc0880b855434b1e70c40c
- https://git.kernel.org/stable/c/28bc1ef699610ee09ce3d46a00552f5a0a0144bd
- https://git.kernel.org/stable/c/31c7b15b3716e8d0dad58d2c3cdf321dfd06f4be
- https://git.kernel.org/stable/c/3efe0e0944157fdd2072b4dc7eb0491a317ed272
- https://git.kernel.org/stable/c/d8a24b9e1774a93943caf68d48c5e17be432220b
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