W jądrze Linux wykryto podatność typu race condition w funkcji tcp_v6_syn_recv_sock(), która może prowadzić do nieoczekiwanego zachowania systemu podczas obsługi połączeń TCP/IPv6. Błąd jest oceniony jako krytyczny (CVSS 9.8) ze względu na potencjalny wpływ na poufność, integralność i dostępność systemu.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: tcp: fix potential race in tcp_v6_syn_recv_sock() Code in tcp_v6_syn_recv_sock() after the call to tcp_v4_syn_recv_sock() is done too late. After tcp_v4_syn_recv_sock(), the child socket is already visible from TCP ehash table and other cpus might use it. Since newinet->pinet6 is still pointing to the listener ipv6_pinfo bad things can happen as syzbot found. Move the problematic code in tcp_v6_mapped_child_init() and call this new helper from tcp_v4_syn_recv_sock() before the ehash insertion. This allows the removal of one tcp_sync_mss(), since tcp_v4_syn_recv_sock() will call it with the correct context.
Po wywołaniu tcp_v4_syn_recv_sock() nowo utworzony socket dziecka jest natychmiast widoczny w tablicy TCP ehash i może być używany przez inne procesory (CPU). Problem polega na tym, że pole newinet->pinet6 nadal wskazuje na strukturę ipv6_pinfo gniazda nasłuchującego (listener), zamiast na poprawnie zainicjowaną strukturę gniazda dziecka. Kod inicjalizujący to pole był wykonywany zbyt późno — już po tym, gdy inne wątki mogły uzyskać dostęp do gniazda. Poprawka przenosi problematyczny kod do nowej funkcji pomocniczej tcp_v6_mapped_child_init(), wywoływanej przez tcp_v4_syn_recv_sock() przed wstawieniem gniazda do tablicy ehash.
Atakujący lub warunek wyścigowy może doprowadzić do uszkodzenia pamięci jądra, co w konsekwencji może skutkować ujawnieniem danych, nieuprawnioną modyfikacją stanu systemu lub jego niedostępnością (crash).
Należy zastosować patche dostępne u producenta zgodnie z referencjami: commity 7178e2a8, 858d2a4f oraz fe89b2f0 w repozytorium stable jądra Linux (git.kernel.org).
Jądro Linux — wersje wskazane w referencjach producenta (patche dostępne w repozytorium stable kernel.org).
Błąd został pierwotnie wykryty przez narzędzie syzbot (automatyczny fuzzer jądra Linux stosowany przez Google), co zostało wprost wskazane w opisie oryginalnym.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux Kernel
OSLinux2.6.127.02.6.12.1 – 6.18.16 (bez)6.19 – 6.19.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
IBM Aspera Faspex 4.4.2 Patch Level 1 and earlier could allow a remote attacker to execute arbitrary code on t...
VMware Workspace ONE Access and Identity Manager contain a remote code execution vulnerability due to server-s...
VMware Workspace One Access, Access Connector, Identity Manager, and Identity Manager Connector address have a...