CVE-2025-68813 in Linux
Riassunto
di VulDB • 20/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
ipvs: corregge il null-ptr-deref (dereferenziazione di puntatore NULL) IPv4 nel percorso di errore del routing.
Il codice per IPv4 in __ip_vs_get_out_rt() chiama dst_link_failure() senza assicurarsi che skb->dev sia impostato, causando una dereferenziazione di un puntatore NULL in fib_compute_spec_dst() quando ipv4_link_failure() tenta di inviare messaggi ICMP "destination unreachable" (destinazione non raggiungibile).
Il problema è emerso dopo l'commit ed0de45a1008 ("ipv4: recompile ip options in ipv4_link_failure"), che ha iniziato a chiamare __ip_options_compile() da ipv4_link_failure(). Questo percorso di codice chiama infine fib_compute_spec_dst(), la quale dereferenzia skb->dev. È stato tentato un fix per la dereferenziazione NULL di skb->dev nell'commit 0113d9c9d1cc ("ipv4: fix null-deref in ipv4_link_failure"), ma esso ha affrontato solo la immediata dereferenziazione dev_net(skb->dev) utilizzando un dispositivo di fallback. La correzione era incompleta perché fib_compute_spec_dst(), più avanti nella catena delle chiamate, accede ancora direttamente a skb->dev, che rimane NULL quando IPVS chiama dst_link_failure().
Il crash si verifica quando: 1. IPVS elabora un pacchetto in modalità NAT con una destinazione mal configurata; 2. La ricerca della rotta fallisce in __ip_vs_get_out_rt() prima di stabilire una rotta; 3. Il percorso di errore chiama dst_link_failure(skb) con skb->dev == NULL; 4. ipv4_link_failure() → ipv4_send_dest_unreach() → __ip_options_compile() → fib_compute_spec_dst(); 5. fib_compute_spec_dst() dereferenzia un puntatore NULL a skb->dev.
Applicare la stessa correzione utilizzata per IPv6 nell'commit 326bf17ea5d4 ("ipvs: fix ipv6 route unreach panic"): impostare skb->dev da skb_dst(skb)->dev prima di chiamare dst_link_failure().
KASAN: null-ptr-deref in range [0x0000000000000328-0x000000000000032f]
CPU: 1 PID: 12732 Comm: syz.1.3469 Not tainted 6.6.114 #2 RIP: 0010:__in_dev_get_rcu include/linux/inetdevice.h:233 RIP: 0010:fib_compute_spec_dst+0x17a/0x9f0 net/ipv4/fib_frontend.c:285 Call Trace: <TASK> spec_dst_fill net/ipv4/ip_options.c:232 spec_dst_fill net/ipv4/ip_options.c:229 __ip_options_compile+0x13a1/0x17d0 net/ipv4/ip_options.c:330 ipv4_send_dest_unreach net/ipv4/route.c:1252 ipv4_link_failure+0x702/0xb80 net/ipv4/route.c:1265 dst_link_failure include/net/dst.h:437 __ip_vs_get_out_rt+0x15fd/0x19e0 net/netfilter/ipvs/ip_vs_xmit.c:412 ip_vs_nat_xmit+0x1d8/0xc80 net/netfilter/ipvs/ip_vs_xmit.c:764
If you want to get the best quality for vulnerability data then you always have to consider VulDB.