DDR5の新Rowhammer対策「PRAC」は最初から破られていた──QPRACが指摘した2つの先行案の欠陥
JEDECがDDR5以降のDRAM向けに導入したPer Row Activation Counting(PRAC)は、その着想元であるPanopticonが仕様通りに実装すると安全でなくなり、後継のUPRACは実運用では入手できない「神託的な知識」を前提にしているため実用的でない、とarXiv論文が指摘した。トロント大学の研究チームが提案したQPRACは、優先度付きサービスキューでこの2つの欠陥を回避し、HPCA 2025でDistinguished Artifact Awardを受賞している。

目次
DDR5以降のDRAMには、JEDEC(半導体の標準化団体)がRowhammer対策として定めた「Per Row Activation Counting(PRAC)」という新しい枠組みが組み込まれている。だが、この枠組みを素直に実装しようとすると、その着想元になった既存の研究が既に破綻していた、という指摘をarXivに公開された論文「QPRAC」が行っている。論文PDFの著者一覧をcurlで確認すると、著者はJeonghyun Woo氏(ブリティッシュコロンビア大学、†マーク=一部作業はNVIDIA Researchでのインターン中に実施)、Chris S. Lin氏(トロント大学)、Prashant J. Nair氏(ブリティッシュコロンビア大学)、Aamer Jaleel氏(NVIDIA)、Gururaj Saileshwar氏(トロント大学)の5名で、トロント大学単独ではなく、ブリティッシュコロンビア大学・トロント大学・NVIDIAの3機関にまたがる共同研究だった。HPCA 2025で発表され、Distinguished Artifact Award(査読を通った実装・実験成果物への賞)を受賞している。
3行まとめ
- PRACの着想元である「Panopticon」は、JEDECの仕様通りに実装すると安全でなくなる、と論文は指摘する。後継の「UPRAC」も、実運用では得られない「アクティベート数上位N行」という神託的な知識を前提にしており実用的でない
- QPRACは、保留中の緩和処理を活性化カウントに基づいて優先順位づけする「優先度付きサービスキュー(PSQ)」を核として、これらの安全性リスクを回避する
- 論文が示す性能数値は、Rowhammerの閾値がわずか71活性化まで低い環境でも安全な緩和を実現しながら、通常ワークロードでの速度低下は0.8%(プロアクティブな緩和を併用すると0%まで低減)
PRACとは何か、なぜ必要になったか
論文の要旨は、まずPRACの位置づけを次のように説明している。
JEDEC has introduced the Per Row Activation Counting (PRAC) framework for DDR5 and future DRAMs to enable precise counting of DRAM row activations. PRAC enables a holistic mitigation of Rowhammer attacks even at ultra-low Rowhammer thresholds. PRAC uses an Alert Back-Off (ABO) protocol to request the memory controller to issue Rowhammer mitigation requests.
(JEDECは、DRAMの行活性化を精密にカウントするため、DDR5および将来のDRAM向けにPer Row Activation Counting(PRAC)フレームワークを導入した。PRACは、超低いRowhammer閾値においても、包括的なRowhammer攻撃緩和を可能にする。PRACは、メモリコントローラにRowhammer緩和リクエストの発行を要求するAlert Back-Off(ABO)プロトコルを使用する)
Rowhammerは、DRAMのある行を高頻度でアクセスすると隣接する行のビットが反転してしまう物理的な脆弱性で、最新のDRAM製造プロセスほど閾値(反転が起きるまでの活性化回数)が下がる傾向にあるとされている。PRACはこの閾値がどれだけ下がっても対応できる緩和策として設計された枠組みだ。
2つの先行案の欠陥
論文が問題視するのは、このPRACという枠組み自体ではなく、それをどう実装するかという段階だ。
However, recent PRAC implementations are either insecure or impractical. For example, Panopticon, the inspiration for PRAC, is rendered insecure if implemented per JEDEC's PRAC specification. On the other hand, the recent UPRAC proposal is impractical since it needs oracular knowledge of the `top-N' activated DRAM rows that require mitigation.
(しかし、既存のPRAC実装は、安全でないか実用的でないかのいずれかだ。例えば、PRACの着想元であるPanopticonは、JEDECのPRAC仕様通りに実装すると安全でなくなる。一方、最近のUPRAC提案は、緩和が必要な「アクティベート数上位N行」という神託的な知識を必要とするため実用的でない)
「Panopticonが安全でなくなる」という指摘は、PRACという規格自体の着想元となった先行研究が、規格化の過程で仕様と整合しなくなったことを意味する。「UPRACが神託的な知識を必要とする」という指摘は、理論上は機能するが、実際のハードウェアでは入手できない情報(将来どの行が最も攻撃的にアクセスされるかを事前に知ること)を前提にしているため、実装が成立しないことを意味する。
論文PDF本文で確認した攻撃の具体的な仕組み
抄録だけでは「安全でない」「実用的でない」としか分からないが、論文PDF本文(第II章)には、それぞれの欠陥がなぜ生じるかの技術的な説明と、実際に何回の未緩和アクティベートが可能かという具体的な攻撃シナリオが書かれていた。
Panopticonの脆弱性について、論文は3つの原因を挙げている。
Panopticon is insecure when implemented with the PRAC specification because of three reasons: (1) mitigating rows only upon toggling of the counter's threshold bit (t-bit), (2) a limited capacity of FIFO-based service queue, and (3) PRAC's non-blocking nature of Alerts.
(Panopticonは、PRAC仕様で実装すると3つの理由で安全でなくなる。(1) カウンタの閾値ビット(t-bit)がトグルしたときにのみ行を緩和対象にすること、(2) FIFO方式のサービスキューの容量が限られていること、(3) PRACのAlertが非ブロッキングであること)
これらを組み合わせた攻撃(論文内では「Fill+Escape Attack」「Toggle+Forget Attack」と名付けられている)について、論文は序盤の要約で「unmitigated rows being activated up to 50× higher than TRH(未緩和の行がTRHの50倍を超えてアクティベートされる)」と述べたうえで、第II章の詳細な分析では、Toggle+Forget Attackについてさらに踏み込んだ数値を示している。
No matter the queue size, the target row is activated beyond 100× of TRH (for TRH of sub-100), compromising the security of Panopticon.
(キューのサイズによらず、TRHが100未満の場合、対象行はTRHの100倍を超えてアクティベートされ、Panopticonの安全性を損なう)
論文終盤の関連研究セクションでは、シミュレーションによる実測値として「Fill+Escape Attackで最低1,300回、Toggle+Forget Attackで最大30,000回の未緩和アクティベートを達成した」とも報告されている——序盤の要約(50倍・100倍)は簡略化した表現で、詳細な攻撃シミュレーションではより大きい数値が出ている、という関係になっている。
UPRACについても、論文はサービスキューを持たない設計とFIFOベースのサービスキューを併用する設計の両方を検証しており、後者について次の具体的な数値を示している。
An attacker can thus fill up the UPRAC FIFO queue with Q rows, each activated to NBO, and then use three ABOACT to hammer the target row each time. This incurs at least 1283 ACTs to a target row without mitigation (at NBO of 512) and higher ACTs at lower NBO. Thus, UPRAC is insecure below the TRH of 1280.
(攻撃者はUPRACのFIFOキューをQ個の行で埋め尽くし、それぞれをNBOまでアクティベートさせたうえで、3回のABOACTを使って毎回対象行をハンマリングできる。これにより、対象行は緩和されないまま最低でも1,283回のアクティベートを受ける(NBOが512の場合)。NBOが低いほどこの数はさらに増える。したがってUPRACは、TRHが1,280を下回ると安全でなくなる)
つまりUPRACは、記事本文で先述した「神託的な知識が必要で実用的でない」という欠陥に加え、キューを使う実用的な変種を採用した場合には、Panopticonと同種の攻撃(Fill+Escape Attack)によってTRH 1,280未満で安全性そのものが崩れるという、二重の弱点を抱えていることが分かった。
QPRACの解決策:優先度付きサービスキュー
論文が提案するQPRACの核心は、緩和処理の順番を制御する仕組みにある。
The crux of our proposal is the design of a priority-based service queue (PSQ) for mitigations that prioritizes pending mitigations based on activation counts to avoid the security risks of prior solutions. This provides principled security using the reactive ABO protocol.
(私たちの提案の核心は、活性化カウントに基づいて保留中の緩和処理を優先順位づけする、優先度付きサービスキュー(PSQ)の設計にある。これにより、既存案の安全性リスクを回避する。これは、反応的なABOプロトコルを使った、原則に基づいた安全性を提供する)
さらに、性能面の犠牲を抑えるための工夫として、Refresh Management(RFM)操作時の日和見的な緩和と、リフレッシュ(REF)中のプロアクティブな緩和を、このPSQと組み合わせて設計したとしている。
具体的な数値:閾値71でも0.8%の速度低下
論文が示す性能評価の数値は次の通りだ。
QPRAC provides secure and practical RowHammer mitigation that scales to Rowhammer thresholds as low as 71 while incurring a 0.8% slowdown for benign workloads, which further reduces to 0% with proactive mitigations.
(QPRACは、Rowhammerの閾値がわずか71活性化まで低くなっても、通常ワークロードで0.8%の速度低下に留めながら、安全で実用的なRowhammer緩和を実現する。プロアクティブな緩和を併用すると、この速度低下はさらに0%まで低減する)
「閾値71」という数字は、この論文の実験設定における最も厳しい想定値であり、実際の市販DRAM製品の閾値がここまで低いことを意味するものではない。あくまで、将来的にどこまで閾値が下がっても対応できる設計かを検証するための評価条件だと考えられる。
論文PDF本文には、TRHの実際の推移についても記述がある。序盤の要約では「70K [29]から4.8K [24]に低下し、さらに下がると見込まれる」とし、第II章の詳細な説明では同じ出典[24]を指しながら「2014年の70Kから2020年には約16分の1の4.5Kまで低下」としている——同じ論文内でTRHの2020年時点の数値が「4.8K」と「4.5K」で一致していない箇所を見つけた。数百単位の差であり結論に影響する規模ではないが、査読を通った論文でも本文中の数値表記に揺れが生じうる一例として記録しておく。
ストレージ・性能面での比較——QPRACは1バンクあたり15バイト
論文の関連研究セクション(第VII章)には、QPRACと既存の複数の学術的な対策手法とのストレージ比較表(Table IV)が掲載されている。
| 手法 | TRH=4Kでの1バンクあたりSRAM使用量 | TRH=100での1バンクあたりSRAM使用量 |
|---|---|---|
| Misra-Gries | 42.5 KB | 1,700 KB |
| TWiCe | 300 KB | 12 MB |
| CAT | 196 KB | 7.84 MB |
| QPRAC | 15 bytes | 15 bytes |
(出典: 論文PDF本文 Table IV「Per-Bank SRAM Overhead of In-DRAM Trackers」を日本語化・転記)
TRHが下がるほど他手法はKB〜MB単位までストレージ使用量が膨らむのに対し、QPRACはTRHによらず15バイトで一定という設計だと論文は主張している。性能面では、既存の学術対策Mithril・PrIDEとの比較(Figure 20)についても具体的な数値が書かれていた。
Mithril's performance drops by 69%, 54%, 32%, and 10%, at TRH of 64, 128, 256, and 512, while PrIDE shows 54%, 32%, 19%, and 7% slowdowns at the same TRH. In contrast, QPRAC incurs no slowdown across all evaluated thresholds. Additionally, Mithril requires a 5,300-entry CAM/bank, which is impractical, whereas QPRAC only requires a 5-entry CAM/bank
(MithrilはTRHが64・128・256・512のとき、それぞれ69%・54%・32%・10%の性能低下を示す。PrIDEは同じTRHで54%・32%・19%・7%の低下を示す。対してQPRACは、評価したすべての閾値で低下がない。さらにMithrilは1バンクあたり5,300エントリのCAMを必要とし非実用的だが、QPRACは1バンクあたり5エントリのCAMのみで済む)
評価には、cycle精度のDRAMシミュレータ「Ramulator2」を使い、SPEC2006・SPEC2017・TPC・Hadoop・MediaBench・YCSBの各ベンチマークから選んだ57本のアプリケーションを、4コア・8MB共有LLC・64GB DDR5(1チャネル・2ランク)というシステム構成で走らせている、と第V章に明記されていた。
同じ関連研究セクションでは、QPRACと同時期に独立して発表された「MOAT」という別の研究も、PRAC実装(Panopticonベース)の脆弱性を指摘していたことが紹介されている。
MOAT showed that in a PRAC implementation like Panopticon, configured for a Rowhammer threshold of 128, tardiness in mitigation using FIFO-based queues can cause activation counts of up to 1150, far beyond the Rowhammer threshold of 128.
(MOATは、Rowhammer閾値128に設定されたPanopticon的なPRAC実装において、FIFOベースのキューによる緩和の遅延が、閾値128をはるかに超える最大1,150回のアクティベートを引き起こしうることを示した)
QPRACの著者らは、自分たちの攻撃シミュレーションではさらに大きい数値(Fill+Escape Attackで最低1,300回、Toggle+Forget Attackで最大30,000回)が得られたとして、MOATより悪い攻撃例を示せたと位置づけている。
著者の重なりが示すもの
この論文の著者のうちGururaj Saileshwar氏とChris S. Lin氏(ともにトロント大学)は、当サイトで先に扱ったNVIDIA GPUのECC保護を破る「GPUThor」の共著者でもある。GPUThorがGPU側のメモリ(GDDR6)を狙う攻撃研究だったのに対し、QPRACはホスト側のDRAM(DDR5)における防御側の研究であり、攻撃と防御の両面を同じ研究室が手がけていることが分かる。
HPCA 2025での評価とアーティファクトの公開状況
論文の付随情報(arXivのコメント欄)には、この論文が「HPCA 2025で発表された、15ページ(付録含む)の論文」と記載されている。HPCAはコンピュータアーキテクチャ分野のトップカンファレンスの1つで、Distinguished Artifact Award(査読を通った実装・実験成果物への賞)を受賞していることは、研究者個人のウェブページ(gururaj-s.github.io)の更新履歴でも確認できた。同ページからリンクされている実装コードのリポジトリ(github.com/sith-lab/qprac)をGitHub APIで確認すると、作成日2024年7月19日、最終pushは2025年5月14日(論文のarXiv最終改訂v5と同じ2025年5月付近)、star数3、ライセンス表記なしだった。star数が少ないのは、これが一般利用を想定した公開ツールではなく、査読用のシミュレーション実装(研究アーティファクト)だからだと考えられる。
PDF本文まで読み、抄録だけでは分からなかった数値を確認した
この記事はarXivの抄録に加えて、論文PDF本文(15ページ、付録含む)をcurlで取得しpdftotextでテキスト化した内容を一次ソースとしている。第II章のPanopticon・UPRACの脆弱性分析、第V章の評価手法(Ramulator2、57本のベンチマークアプリケーション、システム構成)、第VI・VII章の性能・エネルギー・ストレージ比較、関連研究(MOAT・PRHT・Mithril・PrIDEとの対比)までは読み込み、本文中に見つけた数値の食い違い(TRHの2020年値が序盤要約では4.8K、詳細説明では4.5Kと表記が揺れている点)も含めて記載した。一方で、PSQの回路レベルの実装詳細(CAMのタイミング設計、付録Aの追加攻撃シナリオの数式的な導出)までは細部を追いきれておらず、DDR5の実際の商用DRAM製品(Micron・SK Hynix・Samsungなど)がQPRACの提案をどこまで採用しているか(あるいは採用していないか)は、この記事の範囲では確認できていない——論文の謝辞にはSK Hynix・Micron・Samsungからのフィードバックへの謝辞が書かれているが、これが採用を意味するものではない。
自分自身はDRAMのハードウェア設計やRowhammer緩和策を実務で扱ったことがなく、この記事は論文の記述の読み込みのみに基づいている。
感想・指摘はコメント欄へ。
出典・参照資料
AIニュースの解説を動画でも
YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。
コメント
まだコメントはありません。最初のコメントを書いてみませんか?
AIについて聞きたいことはありますか?
質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。
質問箱を見る →新しい記事をメールで受け取る
AIの新しい発表を、出典付きで整理して届けます。