Odebrany

CVE-2026-98503

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ę:

pakiet: użyj uzupełniania ubuf_info dla pakietów TX_RING

tpacket_snd wysyła skbs z fragami skierowanymi do jego szczelin pierścieniowych. Sloty
są uwalniane po wywołaniu skb->destructor.

Wywołanie skb_orphan wywołuje skb->destructor przed zwolnieniem skb.
Może to spowodować ponowne wykorzystanie gniazda, gdy jest ono nadal połączone z skb.

Przełącz na standardowe uzupełnianie kopii zerowej (ubuf_info), aby miejsce było tylko
zwalniane po zwolnieniu lub skopiowaniu wszystkich odniesień do ładunku.
Przywróć skb->destructor do standardowego sock_wfree.

Wywołanie zwrotne zakończenia ubuf_info można wywołać za pomocą skb o wartości NULL, ale
tylko z net_zcopy_put i powiązanego API, używanego przez implementacje zerocopy
które posiadają własne odniesienia na uarg, takie jak MSG_ZEROCOPY. To
uarg jest zawsze kończone tylko ze skb_zcopy_clear, więc skb jest zawsze ustawione.

Aby uniemożliwić przestrzeni użytkownika aliasowanie stanu lotu w pierścieniu współdzielonym
slotów, przydziel tpacket_uarg na pakiet, a nie na slot. To
dodaje niewielką alokację do ścieżki transmisji. Użyj standardowego kmalloc do
umożliwiają backportowanie do stabilnych jąder.

Uarg zawiera odniesienie sk_wmem_alloc zamiast sk_refcnt
odniesienie. package_free_tx_ring czeka na sk_wmem_alloc przed zwolnieniem
strony pierścieniowe. Zawsze przydzielaj vec->deferred dla tx_ring, aby był wspierany przez stronę
pierścienie czekają także na sk_wmem_alloc, gdy skb_copy_ubufs upuści odnośniki do stron
przed wywołaniem tpacket_ubuf_complete.

Porzuć test tx_ring.pg_vec, który wykonał wcześniej tpacket_destruct_skb
dostęp do gniazda. Odniesienie sk_wmem_alloc gwarantuje teraz, że plik
slot jest ważny. Sam test też nie wystarczy, jak czytamy
pg_vec bez pg_vec_lock, więc może ścigać się z pakietem_set_ring.

W rezultacie szczelina zostaje zwolniona, gdy kopiowany jest jej ładunek, co może
być przed transmisją (np. w skb_orphan_frags_rx). Jeśli skopiowane
przed wywołaniem skb_tx_timestamp() nie jest rejestrowany żaden znacznik czasu slotu,
podobnie do wcześniejszego wywołania skb_orphan() na początku ścieżki danych
tę poprawkę.

Przywróć nieużywaną poprzednią skb_zcopy_.._nouarg infra.

Zależy od zatwierdzenia 992cc9f94ca9 („net/packet: defer vmalloc TX_RING
za darmo aż do zakończenia skbs”).

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