Microsoft Azure がエラー訂正コード対応メモリの使用で信頼性とセキュリティを強化
このポストは、3 月 16 日に投稿された Microsoft Azure uses Error-Correcting Code memory for enhanced reliability and security の翻訳です。
メモリ デバイスでは、電気的ノイズや磁気的ノイズ、バックグラウンド放射、あるいは製造工程での不具合やその他さまざまな原因によってエラーが誘発されることがあります。メモリで発生するエラーのうち一般的なものとして、ビット情報が 0 から 1、または 1 から 0 に反転する「フリッピング」があります。メモリ エラーが検出、訂正されないまま放置されると、コードやデータの破損、およびシステムやアプリケーションのクラッシュなどの信頼性やセキュリティに関する問題につながることがあるほか、セキュリティ要件が厳しいコードやデータ、ポリシーなどで意図しない変更が発生し、システムのセキュリティが低下するおそれもあります。Microsoft Azure では、自社システムをデプロイしている施設全体でエラー訂正コード (ECC) 対応メモリを採用することで、こうした問題を防止しています。
ECC 対応メモリとは、シングルビット エラーや特定の状況のマルチビット エラーを含むさまざまな種類のメモリ エラーを検出して訂正するテクノロジです。この ECC 対応メモリを使用すると、アプリケーションやサービスに透過的な形でエラーが訂正されるため、そのアプリケーションはメモリに書き込まれたときの元の状態のデータを必ず読み取ることができます。Microsoft Azure のホスト OS は、エラーを訂正できなかった場合は即座に再起動して詳細なイベントのログを記録するように構成されているため、アプリケーションがメモリ破損のリスクにさらされることはありません。ECC 対応メモリは ECC 非対応メモリよりも高価ですが、マイクロソフトは Azure でお客様のデータをホストする際にエンタープライズ クラスのサポートを提供するうえで、このテクノロジを採用することが適切であると考えています。
マイクロソフトはデータセンターにデプロイされている Azure の運用環境サーバー全体で、メモリ処理における Rowhammer 問題と呼ばれる機械的な寸法による問題について広範なテストを行いました。Rowhammer とはメモリで発生するハードウェア的な問題で、業界内でデプロイされている DRAM メモリ モジュールのサブセットに影響が及ぶ場合があります。つまり、特定のパターンでメモリを読み込むことでこの問題を発生させ、メモリの特権領域で「ビットフリッピング」によって書き込みデータに意図しない変更を発生させる攻撃が行われる可能性があります。
Rowhammer 攻撃を行う場合、攻撃者は意図したコードを攻撃対象のシステムで実行できるようにする必要があります。Office365 などのほとんどのクラウド サービスでは、サービスをホストしているシステムでユーザーが任意のソフトウェアを実行することは許可されていないため、攻撃者が直接 Rowhammer 攻撃を行うことはできません。しかし、Microsoft Azure では、IaaS プラットフォームの仮想マシンなどでユーザーが任意のソフトウェアを実行することが許可されており、悪意のあるソフトウェアが実行される可能性もあります。
数か月間にわたるテストの後、マイクロソフトでは運用環境のサーバー、およびお客様の仮想マシンやデータに対する Rowhammer による影響を防止するための対策を導入することを決定しました。
Microsoft Azure では、Rowhammer によるエラーの誘起を検出して訂正するためにシステムに ECC 対応メモリをデプロイし、テストを行って検証しました。さらに防御効果を詳細に測定するために、Microsoft Azure では監視機能とアラート機能をデプロイして、訂正されたメモリ エラー、メモリ エラーを訂正できなかった条件、および Rowhammer 攻撃の痕跡を検出しています。
ECC 対応メモリの詳細については、こちらのページ (英語) を参照してください。
Rowhammer の詳細については、こちらのドキュメント (英語) を参照してください。