CVE-2026-98276
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
net: zablokuj gniazdo w sock_gettstamp()
sk->sk_flags należy zmieniać tylko przytrzymując blokadę gniazda,
ponieważ sock_set_flag() i sock_reset_flag() nie używają funkcji atomowych
operacje (__set_bit() i __clear_bit()).
sock_gettstamp() to jedno z ostatnich miejsc, w których trochę sk->sk_flags
zostaje zmieniony z wywołania systemowego bez posiadania blokady gniazda, poprzez
sock_enable_timestamp(sk, SOCK_TIMESTAMP).
sk_set_memalloc() i sk_clear_memalloc() również zmieniają sk->sk_flags
bez blokady gniazda, ale ich wywołujące (nbd, iscsi_tcp, nvme-tcp,
sunrpc, wireguard) wymagają dokładnego audytu, zostanie to omówione w a
osobna łatka.
Jungwoo Lee i Wongi Lee zgłosili, że gniazdo UDP jest bezpłatne
spowodowane przez ten błąd: wyścigi ioctl SIOCGSTAMPNS_NEW z funkcją bind()
może anulować bit SOCK_RCU_FREE ustawiony właśnie przez udp_lib_get_port(),
ponieważ oba wątki wykonują odczyt-modyfikację-zapis tego samego słowa.
CPU 0 (powiązanie) CPU 1 (SIOCGSTAMPNS_NEW)
-------------------------------- ----------------------------
czytaj sk_flags = F czytaj sk_flags = F
oblicz F | BIT(SOCK_RCU_FREE) oblicz F | BIT(SOCK_TIMESTAMP)
sklep F | BIT(SOCK_RCU_FREE)
sk_add_node_rcu(sk, ...)
sklep F | BIT(SOCK_TIMESTAMP)
Po utraconej aktualizacji SOCK_RCU_FREE jest wolne, dopóki gniazdo jest
widoczne dla bezblokowanych wyszukiwań odbiorów UDP. sk_destruct() następnie zwalnia
natychmiast podłączyć gniazdko, zamiast czekać na okres karencji RCU,
podczas gdy ścieżka odbioru nadal zawiera wskaźnik do niej bez odniesienia:
BŁĄD: KASAN: użycie płyty po zwolnieniu w ipv4_pktinfo_prepare+0x30/0x410
Odczytaj rozmiar 8 pod adresem ffff888008806610 za pomocą zadania exploit/207
Procesor: 0 UID: 1000 PID: 207 Comm: exploit Nieskażony 6.12.95+ #1
ipv4_pktinfo_prepare+0x30/0x410
udp_queue_rcv_one_skb+0x51c/0x1180
udp_unicast_rcv_skb+0x109/0x350
ip_protocol_deliver_rcu+0x14b/0x310
ip_local_deliver_finish+0x29d/0x390
ip_local_deliver+0x24d/0x2a0
Chwyć blokadę gniazda tylko wtedy, gdy należy ustawić SOCK_TIMESTAMP,
aby zwykła skrzynka była zamknięta.
>_ Referencje
- https://git.kernel.org/stable/c/17b2a1eb97fdb2a2cbaeab3b146b26797ea9311f
- https://git.kernel.org/stable/c/18899e2e4023369a8f7739c2255a59a9748d8d17
- https://git.kernel.org/stable/c/1f73253add8365d0dad0a4f421acaa8c21d20cef
- https://git.kernel.org/stable/c/3b12d3967e96f1b7b977d9fc352ae29a1b299a82
- https://git.kernel.org/stable/c/88c804847dd87dc613b771b392ccecdb94725032
- https://git.kernel.org/stable/c/899650bbf985b7bfd2a7b808357df9b16e6d6959
- https://git.kernel.org/stable/c/9ed55f3dbef4f4adfe65eb03b0c35c53229a8490
- https://git.kernel.org/stable/c/d9f96bc2d822501f84d1caa6275a2c6b316ca2c4
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