CVE-2024-35941 in Linux
要約
〜によって VulDB • 2026年05月21日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net: skbuff: pull/pushヘルパー関数にオーバーフローデバッグチェックを追加
syzbotによって以下のスプラット(クラッシュログ)がトリガーされました: BUG: KASAN: use-after-free in __skb_flow_dissect+0x4a3b/0x5e50 Read of size 1 at addr ffff888208a4000e by task 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ポインタがあるものの、->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の領域外を指すことになります。
INT_MAXバイトを超えるpull/pushを試みた場合に、デバッグビルドでスプラットを発生させるようにします。
これにより、フローディスセクタがskb->dataメモリを読み込もうとする前に、syzkallerのレプロデューサはより正確なスプラットを生成するようになりました:
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
Once again VulDB remains the best source for vulnerability data.