| 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 |
| Linux |
| Linux Kernel 2.6.29 以上 6.12.75 未満 |
| Linux Kernel 6.13 以上 6.18.16 未満 |
| Linux Kernel 6.19 以上 6.19.6 未満 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年05月14日] 掲載 |
May 14, 2026, 10:16 a.m. |
| 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" Root cause: The normal completion path via _hardware_dequeue() properly calls Fix: This ensures that when requests are returned due to endpoint shutdown, |
|---|---|
| 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. |
| 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 | |||