概要
Linux kernel の RDMA 仮想化ドライバ rxe(Software RoCE)において、メモリリージョン(MR)のページサイズがシステムの PAGE_SIZE と異なる場合に、iova(I/O Virtual Address)から仮想アドレス(VA)への変換が誤った結果を返すバグです。
問題のシナリオ:
-
page_size < PAGE_SIZEの場合(例: MR が 4K、システムが 64K)- xarray のインデックス計算がシステムの PAGE_SIZE ベースで行われるため、異なる SG エントリを参照してしまう
-
page_size > PAGE_SIZEの場合(例: MR が 64K、システムが 4K)- ページオフセットの計算がMRの page_size でマスクされるため、同様に誤った VA が返る
修正内容: xarray をプリアロケーション済みの rxe_mr_page 配列に置き換え、各エントリに struct page* とシステムページ内オフセットを保持することで正確な変換を実現。
過去に Yi Zhang 氏がカーネルパニックを報告しており(lore.kernel.org 参照)、この問題の実在が長年確認されていました。
CVSSベクトル
| 項目 | 値 |
|---|---|
| スコア | 9.8(Critical) |
| 攻撃経路(AV) | ネットワーク(N) |
| 攻撃の複雑さ(AC) | 低(L) |
| 権限要件(PR) | 不要(N) |
| ユーザー操作(UI) | 不要(N) |
| スコープ(S) | 変更なし(U) |
| 機密性への影響(C) | 高(H) |
| 完全性への影響(I) | 高(H) |
| 可用性への影響(A) | 高(H) |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| Linux kernel(RDMA/rxe) | Linux Foundation | 修正パッチ適用前 |
修正バージョンと回避策
Linux kernel 安定板へのバックポートパッチが提供済みです。RDMA/InfiniBand 環境でカーネルを使用している場合は、ディストリビューションのカーネルアップデートを確認してください。
修正コミット:
12985e5915a0b8354796efadaaeb201eed115377409c2c5508f3d30627bea576f8676de523cb906e836f6c13c9674027793f720be3f15ecd2b90b6ca
関連リンク
データソース: NVD (NIST)
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
