アムステルダム自由大学の学術研究者らは、トランジェント実行CPU脆弱性が現実世界のシナリオで実用的に悪用され、パブリッククラウドサービス上で稼働するVMからメモリを漏洩させることができることを実証しました。
この研究は、L1TF(L1 Terminal Fault、Foreshadowとしても知られる)、2018年1月に報告されたIntelプロセッサのバグ、およびhalf-Spectre(新世代CPUでは直接的に秘密データを漏洩できないため悪用不可能と考えられていたガジェット)が、組み合わせて使用されることでパブリッククラウドからデータを漏洩させることができることを示しています。
先月、研究者らはL1TF Reloaded(PDF)という、L1TFとhalf-Spectreを組み合わせて一般的に導入されているソフトウェア緩和策を回避し、Google Cloud上のハイパーバイザーや共同テナントから機密データを漏洩させる脆弱性を報告しました。
「ホストとゲストを通じたポインターチェイシングに基づく新しい手法を用いて、ソフトウェアで2次元ページテーブルウォークを手動で行うために必要なすべての情報を漏洩させます。これにより、任意の仮想ゲストアドレスをホスト物理アドレスに変換でき、L1TFを介して被害者のメモリ内の任意のバイトを漏洩させることが可能になります」と研究者らは述べています。
L1TFは、悪名高いSpectreやMeltdown脆弱性が公表された2018年の同じ日に公開され、同様の結果をもたらします。つまり、攻撃者はCPUが命令を実行する際に誤ってアクセスする可能性のある秘密データを取得でき、それがメモリにキャッシュされます。
これらの脆弱性の現実世界での影響は最小限にとどまっていますが、それは攻撃者がCPUで関連命令をトリガーするためのリモートコード実行能力を必要とするためです。しかし、L1TF Reloadedは、パブリッククラウドプロバイダーに対してこの攻撃が実用的であることを示しています。クラウドは本質的に顧客に「サービスとしてのリモートコード実行」を提供しているからだと研究者らは主張しています。
クラウドでは、顧客の仮想化システムが同じハードウェア上で分離されて稼働しており、信頼できないものと見なされるべきであり、Spectreのようなトランジェント実行脆弱性に対してあらゆる合理的な緩和策が必要です。
研究者らはGoogle Cloudの専用テナントノードでテストを行い、「ホストやゲストに関する詳細な知識がなくても、ノイズの多い環境下で被害者VMのNginxサーバーのTLSキーを平均14.2時間で漏洩させることができた」と実証しました。
研究者らの攻撃は、LinuxのKVMサブシステム内のhalf-Spectreガジェットを標的とし、RAMからL1キャッシュにデータを投機的にロードし、その後L1TFを悪用してL1キャッシュから秘密データを漏洩させました。
本質的に、悪意のあるVMからホストOSのデータを漏洩させて同じマシン上で稼働している他のVMを特定し、ゲストOSから被害者VMで稼働しているプロセスを漏洩させ、最終的にNginxサーバーの秘密TLSキーを漏洩させることができました。
また、研究者らはAWSクラウドに対しても攻撃を行いましたが、こちらでは多層防御により機密性の低いホストデータのみを漏洩できました。
Googleは、研究者らにテスト用の専用テナントノードを提供し、Google Cloud VRPの最高額となる$151,515の報奨金を授与しました。同社は、このレベルの報奨金を支払うのは今回が初めてだと述べています。
「我々の攻撃により、トランジェント実行脆弱性を個別に緩和しても、複数の脆弱性を組み合わせて既存の防御策を回避し、強力な攻撃手法を生み出せる場合には効果がないことを示しました。XPFOやプロセスローカルメモリ(AWSが示したように)、アドレス空間分離や秘密情報を持たないハイパーバイザーなどの提案された緩和策があれば、この攻撃は防げたでしょう」と研究者らは述べています。
関連記事: DDR5に対するRowhammer攻撃の実証
関連記事: VMScape: 研究者が新たなSpectre攻撃でクラウドの分離を突破