【活用ガイド】

JVNDB-2026-032038

LinuxのLinux Kernelにおける境界外読み取りに関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました:usb: misc: usbio: 受信転送にバインドされたバルクIN応答の長さ。usbio_bulk_msg()は、バルクINバッファ(usbio->rxbuf、サイズusbio->rxbuf_lenで割り当てられている)から呼び出し元のバッファへbpkt_len = le16_to_cpu(bpkt->len)バイトをコピーします。bpkt_lenはデバイスによって完全に制御されており、ibuf_lenに対してのみチェックされます。ibuf_lenはusbio->txbuf_lenに対してチェックされますが、rxbuf_lenに対してはチェックされません。具体的には、以下の条件でエラーが返されます: if ((obuf_len > (usbio->txbuf_len - sizeof(*bpkt))) || (ibuf_len > (usbio->txbuf_len - sizeof(*bpkt)))) return -EMSGSIZE;txbuf_lenとrxbuf_lenはusbio_probe()内でバルクOUTおよびバルクINエンドポイントのwMaxPacketSizeからそれぞれ独立して取得されます。悪意のある、または誤動作するデバイスが大きなバルクOUTエンドポイントと小さなバルクINエンドポイント(例:Lattice NX33U 0x2ac1:0x20cbのようなクイークフリーIDの一つを主張する)を通知すると、ibuf_lenおよびそれに応じてデバイス提供のbpkt_lenがrxbuf_lenを超えてしまうことがあります。これにより、memcpy()はrxbufオブジェクトの終端をtxbuf_len - rxbuf_lenバイト分オーバーリードしてしまいます。このオーバーリードしたバイトはi2cレイヤに返され、さらにi2c-devを通してユーザ空間に渡され、隣接するスラブメモリが漏洩してしまいます。KASAN環境下ではこれはスラブの範囲外読み取りとして報告されます。実際に受信したバイト数はすでにact(URBのactual_length)により知られており、rxbuf_lenで制限されています。そのため、受信したペイロードより大きいと主張する応答は拒否されるべきであり、これは既存の「act < sizeof(*bpkt)」チェックのすぐ上にあるものと対応しています。制御パス(usbio_ctrl_msg())には影響がありません。制御パスは両方向で単一のバッファ(ctrlbuf)を使用しているため、類似のコピーが割り当て範囲外になることはありません。本脆弱性はコードレビューで発見されました。範囲外読み取りは、usbio_bulk_msg()の受信パスにおける忠実なユーザ空間モデル(rxbuf_lenサイズのバッファ、act/ibuf_len/bpkt_lenチェックおよびmemcpyを含む)をAddressSanitizer下で検証し、確認しています。USB raw-gadget + dummy_hcdを用いた再現環境も利用可能です。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 7.1 (重要) [NVD値]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): 高
  • 完全性への影響(I): なし
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 6.18 以上 6.18.39 未満
  • Linux Kernel 6.19 以上 7.1.4 未満
  • Linux Kernel 7.2

想定される影響

・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。
・当該ソフトウェアが扱う情報について、書き換えは発生しません。
・当該ソフトウェアが完全に停止する可能性があります。
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。
ベンダ情報

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 境界外読み取り(CWE-125) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-64339
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-64339
  2. 関連文書 : usb: misc: usbio: bound bulk IN response length to the received transfer - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/8c6314489550fa81d41723a0ff33f655b5b6c7b6)
  3. 関連文書 : usb: misc: usbio: bound bulk IN response length to the received transfer - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/fc1b546973c1442d5b947fcdd03581f20ecc5bd2)
  4. 関連文書 : usb: misc: usbio: bound bulk IN response length to the received transfer - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/48394f94211cf8fe0ea8604fc441633abf90fc94)
更新履歴

  • [2026年09月04日]
      掲載