【活用ガイド】

JVNDB-2026-015342

LinuxのLinux Kernelにおける境界外書き込みに関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました:usb: chipidea: udc: _ep_nuke()内のDMAおよびSGクリーンアップの修正です。ChipIdea UDCドライバは、アクティブな転送中に切断されたUSBデバイスが再接続された際に「ページアラインされていないsgバッファ」エラーが発生する可能性があります。これは_ep_nuke()がDMAバッファのマッピング解除やscatter-gatherバウンスバッファのクリーンアップを適切に行わずにリクエストをガジェットレイヤに返すために起こります。根本原因は、マルチセグメントDMA転送中に切断が発生すると、リクエストのnum_mapped_sgsフィールドおよびsgt.sglポインタが古い値のまま残ることです。リクエストは-ESHUTDOWN状態でガジェットドライバへ返されますが、DMA状態は依然としてアクティブな状態です。もしガジェットドライバが再初期化せずに接続再開時にこのリクエストを再利用すると、古いDMA状態により_hardware_enqueue()はDMAマッピングをスキップし(num_mapped_sgsが0でないため)、解放済みまたは無効なDMAアドレスを使用しようとしてアラインメントエラーやメモリ破壊が生じる可能性があります。正常な完了パスである_hardware_dequeue()は、リクエストを返す前にusb_gadget_unmap_request_by_dev()およびsglist_do_debounce()を適切に呼び出します。_ep_nuke()パスも同様のクリーンアップを行い、リクエストをクリーンで再利用可能な状態で返す必要があります。修正内容としては、_ep_nuke()にDMAマッピング解除およびバウンスバッファのクリーンアップを追加し、_hardware_dequeue()のクリーンアップシーケンスを反映しました。具体的には、num_mapped_sgsが設定されている場合はusb_gadget_unmap_request_by_dev()を呼び出し、バウンスバッファが存在する場合はcopy=falseでsglist_do_debounce()を呼び出します。これにより、エンドポイントシャットダウンによりリクエストが返される際に古いDMAマッピングが残らないことが保証されます。また、sglist_do_debounce()へのfalseパラメータは、転送が中断されたシャットダウンパスに適したデータコピーを防ぐ役割を果たします。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 2.6.29 以上 6.12.75 未満
  • Linux Kernel 6.13 以上 6.18.16 未満
  • Linux Kernel 6.19 以上 6.19.6 未満

想定される影響

当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。
また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。
さらに、当該ソフトウェアが完全に停止する可能性があります。
そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。
対策

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

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

  1. 境界外書き込み(CWE-787) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-43250
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-43250
  2. 関連文書 : usb: chipidea: udc: fix DMA and SG cleanup in _ep_nuke() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/cea2a1257a3b5ea3e769a445b34af13e6aa5a123)
  3. 関連文書 : usb: chipidea: udc: fix DMA and SG cleanup in _ep_nuke() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/e74c436f8568af1c60942469d0a2300b3ada3857)
  4. 関連文書 : usb: chipidea: udc: fix DMA and SG cleanup in _ep_nuke() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/f4fbf2d4750d12ac8525d2efac1016fa0d84d4ec)
  5. 関連文書 : usb: chipidea: udc: fix DMA and SG cleanup in _ep_nuke() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/1b72b834511d17f4d069d512f78671f3f210a2f1)
更新履歴

  • [2026年05月14日]
      掲載