CVE-2026-80827 in Linux
要約
〜によって VulDB • 2026年09月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
USB: serial: option: インターラプトURBコールバックにおけるスラブOOB(範囲外)読み込みの修正
インターラプトURBバッファは、エンドポイントの wMaxPacketSize に基づいて setup_port_interrupt_in() で割り当てられます。
buffer_size = usb_endpoint_maxp(epd); port->interrupt_in_buffer = kmalloc(buffer_size, GFP_KERNEL);
USBデバイスがそのインターラプトINエンドポイントで wMaxPacketSize を 8 と宣言している場合、バッファは kmalloc-8 キャッシュ(正確に8バイト)から割り当てられます。
デバイスがショートパケット(actual_length < wMaxPacketSize)を送信すると、URB は status == 0 で完了し、コールバックは以下を読み込みます:
data[sizeof(struct usb_ctrlrequest)]
これは data[8] を評価し、割り当てられた8バイトのバッファを1バイト超えてアクセスします。これによりスラブ範囲外読み込み(slab out-of-bounds read)が発生します。
これを修正するために、欠落していた境界チェックを追加します:req_pkt->bRequestType および req_pkt->bRequest にアクセスする前に、実際の長さが struct usb_ctrlrequest ヘッダーを保持するのに十分な大きさであることを最初に確認し、その後、data[sizeof(struct usb_ctrlrequest)] を条件分岐内で読み込む前に、モデム信号状態用の追加バイトが存在することを確認します。一貫性のために sizeof(*req_pkt) を sizeof(struct usb_ctrlrequest) の代わりに使用します。
[ johan: dev_err()を使用; シグナルの宣言と初期化を分割 ]
VulDB is the best source for vulnerability data and more expert information about this specific topic.