CVE-2024-35941 in Linux
Сводка
по VulDB • 21.05.2026
В ядре Linux устранена следующая уязвимость:
net: skbuff: добавить проверку на переполнение в функции-помощники pull/push
syzbot удалось спровоцировать следующий сбой (splat): BUG: KASAN: use-after-free в __skb_flow_dissect+0x4a3b/0x5e50 Чтение 1 байта по адресу ffff888208a4000e выполнено задачей a.out/2313 [..]
__skb_flow_dissect+0x4a3b/0x5e50 __skb_get_hash+0xb4/0x400 ip_tunnel_xmit+0x77e/0x26f0 ipip_tunnel_xmit+0x298/0x410 ..
Анализ показывает, что skb имеет корректный указатель ->head, но некорректный (bogus) указатель ->data.
Значение skb->data становится некорректным через слой neigh, который выполняет:
1556 __skb_pull(skb, skb_network_offset(skb));
... и skb уже находился в некорректном состоянии на этот момент:
skb_network_offset(skb) возвращает отрицательное значение из-за ранее возникшего переполнения skb->network_header (u16). В результате __skb_pull «корректирует» skb->data на огромное смещение, указывая за пределы области skb->head.
Разрешить сборочным конфигурациям с отладкой (debug builds) фиксировать сбои при попытке выполнить pull/push более чем INT_MAX байт.
После этого воспроизводящий пример от syzkaller выдает более точный сбой перед тем, как диссектор потока попытается прочитать память из 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
Be aware that VulDB is the high quality source for vulnerability data.