攻撃は、サーバーが侵害された場合でも、セキュリティを保証するAMDの保護をバイパスします。
ハッキングにおける最も古い格言のひとつに、「攻撃者がデバイスに物理的にアクセスできれば、そのセキュリティは終わりだ」というものがあります。この格言の根拠は確かです。電話、コンピュータ、その他の機器がどれほど厳重にロックされていても、ハッキングを意図する人物が物理的に操作する能力を得てしまえば、成功する可能性はほぼ確実です。
クラウド・コンピューティングの時代においては、広く受け入れられてきたこの原則はもはや普遍的な真実ではなくなっています。世界でも最も機密性の高い情報、すなわち医療記録、金融口座情報、封印された法務文書などは、現在では、その保護を担当する企業から数千マイル離れたクラウドセンターで働く、身元不明の管理者によって日常的にメンテナンスされているサーバーに保存されていることがよくあります。
骨の髄まで悪い(RAM)
これを受けて、チップメーカーは、サーバーが物理的に改ざんされたりマルウェアに感染したりした場合でも、仮想マシンを介して流れる機密データは、VM管理者のみが知る暗号化キーなしにはアクセスできないという保証を提供するために、シリコンに保護機能を組み込み始めました。このシナリオでは、クラウド・プロバイダー内の管理者、裁判所の令状を持つ法執行機関、そしてサーバーをなんとかして侵害したハッカーは、運が悪いということになります。
火曜日、国際的な研究チームが、チップメーカーAMDが最も高価で強固なマイクロプロセッサ製品ラインのユーザーに対して行っているセキュリティ保証を完全に無効にする実証攻撃「BadRAM」を発表しました。AMD Epyc 7003 プロセッサから、SEV-SNP(Secure Encrypted Virtualization と Secure Nested Paging の略)と呼ばれる機能が搭載され、VM が物理マシンを実行している誰かによってインストールされたバックドアによって侵害されていないことを証明する暗号化手段が提供されてきました。
VMにバックドアが仕掛けられていた場合、暗号化認証は失敗し、VM管理者に即座に侵害が通知されます。少なくともSEV-SNPは、このように動作するように設計されています。BadRAMは、サーバー管理者であれば数分で実行できる攻撃で、10ドル程度のハードウェア、または場合によってはソフトウェアのみを使用して、DDR4またはDDR5メモリモジュールが起動時にメモリ容量を誤って報告するように仕掛けることができます。それ以降、VMが深刻な侵害を受けた場合でも、SEV-SNPは、その整合性を証明する暗号ハッシュを恒久的に抑制するように設定されます。
「BadRAMは、Amazon AWS、Google Cloud、Microsoft Azureなどの大手クラウド・プロバイダーによって広く導入されているAMDの最新技術であるSecure Encrypted Virtualization(SEV-SNP)に対する信頼を完全に損なうものです」と、研究チームのメンバーは電子メールに記しています。「BadRAMは、起動時にプロセッサに故意に偽の情報を提供する不正なメモリ・モジュールであるバッドRAMのセキュリティ・リスクを初めて研究しました。私たちは、BadRAMの攻撃者が重要なリモート認証レポートを偽造し、SEVで保護されたVMに検出不可能なバックドアを挿入する方法を示しています」
AMD SEV生態系の妥協
その攻撃に関する詳細情報を提供するウェブサイト上で、研究者らは次のように記しています。
特に、データ侵害や内部脅威が蔓延する共有クラウド環境では、現代のコンピュータはDRAM内の機密データを保護するために暗号化をますます使用するようになっています。AMDのSecure Encrypted Virtualization(SEV)は、仮想マシン(VM)のメモリを暗号化し、仮想マシンマネージャやファームウェアなどの重要なインフラストラクチャを侵害する高度な攻撃者からも隔離することで、クラウドコンピューティングにおけるプライバシーと信頼を保護する最先端のテクノロジーです。
市販の DRAM モジュールに組み込まれたSPDチップを改ざんすることで、攻撃者はAMDの最新SEV-SNPバージョンを含むSEV保護を回避できることが分かりました。10ドル未満の市販の機器で、プロセッサを欺いて暗号化されたメモリへのアクセスを許可させることができます。このBadRAM攻撃の原始的な手法を基に、AMD SEVエコシステムを完全に侵害し、リモート認証レポートを偽造し、SEVで保護されたVMにバックドアを挿入します。
研究者による脆弱性報告を受け、AMDはすでに影響を受ける顧客にパッチを配布済みであると、同社の広報担当者は述べています。研究者によると、ブートアップに余分な時間がかかる可能性がある以外に、パフォーマンス上のペナルティはないといいます。BadRAMの脆弱性は、業界ではCVE-2024-21944およびAMD-SB-3015として追跡されています。
思い出の散歩道
サーバー用の最新のダイナミック・ランダム・アクセス・メモリは、通常、DIMM(Dual In-Line Memory Modules)という形で提供されています。これらの長方形のスティックの基本的な構成要素はコンデンサであり、充電されると2進法の1を表し、放電されると0を表します。コンデンサはセルにまとめられ、セルは行と列の配列にまとめられ、さらにランクとバンクに配置されます。DIMMに詰め込まれるコンデンサの数が増えるほど、より多くのデータを保存できる容量となります。サーバーには通常、並列処理が可能なチャネルにまとめられた複数のDIMMが搭載されています。
サーバーが特定のデータを保存したりアクセスしたりするには、まず、そのデータを表すビットがこの膨大な数のトランジスタのどこに保存されているかを特定する必要があります。場所は、チャンネル、ランク、バンクの行と列をマッピングするアドレスによって追跡されます。パフォーマンス上の理由から、これらの物理アドレスをDRAMアドレスビットに変換する作業(メモリコントローラに割り当てられた作業)は、1対1のマッピングではありません。むしろ、連続したアドレスは異なるチャンネル、ランク、バンクに分散されます。
サーバーがこれらの場所をマッピングする前に、まずサーバーは接続されているDIMMの数と、それらのメモリが提供する総容量を知る必要があります。この情報は、サーバーが起動するたびに、BIOSがDIMMの表面にあるSPD(Serial Presence Detect)チップに問い合わせることで提供されます。このチップは、BIOSに利用可能なメモリーに関する基本情報を提供する役割を担っています。BadRAMは、SPDチップに、その容量が実際よりも2倍あると報告させる原因となります。これは、余分なアドレス指定ビットを追加することで実現されます。
これを行うには、サーバー管理者は特別にプログラムされたRaspberry PiをSPDチップに一度だけ短時間接続するだけでよいです。

数字を使ったハッキング、1、2、3
一部のDIMMモデルでは、チップを適切にロックダウンできない場合があり、その場合はソフトウェアによる変更が可能である可能性が高いです。いずれの場合も、変更は一度だけ行えばよいです。それ以降は、SPDチップが利用可能なメモリ容量を偽装します。
次に、サーバー管理者は、新たに作成された「ゴースト・メモリ」を無視するようにオペレーティング・システムを設定します。これは、侵害されたSPDチップが報告する容量の上半分を意味しますが、実際のメモリの下半分にマッピングし続けます。Linuxでは、この設定はカーネル・コマンドライン・パラメータの「memmap」で実行できます。研究者の論文「BadRAM: Practical Memory Aliasing Attacks on Trusted Execution Environments(信頼された実行環境における実用的なメモリアイリアシング攻撃)」では、この攻撃についてさらに詳しく説明しています。
次に、BadRAMの一部として開発されたスクリプトにより、攻撃者はゴースト・メモリのビットのメモリ位置を迅速に特定することができます。これらのエイリアスにより、攻撃者はSEV-SNPがアクセス不可としているメモリ領域にアクセスすることができます。これにより、攻撃者はこれらの保護されたメモリ領域に対して読み書きを行うことができます。
通常は強化されているこのメモリー領域にアクセスできるため、攻撃者はVMの整合性を証明するSEV-SNPが作成する暗号ハッシュをコピーすることができます。また、このアクセスにより、攻撃者はバックドアが仕掛けられたSEV準拠のVMを起動することができます。通常、この悪意のあるVMは暗号ハッシュの形で警告を発します。BadRAMにより、攻撃者はこの認証失敗ハッシュを以前に収集した認証成功ハッシュに置き換えることができます。
BadRAM攻撃の主な手順は以下の通りです。
- メモリモジュールをそのサイズについて嘘をつくようにして、CPUをだまして、既存のメモリ領域に静かにマッピングされた存在しないゴースト・アドレスにアクセスさせます。
- エイリアスを見つけます。これらのアドレスは同じDRAMの場所にマッピングされます。
- CPUアクセス制御をバイパスします。エイリアスにより、攻撃者は機密データを保存している領域の読み取りや書き込みを防止するはずのメモリ保護をバイパスすることができます。
ゴーストに注意
より技術的な詳細をお求めの方には、ルカ・ヴィルケ氏とともに論文の主執筆者であるジェシー・デ・ムーレメスター氏が以下を提供しています。カジュアルな読者の方は読み飛ばしていただいて結構です。
我々の攻撃では、同じDRAMの場所に2つのアドレスが存在します。1つは元のアドレス、もう1つはエイリアスと呼んでいるものです。
SPDを修正する際には、そのサイズを2倍にします。低レベルでは、すべてのメモリ・アドレスに1ビットが追加されたことになります。この追加のビットは、当社では「ゴースト」ビットと呼んでおり、CPUによって使用されるものの、DIMMでは使用されない(無視される)アドレスビットです。この「ゴースト」ビットが0であるアドレスが本来のアドレスであり、このビットが1であるアドレスが「ゴースト」メモリです。
これは、ローンチ・ダイジェストのような保護されたデータにアクセスする方法を説明しています。ローンチ・ダイジェストは、ゴースト・ビットが0に設定されたアドレスに格納されており、このアドレスは保護されています。アクセスしようとすると、CPUによってブロックされます。しかし、ゴースト・ビットが1に設定された同じアドレスにアクセスしようとすると、CPUはそれをまったく新しいアドレスとして扱い、アクセスを許可します。DIMM側ではゴースト・ビットは無視されるため、両方のアドレス(ゴースト・ビットが0または1)は同じ物理メモリ位置を指します。
このことを説明する小さな例を挙げます。
オリジナルSPD:4ビットのアドレス:
CPU:アドレス 1101 → DIMM:アドレス 1101修正されたSPD:4ビットしかないのに5ビットを報告する:
CPU:アドレス 01101 -> DIMM:アドレス 1101
CPU:アドレス 11101 → DIMM:アドレス 1101この場合、01101は保護されたアドレス、11101はエイリアスです。CPUにとっては2つの異なるアドレスのように見えますが、同じDRAMの場所にアクセスします。
前述の通り、一部のDIMMモデルではSPDチップがロックダウンされておらず、この欠陥によりソフトウェアのみの変更が可能になる可能性が高いです。具体的には、Corsair製の2つのDDR4モデルにこの欠陥があることが研究者の調査で判明しました。
AMDの関係者は声明で次のように述べています。
AMDは、開示された脆弱性を悪用するには、攻撃者がシステムに物理的にアクセスするか、ロックされていないメモリ・モジュールを持つシステム上でオペレーティング・システムのカーネルにアクセスするか、カスタマイズされた悪意のあるBIOSをインストールする必要があると考えています。AMDは、シリアルプレゼンス検出(SPD)をロックするメモリモジュールを使用すること、および物理的なシステムのセキュリティに関するベストプラクティスに従うことを推奨します。また、AMDは、この脆弱性を緩和するためのファームウェア・アップデートを顧客にリリースしました。
研究チームのメンバーは、ルーヴェン・カトリック大学、リューベック大学、バーミンガム大学の出身です。具体的には、以下の通りです。
- ジェシー・デ・メウレメスター(ルーヴェン・カトリック大学電気工学科COSIC)
- ルカ・ヴィルケ(リューベック大学)
- デビッド・オズワルド(バーミンガム大学)
- トーマス・アイゼンバース(リューベック大学)
- イングリッド・フェルバウエデ(ルーヴェン・カトリック大学電気工学科COSIC)
- ジョ・ヴァン・ブルック(ルーヴェン・カトリック大学、コンピュータサイエンス学部、DistriNet)
研究者らは、AMDのより大きなライバル企業が販売する競合マイクロプロセッサであるIntel SGXをBadRAMと比較し、SEV-SNPと同等の整合性保証を可能にすることを確認しました。SGXの旧バージョンでは、保護された領域の読み取りは可能でしたが、書き込みはできませんでした。しかし、現在のIntel Scalable SGXとIntel TDXプロセッサでは、読み取りも書き込みもできません。同等のArmプロセッサはテスト用に利用できなかったため、脆弱性があるかどうかは不明です。
普遍性がないにもかかわらず、研究者らは、BadRAMの脆弱性を支える設計上の欠陥が他のシステムにも入り込む可能性があることを警告し、AMDが現在導入している緩和策を常に使用すべきであると警告しました。
「我々の BadRAMプリミティブは汎用的であるため、信頼できない DRAM に対するシステムを設計する際には、このような対策を考慮すべきであると我々は主張します」と、研究者は論文に記しています。「高度なハードウェア・レベルの攻撃は、現在使用されている対策を回避できる可能性があるが、影響力のある攻撃者モデルで実行できるかどうかを判断するには、さらなる研究が必要です」



コメント