製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける境界外書き込みに関する脆弱性
Title LinuxのLinux Kernelにおける境界外書き込みに関する脆弱性
Summary

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パラメータは、転送が中断されたシャットダウンパスに適したデータコピーを防ぐ役割を果たします。

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

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

Publication Date May 6, 2026, midnight
Registration Date May 14, 2026, 10:16 a.m.
Last Update May 14, 2026, 10:16 a.m.
CVSS3.0 : 重要
Score 7.8
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Affected System
Linux
Linux Kernel 2.6.29 以上 6.12.75 未満
Linux Kernel 6.13 以上 6.18.16 未満
Linux Kernel 6.19 以上 6.19.6 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年05月14日]
  掲載
May 14, 2026, 10:16 a.m.

NVD Vulnerability Information
CVE-2026-43250
Summary

In the Linux kernel, the following vulnerability has been resolved:

usb: chipidea: udc: fix DMA and SG cleanup in _ep_nuke()

The ChipIdea UDC driver can encounter "not page aligned sg buffer"
errors when a USB device is reconnected after being disconnected
during an active transfer. This occurs because _ep_nuke() returns
requests to the gadget layer without properly unmapping DMA buffers
or cleaning up scatter-gather bounce buffers.

Root cause:
When a disconnect happens during a multi-segment DMA transfer, the
request's num_mapped_sgs field and sgt.sgl pointer remain set with
stale values. The request is returned to the gadget driver with status
-ESHUTDOWN but still has active DMA state. If the gadget driver reuses
this request on reconnect without reinitializing it, the stale DMA
state causes _hardware_enqueue() to skip DMA mapping (seeing non-zero
num_mapped_sgs) and attempt to use freed/invalid DMA addresses,
leading to alignment errors and potential memory corruption.

The normal completion path via _hardware_dequeue() properly calls
usb_gadget_unmap_request_by_dev() and sglist_do_debounce() before
returning the request. The _ep_nuke() path must do the same cleanup
to ensure requests are returned in a clean, reusable state.

Fix:
Add DMA unmapping and bounce buffer cleanup to _ep_nuke() to mirror
the cleanup sequence in _hardware_dequeue():
- Call usb_gadget_unmap_request_by_dev() if num_mapped_sgs is set
- Call sglist_do_debounce() with copy=false if bounce buffer exists

This ensures that when requests are returned due to endpoint shutdown,
they don't retain stale DMA mappings. The 'false' parameter to
sglist_do_debounce() prevents copying data back (appropriate for
shutdown path where transfer was aborted).

Publication Date May 6, 2026, 9:16 p.m.
Registration Date May 7, 2026, 4:09 a.m.
Last Update May 13, 2026, 3:51 a.m.
Affected software configurations
Configuration1 or higher or less more than less than
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 2.6.29 6.12.75
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.13 6.18.16
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 6.19.6
Related information, measures and tools
Common Vulnerabilities List