Podatność w jądrze Linux powoduje błąd NULL pointer dereference (CWE-476) podczas zwalniania wskaźnika gniazda sieciowego będącego w stanie TCP_TIME_WAIT. Błąd może doprowadzić do awarii systemu (kernel panic) dostępnej zdalnie bez uwierzytelnienia.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: net: use sock_gen_put() when sk_state is TCP_TIME_WAIT It is possible for a pointer of type struct inet_timewait_sock to be returned from the functions __inet_lookup_established() and __inet6_lookup_established(). This can cause a crash when the returned pointer is of type struct inet_timewait_sock and sock_put() is called on it. The following is a crash call stack that shows sk->sk_wmem_alloc being accessed in sk_free() during the call to sock_put() on a struct inet_timewait_sock pointer. To avoid this issue, use sock_gen_put() instead of sock_put() when sk->sk_state is TCP_TIME_WAIT. mrdump.ko ipanic() + 120 vmlinux notifier_call_chain(nr_to_call=-1, nr_calls=0) + 132 vmlinux atomic_notifier_call_chain(val=0) + 56 vmlinux panic() + 344 vmlinux add_taint() + 164 vmlinux end_report() + 136 vmlinux kasan_report(size=0) + 236 vmlinux report_tag_fault() + 16 vmlinux do_tag_recovery() + 16 vmlinux __do_kernel_fault() + 88 vmlinux do_bad_area() + 28 vmlinux do_tag_check_fault() + 60 vmlinux do_mem_abort() + 80 vmlinux el1_abort() + 56 vmlinux el1h_64_sync_handler() + 124 vmlinux > 0xFFFFFFC080011294() vmlinux __lse_atomic_fetch_add_release(v=0xF2FFFF82A896087C) vmlinux __lse_atomic_fetch_sub_release(v=0xF2FFFF82A896087C) vmlinux arch_atomic_fetch_sub_release(i=1, v=0xF2FFFF82A896087C) + 8 vmlinux raw_atomic_fetch_sub_release(i=1, v=0xF2FFFF82A896087C) + 8 vmlinux atomic_fetch_sub_release(i=1, v=0xF2FFFF82A896087C) + 8 vmlinux __refcount_sub_and_test(i=1, r=0xF2FFFF82A896087C, oldp=0) + 8 vmlinux __refcount_dec_and_test(r=0xF2FFFF82A896087C, oldp=0) + 8 vmlinux refcount_dec_and_test(r=0xF2FFFF82A896087C) + 8 vmlinux sk_free(sk=0xF2FFFF82A8960700) + 28 vmlinux sock_put() + 48 vmlinux tcp6_check_fraglist_gro() + 236 vmlinux tcp6_gro_receive() + 624 vmlinux ipv6_gro_receive() + 912 vmlinux dev_gro_receive() + 1116 vmlinux napi_gro_receive() + 196 ccmni.ko ccmni_rx_callback() + 208 ccmni.ko ccmni_queue_recv_skb() + 388 ccci_dpmaif.ko dpmaif_rxq_push_thread() + 1088 vmlinux kthread() + 268 vmlinux 0xFFFFFFC08001F30C()
Funkcje __inet_lookup_established() oraz __inet6_lookup_established() mogą zwracać wskaźnik do struktury inet_timewait_sock zamiast oczekiwanej struct sock. Gdy na takim wskaźniku wywoływana jest funkcja sock_put(), dochodzi do nieprawidłowego dostępu do pola sk_wmem_alloc w sk_free(), co skutkuje kernel panic. Poprawne rozwiązanie polega na użyciu funkcji sock_gen_put() zamiast sock_put() w przypadku, gdy sk->sk_state ma wartość TCP_TIME_WAIT — sock_gen_put() prawidłowo obsługuje oba typy struktur.
Atakujący zdalnie, bez uwierzytelnienia, może wywołać kernel panic systemu docelowego, prowadząc do jego całkowitej niedostępności (DoS). Wysoki wektor CVSS wskazuje również na potencjalny wpływ na integralność i poufność danych systemowych.
Należy zastosować patche dostępne w repozytorium Linux kernel stable zgodnie z referencjami: commit 786650e644c5, c0dba059b118 oraz f920436a4429. Zaleca się aktualizację do najnowszej wersji jądra dostarczonej przez dystrybutora systemu operacyjnego.
Linux Kernel — konkretne wersje gałęzi wskazane w referencjach producenta (patche dostępne w repozytorium stable)
W opisie zamieszczono szczegółowy stack trace z rzeczywistej awarii (kernel panic z KASAN), potwierdzający reprodukowalność błędu na urządzeniach z architekturą ARM64 (widoczne adresy i funkcje specyficzne dla tej platformy, m.in. el1h_64_sync_handler, __lse_atomic_fetch_add_release).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux Kernel
OSLinux6.156.10 – 6.12.28 (bez)6.13 – 6.14.6 (bez)
Powiązane podatności
Type confusion w V8 (Google Chrome) — zdalne uszkodzenie sterty
Commvault Command Center – nieuwierzytelniony RCE przez path traversal w ZIP
RCE przez YAML deserialization w IBM Aspera Faspex
RCE w VMware Workspace ONE Access i Identity Manager poprzez server-side template injection
Command Injection w VMware Workspace One Access i Identity Manager