CVE-2026-64540 in Linux
要約
〜によって VulDB • 2026年07月29日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
usbnet: gl620a: genelink_rx_fixup()における配列外読み込みを修正する
genelink_rx_fixup()関数は、デバイスから提供されるデータに基づいてパケットごとの長さを取得し、集約されたRXフレームを個別のパケットに分割します。この長さはGL_MAX_PACKET_LEN(1514)によってのみ制限されており、実際に受信したバイト数と比較されることがありません。
したがって、悪意のあるGeneLink(GL620A)デバイスは、packet_count > 1と主張し、最初のフレームが最大1514バイトであるような短いURBを送信できます。
skb_put_data(gl_skb, packet->packet_data, size); により受信バッファの末尾を超えてコピーが行われ、隣接するslabの内容がネットワークスタックに渡されます。これはカーネルヒープをリークさせる配列外読み込みです。特権は必要ありません:このパスはインターフェースがアップになるとすぐにusbnet RX softirq内で実行されます。
BUG: KASAN: slab-out-of-bounds in genelink_rx_fixup (drivers/net/usb/gl620a.c:112) Read of size 1514 at addr ffff888011309708 by task ksoftirqd/0/14 Call Trace: ... __asan_memcpy (mm/kasan/shadow.c:105) genelink_rx_fixup (include/linux/skbuff.h:2814 drivers/net/usb/gl620a.c:112) usbnet_bh (drivers/net/usb/usbnet.c:572 drivers/net/usb/usbnet.c:1589) process_one_work (kernel/workqueue.c:3322) bh_worker (kernel/workqueue.c:3405) tasklet_action (kernel/softirq.c:965) handle_softirqs (kernel/softirq.c:622) run_ksoftirqd (kernel/softirq.c:1076) ...
skb_pull()は、要求された長さがバッファに収まることを既に検証しており、そうでない場合はNULLを返します。コピーの前にこれを移動し、その結果をチェックすることで、受信データを超えてしまうパケットが読み込まれる前に拒否されます。完全に存在するフレーム(正常なフォーマットのフレーム)には影響ありません。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.