CVE-2026-98595
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
udp: usuń odłączone gniazdo z 4-krotkowej tablicy mieszającej
Gniazdo UDP powiązane z określonym adresem i portem zachowuje swój wpis w pliku
4-krotkowa tablica mieszająca po jej odłączeniu:
sk wiąże się z 127.0.0.1:21001
sk łączy się z 127.0.0.2:20001 // zapisanym w 4-krotkowej tabeli
sk rozłącza się, połącz(AF_UNSPEC) // nadal w pliku, połącz się teraz 0.0.0.0:0
__udp_disconnect() usuwa gniazdo z tej tabeli tylko jako efekt uboczny
z ->rehash() lub ->unhash(), i pomija ->rehash() kiedy
SOCK_BINDADDR_LOCK jest ustawione i ->unhash(), gdy ustawione jest SOCK_BINDPORT_LOCK.
zatwierdzić 6996a2d2d0a6 („udp: Odblokuj automatycznie powiązane połączone sk z 4-krotkowego skrótu
table po rozłączeniu.”) naprawiono ten sam stan końcowy dla symboli wieloznacznych
gniazdem, ścieżką, którą ta nie podąża.
Wpis jest liczony niezależnie od tego, czy coś w niego trafi. hash4_cnt na
hash2 pozostaje podniesione tak długo, jak gniazdo żyje, więc udp_has_hash4()
wysyła każdy pakiet dla tego adresu i portu przez 4-krotkę
najpierw wyszukaj.
W przypadku protokołu IPv6 można go również trafić. __udp_disconnect() nie czyści sk_v6_daddr,
więc udp_v6_rehash() zapisuje wpis pod peerem, do którego zostało podłączone gniazdo
do z zerowym dportem, a inet6_match() porównuje to samo
pole: datagram od poprzedniego partnera z zerowym dopasowaniem portu źródłowego,
a port źródłowy zero jest akceptowany przy odbiorze. W przypadku IPv4 peer jest usuwany,
więc dopasowanie wymagałoby również zerowego adresu źródłowego, który jest routingiem
warstwa odrzuca jako marsjańską. Przestarzały sk_v6_daddr to osobna wada, a nie
adresowane tutaj; usunięcie wpisu zamyka tę ścieżkę w obu przypadkach.
Wpis można również przenieść. __udp_disconnect() czyści sk_bound_dev_if,
więc kolejne wywołania SO_BINDTODEVICE ->rehash() i ponieważ odbiór
adres jest nadal specyficzny. udp_lib_rehash() przenosi wpis zamiast
usuwając go do segmentu, który (rcv_saddr, num, 0, 0) miesza się z -- a
czysta funkcja adresu i portu, więc każde gniazdo osiąga ten stan
na jeden adres i port zbiera w jednym kubełku. Nie można wybrać wiadra
z zewnątrz, ponieważ udp_ehashfn() jest zaszczepiana sekretem na każdy rozruch. To ostatnie
jeden stał się osiągalny tylko po zatwierdzeniu 644f9108f3a5 („udp: Make rehash4
niezależna w udp_lib_rehash()”), co przeniosło obsługę hash4 z a
oddział, którego odłączone gniazdo nie zajmuje; daty samego nieaktualnego wpisu
z zatwierdzenia w Fixes.
Wyjmij gniazdo ze stołu przed uruchomieniem funkcji __udp_disconnect().
nadal zgadza się ze sposobem, w jaki został złożony. Dociera to również do przypadku z symbolami wieloznacznymi w przyszłości
gałęzi udp_unhash4() udp_lib_rehash(), pozostawiając tę gałąź nieosiągalną
z udp_disconnect(); usunięcie go należy do net-next. udp_disconnect()
i udp_abort() to jedyne wpisy UDP w __udp_disconnect(), czyli
współdzielone z gniazdami raw, ping i l2tp, które nie są strukturą udp_sock:
ping_prot.obj_size to sizeof(struct inet_sock), więc udp_hashed4() na jednym
przeczytałbym poza alokacją.
>_ 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