Podatność use-after-free (UAF) w jądrze Linux, w funkcji icmpv6_rcv() obsługującej pakiety ICMPv6. Błąd pozwala na dostęp do nieaktualnych wskaźników na dane nagłówka IPv6 po operacji pskb_pull(), co może prowadzić do krytycznych konsekwencji dla systemu.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: ipv6: fix possible UAF in icmpv6_rcv() Caching saddr and daddr before pskb_pull() is problematic since skb->head can change. Remove these temporary variables: - We only access &ipv6_hdr(skb)->saddr and &ipv6_hdr(skb)->daddr when net_dbg_ratelimited() is called in the slow path. - Avoid potential future misuse after pskb_pull() call.
Problem polega na buforowaniu wskaźników saddr i daddr (adresów źródłowego i docelowego IPv6) przed wywołaniem funkcji pskb_pull(). Operacja pskb_pull() może zmienić wskaźnik skb->head, powodując, że wcześniej zapisane wskaźniki stają się nieważne i wskazują na zwolniony lub inny obszar pamięci. Poprawka eliminuje tymczasowe zmienne i odwołuje się do adresów przez ipv6_hdr(skb) wyłącznie w wolnej ścieżce kodu (slow path), gdy wywoływane jest net_dbg_ratelimited(), co zapobiega potencjalnemu UAF.
Atakujący zdalnie, bez uwierzytelnienia, może doprowadzić do odczytu lub zapisu w zwolnionym obszarze pamięci jądra, co grozi naruszeniem poufności i integralności danych oraz potencjalnie destabilizacją systemu (dostępność).
Należy zastosować patche dostępne u producenta zgodnie z referencjami — zmiany dostępne pod wskazanymi commitami w repozytorium stable.kernel.org
Wersje jądra Linux wskazane w referencjach producenta (commity dostępne w stable.kernel.org)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H