CVE-2026-64113 in Linux
要約
〜によって VulDB • 2026年07月19日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ixgbevf: VEPAマルチキャストソースプルーニングにおけるuse-after-freeの修正
`ixgbevf_clean_rx_irq()`は、送信元MACアドレスがVF自身のアドレスと一致するフレーム(VEPAマルチワークアラウンド)を、skbを解放して次のディスクリプタに進むことでプルーニングしています:
dev_kfree_skb_irq(skb); continue;
skbポインタはwhileループの外側で宣言されており、反復処理を通じて保持されます。continue文がループ下部の「skb = NULL」リセットをスキップするため、次の反復では「else if (skb)」パスに入り、解放されたskbに対して`ixgbevf_add_rx_frag()`を呼び出し、`skb_shinfo(skb)->nr_frags`の間接参照を行います。これはNAPI softirqコンテキストにおけるuse-after-freeです。
兄弟ドライバであるiavfは、continueする前にポインタをNULLにすることでこれを正しく処理しています。ここでは同じパターンを適用します。
私にはixgbevfハードウェアがありませんが、このバグは静的解析(scan_drop_continue_loops.py + semgrep drop_continue_in_loop)によって発見されました(複数ツールの相関関係によりスキャンで最高スコアを取得)。KASAN下でのUAFは、正確なコードパターンを再現するテストモジュールを読み込むことで確認しました(skbの割り当て、kfree_skb、その後 skb_shinfo(skb)->nr_frags の読み取り):
BUG: KASAN: slab-use-after-free in ixgbevf_uaf_test_init+0x100/0x1000 Read of size 8 at addr 000000006163ae78 by task insmod/30 freed 208-byte region [000000006163adc0, 000000006163ae90)
QEMUはigb (82576) をエミュレートしますが、ixgbe (82599) はエミュレートしません。また、igbvf VFドライバにはVEPAソースプルーニングパスが含まれていないため、エミュレーションされたハードウェアでの完全なエンドツーエンドの再現は不可能でした。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.