ロウハンマー(ロウハンマー、RowHammerとも表記)は、ダイナミックランダムアクセスメモリ(DRAM)における意図しない望ましくない副作用を利用するコンピュータセキュリティエクスプロイトの一種である。この副作用では、メモリセル間の電荷の漏洩によってメモリセル間の電気的相互作用が起こり、元のメモリアクセスではアドレス指定されなかった近傍のメモリ行の内容が変更される可能性がある。DRAMメモリセル間の分離が回避されるこの現象は、現代のDRAMのセル密度が高いことに起因しており、特別に細工されたメモリアクセスパターンによって、同じメモリ行を何度も高速にアクティブ化することで発生する可能性がある。[ 1 ] [ 2 ] [ 3 ]
ロウハンマー効果は、いくつかの権限昇格コンピュータセキュリティ攻撃に使用されており、[ 2 ] [ 4 ] [ 5 ] [ 6 ]、ネットワークベースの攻撃も理論的には可能である。[ 7 ] [ 8 ]
ロウハンマー効果の発生を防ぐためのさまざまなハードウェアベースの技術が存在し、これには一部のプロセッサやDRAMメモリモジュールで必要なサポートが含まれます。[ 9 ] [ 10 ]

ダイナミックRAM(DRAM)では、保存されたデータの各ビットは、1つのコンデンサと1つのトランジスタで電気的に実装された個別のメモリセルを占有します。コンデンサの充電状態(充電または放電)によって、DRAMセルがバイナリ値として「1」または「0」のどちらを保存するかが決まります。膨大な数のDRAMメモリセルが、データの読み取り、書き込み、およびリフレッシュのためにセルを構成する追加のロジックとともに、集積回路に詰め込まれています。 [ 11 ] [ 12 ]
メモリセル(両図の青い四角)はさらにマトリックス状に構成され、行と列を通してアドレス指定されます。マトリックスに適用されるメモリアドレスは行アドレスと列アドレスに分解され、行アドレスデコーダ(両図のそれぞれ縦と横の緑の四角)と列アドレスデコーダによって処理されます。行アドレスによって読み出し操作の対象となる行が選択されると(この選択は行アクティベーションとも呼ばれます)、その行内のすべてのセルのビットが行バッファ(両図の赤い四角)を形成するセンスアンプに転送され、そこから列アドレスを用いて正確なビットが選択されます。DRAMの設計上、メモリセルの値を読み取った後、セル電荷を行バッファに転送することでメモリセルを書き換える必要があるため、読み出し操作は破壊的な性質を持ちます。書き込み操作も同様にアドレスをデコードしますが、設計上、1ビットの値を変更するには行全体を書き換える必要があります。[ 1 ] : 2–3 [ 11 ] [ 12 ] [ 13 ]
DRAMは、自然放電率を持つコンデンサを使用してデータビットを保存するため、メモリセルの状態は時間の経過とともに失われ、リフレッシュと呼ばれるプロセスですべてのメモリセルを定期的に書き換える必要があります。 [ 1 ] : 3 [ 11 ]設計上のもう1つの結果として、DRAMメモリは保存データのランダムな変化の影響を受けやすく、これはソフトメモリエラーと呼ばれ、宇宙線などの原因によるものです。ソフトメモリエラーに対抗し、DRAMの信頼性を向上させるさまざまな技術がありますが、その中で最も一般的に使用されているのはエラー訂正コード(ECC)メモリとその高度な派生型(ロックステップメモリなど)です。[ 14 ]

DRAM集積回路の高密度化により、メモリセルの物理的サイズが縮小し、電荷量も減少しました。その結果、動作ノイズマージンが低下し、メモリセル間の電磁相互作用が増加し、データ損失の可能性が高まりました。その結果、セル同士の動作が干渉し合い、影響を受けるメモリセルに格納されたビットの値がランダムに変化することで発生する外乱エラーが観測されています。外乱エラーの認識は1970年代初頭、Intel 1103が最初の市販DRAM集積回路として登場したときに遡ります。それ以来、DRAMメーカーは、セル間の分離の改善や製造テストの実施など、外乱エラーに対抗するためのさまざまな軽減技術を採用してきました。しかし、研究者は2014年の分析で、2012年と2013年に製造された市販のDDR3 SDRAMチップが外乱エラーの影響を受けやすいことを証明し、観測されたビット反転につながる関連する副作用をRowhammerと名付けました。[ 1 ] [ 3 ] [ 15 ]
DDR3メモリでロウハンマー効果が発生する可能性[ 16 ]は、主にDDR3の高密度メモリセルとセル間の関連する相互作用の結果に起因するが、急速なDRAM行のアクティブ化が主な原因であると判明している。頻繁な行のアクティブ化により、関連する行選択ラインの電圧変動が発生し、近くの(ほとんどの場合隣接する)メモリ行(犠牲行と呼ばれる)に属するコンデンサで自然よりも高い放電率を誘発することが確認されている。影響を受けるメモリセルが過剰な電荷を失う前にリフレッシュされない場合、外乱エラーが発生する。テストでは、約139,000回の後続のメモリ行アクセス(キャッシュフラッシュを含む)を実行した後に外乱エラーが観察される可能性があり、1,700セルにつき最大1つのメモリセルが影響を受ける可能性があることがわかっている。これらのテストでは、外乱エラーの率は環境温度の上昇に大きく影響されないことも示されているが、特定のビットパターンでは外乱エラー率が大幅に高くなるため、DRAMの実際の内容に依存する。 [ 1 ] [ 2 ] [ 15 ] [ 17 ]
両面ハンマリングと呼ばれる手法では、ある犠牲行を囲む2つのDRAM行を標的として活性化します。本節の図では、この手法は黄色の行を両方とも活性化することで、紫色の行(この場合は犠牲行)のビット反転を誘発します。テストの結果、この手法は、犠牲行に隣接するDRAM行の1つだけを活性化する手法と比較して、外乱エラーの発生率が大幅に高くなる可能性があることが示されています。[ 4 ] [ 18 ] : 19–20 [ 19 ]
DRAMベンダーが緩和策を導入するにつれて、Rowhammer緩和策を回避するためのパターンはより高度化する必要がありました。最近のRowhammerパターンには、非均一な周波数ベースのパターンが含まれています。[ 20 ]これらのパターンは、それぞれが異なる周波数、位相、振幅でハンマー攻撃を受ける、多数の両面アグレッサペアで構成されています。これを利用し、パターンをREFRESHコマンドで同期させることで、緩和策がもはや保護を提供できない「盲点」を非常に効果的に特定することが可能です。このアイデアに基づき、研究者たちはBlacksmith [ 21 ]という名のRowhammerファザーを開発しました。これは、すべてのDDR4デバイスで既存の緩和策を回避できます。
ロウハンマー効果の検出、防止、修正、または軽減には、程度の差はあれ、様々な方法が存在する。テストの結果、単一誤り訂正と二重誤り検出(SECDED)機能を備えた単純な誤り訂正符号では、観測された外乱エラーの一部がメモリワードあたり2ビット以上の反転ビットを含むため、すべての外乱エラーを訂正または検出できないことが示された。[ 1 ] : 8 [ 15 ] : 32 さらに、研究によると、正確に標的を定めた3ビットのロウハンマー反転により、ECCメモリが変更に気付かなくなることが示された。[ 22 ] [ 23 ]
あまり効果的ではない解決策としては、通常の64ミリ秒よりも短い間隔でメモリリフレッシュを頻繁に行うことだが[ a ]、この手法では消費電力が増加し、処理オーバーヘッドも増加する。一部のベンダーは、この種の緩和策を実装したファームウェアアップデートを提供している。 [ 24 ]より複雑な防止策の1つは、頻繁にアクセスされるメモリ行をカウンターベースで識別し、隣接する行を積極的にリフレッシュする方法である。もう1つの方法は、アクセス頻度に関係なく、アクセスされた行に隣接するメモリ行を不定期にランダムリフレッシュする。研究によると、これら2つの防止策はパフォーマンスにほとんど影響を与えないことが分かっている。[ 1 ] : 10–11 [ 25 ]
Ivy Bridgeマイクロアーキテクチャのリリース以降、Intel Xeonプロセッサは、いわゆる擬似ターゲット行リフレッシュ(pTRR)をサポートしています。これは、pTRR準拠のDDR3デュアルインラインメモリモジュール(DIMM)と組み合わせて使用することで、Rowhammer効果を軽減し、潜在的な犠牲行を自動的にリフレッシュすることで、パフォーマンスや消費電力に悪影響を与えません。pTRR準拠ではないDIMMと組み合わせて使用する場合、これらのXeonプロセッサはデフォルトで通常の2倍の周波数でDRAMリフレッシュを実行します。これにより、メモリアクセスのレイテンシがわずかに高くなり、メモリ帯域幅が最大2~4%低下する可能性があります。[ 9 ]
JEDECが発行したLPDDR4モバイル メモリ規格[ 26 ]には、パフォーマンスや消費電力に悪影響を与えることなく Rowhammer 効果を防ぐ、いわゆるターゲット行リフレッシュ(TRR)のオプションのハードウェア サポートが含まれています。 [ 10 ] [ 27 ] [ 28 ]また、一部のメーカーはDDR4製品に TRR を実装していますが、[ 29 ] [ 30 ]これは JEDEC が発行した DDR4 メモリ規格の一部ではありません。[ 31 ]内部的には、TRR は行のアクティブ化の数をカウントし、それを事前に定義されたチップ固有の最大アクティブ化カウント(MAC) および最大アクティブ化ウィンドウ(t MAW ) の値と比較することで、潜在的な犠牲行を識別し、これらの行をリフレッシュしてビット反転を防止します。 MAC 値は、隣接する行が犠牲行として識別されるまでの t MAW時間以下の時間間隔内で特定の DRAM 行で発生する可能性がある行アクティブ化の最大合計数です。 TRRは、t MAW時間ウィンドウ内に隣接する2つの行の行アクティベーションの合計がMAC制限に達した場合にも、その行を被害者行としてフラグ付けすることがある。 [ 26 ] [ 32 ]調査によると、2019年から2020年の間に製造されたデバイスのDDR4 UDIMMおよびLPDDR4Xチップに導入されたTRR緩和策は、Rowhammerに対する保護には効果的ではないことが示された。[ 20 ]
Rowhammerエクスプロイトは、大量のDRAM行のアクティベーションを高速に実行する必要があるため、キャッシュされていないメモリアクセスを大量に発行し、キャッシュミスを引き起こします。これは、ハードウェアパフォーマンスカウンタを使用してキャッシュミスのレートを監視し、異常なピークを検出することで検出できます。[ 4 ] [ 33 ]
2013年12月3日にリリースされたMemTest86メモリ診断ソフトウェアのバージョン5.0では、コンピュータのRAMが障害エラーの影響を受けやすいかどうかをチェックするRowhammerテストが追加されましたが、これはコンピュータがUEFIで起動した場合にのみ機能します。UEFIなしでは、ハンマーテストのない古いバージョンが起動します。[ 34 ]
メモリ保護は、プロセスが各プロセスに割り当てられていないメモリにアクセスするのを防ぐ方法であり、ほとんどの現代のオペレーティングシステムの背後にある概念の1つです。メモリ保護を保護リングなどの他のセキュリティ関連メカニズムと組み合わせて使用することで、プロセス間の権限分離を実現できます。これにより、プログラムやコンピュータシステム全体が、特定のタスクを実行するために必要な特定の権限に限定された部分に分割されます。権限分離を使用すると、コンピュータセキュリティ攻撃の影響をシステムの特定の部分に限定することで、潜在的な被害の範囲を軽減することもできます。 [ 35 ] [ 36 ]
妨害エラー(上記セクションで説明)は、非常に低いハードウェアレベルでメモリ保護を「ショート」させることで、様々な層のメモリ保護を効果的に破り、実質的に、プロセスが基盤となるメモリハードウェアを直接操作することでメインメモリの任意の部分の内容を変更できる、独自の攻撃ベクトルタイプを作成します。 [ 2 ] [ 4 ] [ 18 ] [ 37 ]これと比較して、バッファオーバーフローなどの「従来の」攻撃ベクトルは、さまざまなプログラミングミスを悪用して、通常はアクセスできないメインメモリの内容を変更することにより、ソフトウェアレベルで保護メカニズムを回避することを目的としています。 [ 38 ]
hammer: mov ( X ), %eax // アドレス X から読み取りmov ( Y ), %ebx // アドレス Y から読み取りclflush ( X ) // アドレス X のキャッシュをフラッシュclflush ( Y ) // アドレス Y のキャッシュをフラッシュjmp hammer |
ロウハンマー効果を引き起こすx86アセンブリコードの断片(メモリアドレスXとYDRAM行が同じメモリバンク内の異なる行にマッピングされる必要がある)[ 1 ]:3 [ 4 ] [ 18 ]:13–15 |
2014年6月に国際コンピュータアーキテクチャシンポジウムで発表されたロウハンマー効果に関する初期の研究では、DDR3 DRAMチップにおけるDRAM読み出し妨害エラーの性質について説明・分析が行われました。この論文[ 1 ]では、3社のDRAMメーカーの129個のDDR3 DRAMモジュールを実験的に調査し、そのうち110個で読み出し妨害ビットフリップが発生することを実証しました。また、IntelとAMDの2つの実システム上でユーザーレベルプログラムを実行すると、メインメモリにビットフリップが発生することも示されました。この研究では、「ある程度の技術的努力をすれば、コード1aを妨害攻撃へと発展させ、他のプログラムにエラーを注入したり、システムをクラッシュさせたり、場合によってはシステムの制御を乗っ取ったりできる可能性があると考えています。本研究の主目的はDRAM妨害エラーを理解し、防止することであるため、このような研究は将来に残します。」[ 1 ]
その後の2014年10月の研究論文では、ロウハマー効果に起因する安全保障上の問題の存在は示唆されなかった。[ 16 ]
2015年3月9日、GoogleのProject Zeroは、Rowhammer効果に基づく2つの機能的な権限昇格エクスプロイトを公開し、 x86-64アーキテクチャ上でその悪用可能性を確立しました。公開されたエクスプロイトの1つは、サンドボックス内でx86-64マシン命令の限定されたサブセットを実行するGoogle Native Client (NaCl)メカニズムをターゲットにしており、[ 18 ] : 27 Rowhammer効果を悪用してサンドボックスから脱出し、システムコールを直接発行する機能を獲得します。CVE - 2015-0565として追跡されているこのNaClの脆弱性は、 NaClを変更して、以前は効果的なRowhammer攻撃を構築するために必要であると考えられていた(キャッシュラインフラッシュ[ 39 ])マシン命令の実行を許可しないようにすることで軽減されました。[ 2 ] [ 4 ] [ 37 ]clflush
Project Zero によって明らかにされた 2 つ目のエクスプロイトは、x86-64 アーキテクチャ上で特権のないLinuxプロセスとして実行され、Rowhammer 効果を悪用して、コンピュータにインストールされているすべての物理メモリへの無制限のアクセスを取得します。このエクスプロイトは、障害エラーとメモリスプレーを組み合わせることで、仮想アドレスを物理アドレスにマッピングするために仮想メモリシステムが使用するページテーブルエントリ[ 18 ] : 35 を 変更できるため、エクスプロイトは無制限のメモリアクセスを取得できます。[ 18 ] : 34, 36–57 このエクスプロイトの性質と、x86-64 アーキテクチャが特権マシン命令を作成できないことが原因で、Rowhammer 防止メカニズムが組み込まれたハードウェアを使用しないコンピュータでは、このエクスプロイトを軽減することはほとんどできません。エクスプロイトの実行可能性をテストしているときに、Project Zero は、テストした 29 台のラップトップのうち約半数で障害エラーが発生し、そのうちのいくつかは、脆弱なラップトップで Rowhammer を誘発するコードを実行してから 5 分以内に発生したことを発見しました。テストされたラップトップは2010年から2014年の間に製造され、ECC非対応のDDR3メモリを使用していました。[ 2 ] [ 4 ] [ 37 ]clflush
2015 年 7 月、セキュリティ研究者のグループが、アーキテクチャや命令セットに依存しない Rowhammer 効果の悪用方法を説明した論文を発表しました。このアプローチでは、命令に頼ってキャッシュ フラッシュを実行するのではなく、慎重に選択されたメモリ アクセス パターンを使用してclflush非常に高いレートのキャッシュ エビクションを引き起こすことで、キャッシュされていないメモリ アクセスを実現します。キャッシュ置き換えポリシーはプロセッサ間で異なりますが、このアプローチでは、適応型キャッシュ エビクション戦略アルゴリズムを採用することでアーキテクチャの違いを克服しています。[ 18 ] :64–68 このアプローチの概念実証は、ネイティブ コード実装と、 Firefox 39で実行される純粋なJavaScript実装の両方で提供されています。Rowhammer.js と呼ばれる JavaScript 実装[ 40 ]は、大規模な型付き配列を使用し、大きなページを使用した内部割り当てに依存しています。その結果、非常に低レベルの脆弱性を非常に高レベルで悪用することを示しています。[ 41 ] [ 42 ] [ 43 ] [ 44 ]
2016年10月、研究者らはDRAMMERを公開した。これは、Rowhammerを他の手法と組み合わせて使用し、いくつかの人気スマートフォンで確実にルートアクセスを取得するAndroidアプリケーションである。[ 45 ]この脆弱性はCVE - 2016-6728として認識され[ 46 ]、1ヶ月以内にGoogleによって緩和策がリリースされた。しかし、攻撃の可能な実装の一般的な性質上、効果的なソフトウェアパッチを確実に実装することは困難である。2018年6月の時点で、学界と業界によって提案されたパッチのほとんどは、展開するのが非現実的であるか、すべての攻撃を阻止するには不十分であった。緩和策として、研究者らはガード行でDMAバッファを分離することにより、直接メモリアクセス(DMA)に基づく攻撃を防ぐ軽量の防御策を提案した。 [ 47 ] [ 48 ]
2020年5月、TRRespass研究[ 49 ]により、Rowhammer攻撃に対して保護され耐性があると主張されていた既存のDDR4 DRAMチップが、実際にはRowhammer攻撃に対して脆弱であることが示されました。この研究では、「多面的ハンマー」と呼ばれる新しいアクセスパターンが導入され、DDR4 DRAMチップ内に組み込まれたRowhammer攻撃防御を回避します。
2021年5月、Googleの研究チームは、一部の新型DRAMチップの物理的特性の悪化を利用した新たなエクスプロイト「Half-Double」を発表しました。[ 50 ]
2024年3月、 ETHチューリッヒの研究者グループは、 AMD Zenチップ用のロウハンマー攻撃ツールであるZenHammerを発表し、またDDR5 SDRAMを攻撃するためにロウハンマーを初めて使用したことも発表した。[ 51 ] [ 52 ]
2024年6月、 ETHチューリッヒの研究者グループはRISC-Vチップ用のRowhammerエクスプロイトであるRISC-Hを発表しました。これはRISC-Vに関する最初のRowhammer研究です。[ 53 ]
2025年9月、 ETHチューリッヒの研究者グループは、より長く高度なパターンを使用することで、 DDR5 SDRAMメーカーの最大規模のサンプルにおけるRowhammer Target Row Refreshの緩和策をすべて回避することに成功したPhoenixを発表しました。そして、実際に脆弱性を実証しました。[ 54 ]
{{citation}}: CS1 maint: ISBNによる作業パラメータ(リンク)InfoWorld2015年3月9日、Serdar Yegulalp著