GoogleCloudチームの開発者が脆弱性を特定しました (CVE-2019-9836) AMD SEVテクノロジーの実装において(安全な暗号化された仮想化)、このテクノロジーで保護されたデータを危険にさらす可能性があります。
ハードウェアレベルでのAMDSEVeは、仮想マシンの透過的なメモリ暗号化を提供します。 ここでは、現在のゲストシステムのみが復号化されたデータにアクセスでき、残りの仮想マシンとハイパーバイザーは、このメモリにアクセスしたときに暗号化されたデータセットを取得します。
識別された問題により、PDH秘密鍵の内容を完全に復元できます これは、メインのオペレーティングシステムでは使用できない個々の保護されたPSP(AMDセキュリティプロセッサ)プロセッサのレベルで処理されます。
PDHキーを持つことにより、攻撃者はセッションキーとシークレットシーケンスを復元できます 仮想マシンを作成し、暗号化されたデータにアクセスするときに指定します。
この脆弱性は、楕円曲線の実装の欠陥によるものです (ECC)暗号化に使用され、攻撃が曲線のパラメーターを復元できるようにします。
保護された仮想マシンの開始コマンドの実行中に、攻撃者はNISTが推奨するパラメーターと一致しない曲線パラメーターを送信する可能性があります。これにより、次のデータを使用した乗算操作で低次のポイント値が使用されることになります。秘密鍵。
SEVのEllipticalCurve(ECC)の実装は、無効なカーブ攻撃に対して脆弱であることが判明しました。 boot startコマンドで、攻撃者は送信できます
小次数ECCポイントは公式のNIST曲線にはなく、SEVファームウェアに小次数ポイントにスカラーファームウェアのプライベートDHを乗算させます。
十分なモジュラー廃棄物を収集することにより、攻撃者は完全なPDH秘密鍵を回復できます。 PDHを使用すると、攻撃者はセッションキーを回復し、仮想マシンのシークレットを起動できます。 これにより、SEVが提供する機密性の保証が破られます。
ECDHプロトコルのセキュリティは、生成された開始点の順序に直接依存します その離散対数は非常に複雑なタスクです。
AMD SEV環境を初期化する手順のXNUMXつでは、ユーザーから取得したパラメーターが秘密鍵を使用した計算で使用されます。
本質的には、XNUMXつのポイントを乗算する操作が実行され、そのうちのXNUMXつは秘密鍵に対応します。
XNUMX番目のポイントが下位の素数を参照している場合、攻撃者はすべての可能な値をリストすることにより、最初のポイントのパラメーター(指数化モジュロ操作で使用されるモジュロのビット)を決定できます。 選択した素数のフラグメントを組み合わせて、残基に関する中国の定理を使用して秘密鍵を決定できます。
無効なカーブアタックとは、ECDHポイントの乗算が異なるカーブ(異なるパラメーター(a、b))で実行される場合です。 これは、パラメータ「b」が使用されていないため、短いWeierstrassのポイントの合計関数で可能になります。
この曲線では、ポイントのプライマリオーダーは小さくなっています。 小さな順序のポイントに対して可能なすべての値を試すことにより、攻撃者はプライベートスカラービットを取得できます(順序を変調します)。
バージョン0.17ビルド11までのSEVファームウェアを使用するAMDEPYCサーバープラットフォームが問題です。
AMDはすでにファームウェアアップデートをリリースしています、NIST曲線と一致しないポイントの使用にロックを追加しました。
同時に、以前に生成されたPDHキーの証明書は引き続き有効であるため、攻撃者は、脆弱性から保護されている環境から問題の対象となる環境への仮想マシンの移行に対して攻撃を実行できます。
以前の脆弱なバージョンのファームウェアバージョンでロールバック攻撃を実行する可能性についても言及されていますが、この機能はまだ確認されていません。