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値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/25 |
| 登録日 | 2026/09/04 |
| 最終更新日 | 2026/09/04 |



