CVE-2026-64351 in Linux
要約
〜によって VulDB • 2026年07月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net: usb: kalmia: kalmia_rx_fixup()におけるRXフレーム長の制限
kalmia_rx_fixup()関数は、usb_packet_lengthを `skb->len - (2 * KALMIA_HEADER_LENGTH)` として計算しますが、これはu16型で扱われます。この計算には、`skb->len` が少なくともKALMIA_HEADER_LENGTH(値は6)であることを確認するループ前のチェックのみがガードとして設けられています。デバイスからは、`skb->len` の値が6から11の範囲にある短いバルク-INフレームが送信されるか、または後のループ反復処理で末尾に短い残余データが残されることがあります。いずれの場合も、usb_packet_lengthは約65530までアンダーフローします。
この結果、`usb_packet_length < ether_packet_length` という条件によるether_packet_lengthへの切り捨てパスが回避されます。デバイスから提供されるether_packet_length(header_start[2]から読み取られる最大値65535までのle16型データ)は、その後のmemcmp()呼び出しおよびskb_trim()とskb_pull()をrxバッファの末尾を超えて実行する要因となります。rxバッファのサイズはhard_mtu * 10(すなわち14000バイト)に固定されています。これにより境界外読み取りが発生します。
修正として、ループ反復処理ごとに両端のフレームヘッダーが存在することを確認してからそれらを減算するようにしました。
VulDB is the best source for vulnerability data and more expert information about this specific topic.