JVNDB-2026-023150 | |
LinuxのLinux Kernelにおける不特定の脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました:RDMA/rxeにおける、MRのページサイズがPAGE_SIZEと異なる場合のiovaからvaへの変換の修正です。現状の実装では、システムのPAGE_SIZEと異なるページサイズを持つメモリ領域(MR)の取り扱いが誤っています。根本的な問題は、rxe_set_page()がmr->page_sizeのステップで呼び出される一方で、page_listは個々のstruct pageポインタを格納し、それぞれがPAGE_SIZE分のメモリを表していることにあります。ib_sg_to_page()は、i >= 1の場合に以下のいずれかを保証しています。a) SG[i-1].dma_endとSG[i].dma_addrが連続している、b) SG[i-1].dma_endとSG[i].dma_addrがmr->page_sizeでアライメントされている、ということです。これにより、次のようなケースで誤ったiovaからvaへの変換が発生します。1) page_size < PAGE_SIZEの場合(例:MRのページサイズが4Kで、システムのPAGE_SIZEが64Kの場合) ibmr->iova = 0x181800 sg[0]: dma_addr=0x181800, len=0x800 sg[1]: dma_addr=0x173000, len=0x1000 iovaアクセス = 0x181800 + 0x810 = 0x182010 期待されるVAは0x173010(2番目のSG、オフセット0x10)ですが、修正前は以下のようになっていました。 - index = (0x182010 >> 12) - (0x181800 >> 12) = 1 - page_offset = 0x182010 & 0xFFF = 0x10 - xarray[1] はシステムページベース0x170000を格納 - 結果のVAは0x170000 + 0x10 = 0x170010となり、誤りです。2) page_size > PAGE_SIZEの場合(例:MRのページサイズが64Kで、システムのPAGE_SIZEが4Kの場合) ibmr->iova = 0x18f800 sg[0]: dma_addr=0x18f800, len=0x800 sg[1]: dma_addr=0x170000, len=0x1000 iovaアクセス = 0x18f800 + 0x810 = 0x190010 期待されるVAは0x170010(2番目のSG、オフセット0x10)ですが、修正前は以下のようになっていました。 - index = (0x190010 >> 16) - (0x18f800 >> 16) = 1 - page_offset = 0x190010 & 0xFFFF = 0x10 - xarray[1] はdma_addr 0x170000のシステムページを格納 - 結果のVAは0x170000のシステムページ + 0x10 = 0x170010となり、これも誤りです。この欠陥に関連して、Yi Zhang氏が数年前にカーネルパニックを報告しています[1]。解決策としては、1. 全てのMRページインデックスが連続しているため、連続インデックスアクセスのためにxarrayを事前割り当て済みのrxe_mr_page配列に置き換えること、2. 各rxe_mr_pageがstruct page*とシステムページ内のオフセットの両方を保持すること、3. MRのpage_sizeとPAGE_SIZEが異なる場合の処理として、 - page_size > PAGE_SIZEの場合はMRページを複数のシステムページに分割し、 - page_size <= PAGE_SIZEの場合はシステムページ内のオフセットを保存すること、4. 境界チェックと互換性検証を追加すること、です。これにより、MRページサイズとシステムのPAGE_SIZEの関係にかかわらず、正確なiovaからvaへの変換が保証され、配列ベースの順次アクセスによる性能向上も実現されます。4Kおよび64K PAGE_SIZEのホスト上でのテストは以下の通りです。- rdma-core/pytestsでの実行: $ ./build/bin/run_tests.py --dev eth0_rxe- - blktest: $ TIMEOUT=30 QUICK_RUN=1 USE_RXE=1 NVMET_TRTYPES=rdma ./check nvme srp rnbd[1] https://lore.kernel.org/all/CAHj4cs9XRqE25jyVw9rj9YugffLn5+f=1znaBEnu1usLOciD+g@mail.gmail.com/T/ | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 9.8 (緊急) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/06/09 |
| 登録日 | 2026/07/10 |
| 最終更新日 | 2026/07/10 |



