概要
Linux kernel の SPI ドライバ spi-sprd-adi に おいて、ダブルフリー(二重解放)の 脆弱性 が 発見 されました。CWE-415(Double Free)に 分類 される この 問題 は、メモリ 管理 の 不備 に 起因 して います。
具体的 に は、spi_alloc_host() 関数 で 割り当てた SPI コントローラ を devm_spi_register_controller() 関数 で 登録 した 場合 に 問題 が 発生 します。devm_register_restart_handler() が 失敗 した 際 の エラーハンドリング パス に おいて、spi_controller_put() が 二重 に 呼び出される こと で ダブルフリー が 発生 します。
この 脆弱性 の 根本原因 は、spi_alloc_host() と devm_spi_register_controller() の 組み合わせ に あります。devm_spi_register_controller() は devres(デバイス リソース 管理)フレームワーク を 通じて コントローラ の 解放 を 管理 します が、spi_alloc_host() で 割り当てた コントローラ は devres の 管理 対象外 で ある ため、手動 で spi_controller_put() を 呼ぶ 必要 が あります。エラーパス で この 手動 解放 と devres に よる 自動 解放 が 重複 する こと で、同一 メモリ 領域 が 二度 解放 される 事態 に 陥ります。
ダブルフリー は カーネル パニック、メモリ 破壊、権限 昇格 など の 深刻 な 結果 を 引き起こす 可能性 が あります。CVSS スコア は 7.8(High)で あり、ローカル から の 攻撃 で 特権 昇格 が 可能 と なる リスク が あります。
修正 パッチ で は、spi_alloc_host() の 代わり に devm_spi_alloc_host() を 使用 する よう 変更 されて います。devm_spi_alloc_host() は devres 管理 下 で メモリ を 割り当てる ため、devm_spi_register_controller() と の 組み合わせ で 二重 解放 が 発生 し なく なります。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 7.8 |
| 深刻度 | High |
| 攻撃元 | ローカル |
| 攻撃条件 の 複雑性 | 低 |
| 必要 な 特権 | 低 |
| ユーザー の 関与 | 不要 |
| 機密性 へ の 影響 | 高 |
| 完全性 へ の 影響 | 高 |
| 可用性 へ の 影響 | 高 |
| CWE | CWE-415 (ダブルフリー) |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| Linux kernel (spi-sprd-adi ドライバ) | Linux | 修正 パッチ 適用前 の バージョン |
修正バージョンと回避策
- 修正方法:
devm_spi_alloc_host()へ の 切り替え パッチ を 適用 する - 修正コミット: kernel.org の stable ブランチ に マージ 済み
- 暫定回避策:
- Spreadtrum(Unisoc)SoC の SPI ADI ドライバ を 使用 して いない 環境 で は 影響 なし
- 影響 を 受ける 環境 で は カーネル の アップデート を 推奨
spi-sprd-adiモジュール を 無効化 する こと で 一時的 に 回避 可能
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
