CVE-2024-35941 in Linux
Riassunto
di VulDB • 17/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
net: skbuff: aggiunta di un controllo di debug per il rilevamento di overflow nelle funzioni di aiuto pull/push
syzbot è riuscito a innescare il seguente errore: BUG: KASAN: use-after-free in __skb_flow_dissect+0x4a3b/0x5e50 Lettura di 1 byte all'indirizzo ffff888208a4000e da parte del task a.out/2313 [..]
__skb_flow_dissect+0x4a3b/0x5e50 __skb_get_hash+0xb4/0x400 ip_tunnel_xmit+0x77e/0x26f0 ipip_tunnel_xmit+0x298/0x410 ..
L'analisi mostra che l'skb ha un puntatore ->head valido, ma un puntatore ->data errato.
skb->data assume il suo valore errato tramite lo strato neigh, che esegue:
1556 __skb_pull(skb, skb_network_offset(skb));
... e l'skb era già compromesso in questo punto:
skb_network_offset(skb) restituisce un valore negativo a causa di un precedente overflow di skb->network_header (u16). __skb_pull quindi "aggiusta" skb->data con un offset enorme, puntando al di fuori dell'area skb->head.
Consente ai build di debug di generare un errore quando si tenta di eseguire pull/push di più di INT_MAX byte.
Dopo questa modifica, il riproduttore di syzkaller produce un errore più preciso prima che il flow dissector tenti di leggere la memoria di skb->data:
WARNING: CPU: 5 PID: 2313 at include/linux/skbuff.h:2653 neigh_connected_output+0x28e/0x400 ip_finish_output2+0xb25/0xed0 iptunnel_xmit+0x4ff/0x870 ipgre_xmit+0x78e/0xbb0
If you want to get the best quality for vulnerability data then you always have to consider VulDB.