Odebrany

CVE-2026-98271

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

net: skbuff: nie pozostawiaj przestarzałych przesunięć nagłówka po pskb_carve()

pskb_carve_inside_header() i pskb_carve_inside_nonlinear() usuwają
pierwsze bajty pakietu i ponownie przydziel skb->head.

Zniknęły wszystkie nagłówki, które były obecne przed operacją,
ale obie funkcje wywołują skb_headers_offset_update(skb, 0), który
nie działa: skb->mac_header, skb->network_header,
skb->transport_header i skb->csum_start zachowują swoje stare wartości i
teraz opisz bajty, których już nie ma.

Obaj pomocnicy dobierają nową głowę na podstawie starej funkcji skb_end_offset(), więc
przestarzałe przesunięcia nadal trafiają do nowej alokacji. Wskazują przeszłość
skb_tail_pointer() do bajtów, które nigdy nie zostały zainicjowane.

pskb_carve_inside_nonlinear() jest najgorszym przypadkiem, ponieważ pozostawia a
zombie skb z pustą częścią liniową (skb->data ==
skb_tail_pointer(skb), skb_headlen(skb) == 0), podczas gdy
skb_mac_header_was_set() jest nadal prawdą, a skb->mac_header jest sposobem
przed skb->data.

Jedynym użytkownikiem pskb_extract() jest rds_tcp_data_recv(), a
rzeźbiony skb znajduje się w kolejce na tinc->ti_skb_list. Kiedy nadchodzi RDS
wiadomość zostaje opublikowana, rds_tcp_inc_free() wywołuje skb_queue_purge(),
co zwalnia skbs za pomocą SKB_DROP_REASON_QUEUE_PURGE. To jest
widoczne z drop_monitor, który następnie próbuje wrócić do
(fałszywy) nagłówek Mac:

skbuff: __skb_pull(len=234)
skb len=6968 data_len=6968 headroom=0 headlen=0 Tailroom=0
koniec ogona=384 mac=(234,14) mac_len=14 netto=(248,40) trans=288
shinfo(txflags=0 nr_frags=1 gso(rozmiar=1428 typ=16 seg=5))
csum(0x100120 start=288 offset=16 ip_summed=3 komplet_sw=0 ważny=1 poziom=0)
hash(0x7b446c6c sw=0 l4=1) proto=0x86dd pkttype=0 iif=60
BŁĄD jądra w ./include/linux/skbuff.h:2847!

Dodaj skb_carve_reset_headers(), aby oznaczyć nagłówki mac i transportu
jako nieustawione, zresetuj nagłówek sieciowy, wyczyść skb->mac_len i upuść
teraz bez znaczenia CHECKSUM_PARTIAL (csum_start już nie opisuje
cokolwiek).

Unieważnij także wewnętrzne przesunięcia. W przeciwieństwie do mac_header i
transport_header nie mają „nieustawionego” wartownika, więc pozostałość
Wartość niezerowa nadal wygląda jak prawdziwy nagłówek. Zero
skb->inner_mac_header, skb->inner_network_header,
skb->inner_transport_header, skb->inner_protocol i
skb->encapsulation, dzięki czemu cały stan nagłówka zostanie unieważniony
jedno miejsce.

v2: naprawiono niedokładny dziennik zmian. Przestarzałe przesunięcia pozostają w środku
nowy skb->head, który nigdy nie jest mniejszy od starego, oni
po prostu wskaż obok skb_tail_pointer() bajty, które zniknęły.
Dziękuję Xuanqiang Luo za naleganie.
Unieważnij także stan nagłówka wewnętrznego, jak sugeruje
Recenzja AI Netdev:
https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260911114922.621937-1-edumazet%40google.com

>_ 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