JVNDB-2026-022841 | |
LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました:net: enetc: NTMP DMAのUse-After-Free問題の修正。AI生成のレビューにより潜在的なDMAのUse-After-Free問題が報告されました[1]。netc_xmit_ntmp_cmd()がタイムアウトしエラーを返した場合、保留中のコマンドは明示的に中止されませんが、ntmp_free_data_mem()は無条件にDMAバッファを解放します。もしバッファが既に他で再割り当てされていると、これにより静かにメモリ破損が発生する可能性があります。これはハードウェアが最終的に保留中のコマンドを処理し、解放されたバッファの物理アドレスにDMA書き込みを行うためです。本問題を解決するため、本パッチでは以下の変更を行っています。1. cbdr->ring_lockをスピンロックからミューテックスに変更しました。NTMP操作がアトミックコンテキストから呼び出される場合を想定し、ロックは元々スピンロックでしたが、すべてのNTMPテーブルで下流対応が終了した現在、そのような使用はありません。ドライバはロックのコンテキスト内で使用済みBDの回収と関連するDMAメモリ解放(dma_free_coherent()はスリープする可能性があります)を行うため、ミューテックスロックに変更しました。2. ソフトウェアコマンドBD(struct netc_swcbd)の導入です。ハードウェアによるライトバックでBDのaddrとlenフィールドが上書きされるため、ドライバはハードウェアBDに依存して関連DMAメモリを解放できません。そこでドライバはDMAバッファポインタ、DMAアドレス、サイズを保持するソフトウェアシャドウBDを管理するようにしました。netc_xmit_ntmp_cmd()は使用中のBD数がNETC_CBDR_CLEAN_WORK(16)に達した時点でのみ古いBDを回収します。ソフトウェアBDによって正しいDMAメモリ解放が可能となっています。これに伴いstruct ntmp_dma_bufやntmp_free_data_mem()は不要となり削除されました。3. netc_xmit_ntmp_cmd()実行中は呼び出し側がring_lockを保持することを要求します。netc_xmit_ntmp_cmd()はレスポンスの消費が完了する前にring_lockを解放していました。しかしこのとき、同時に別スレッドが新しいコマンドを送信するとntmp_clean_cbdr()が起動し、DMAバッファがまだ使用中であるにもかかわらず解放される可能性があります。ring_lockの所有権を呼び出し側に移すことでレスポンスバッファの早期解放を防止します。そのためヘルパー関数ntmp_select_and_lock_cbdr()とntmp_unlock_cbdr()を追加しました。これらの変更により、DMAのUse-After-Free状態は解消され、安全かつ一貫したBDの回収およびDMAバッファのライフサイクル管理を保証します。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 7.8 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/06/26 |
| 登録日 | 2026/07/09 |
| 最終更新日 | 2026/07/09 |



