CPU

複数世代の Intel CPU に影響を与える新しいサイドチャネル攻撃が発見され、EFLAGS レジスタを介してデータが漏洩する可能性があります。

新しい攻撃は、清華大学、メリーランド大学、および中国教育省が運営するコンピューター ラボ (BUPT) の研究者によって発見されたもので、他のほとんどのサイドチャネル攻撃とは異なります。

他の多くのサイドチャネル攻撃のようにキャッシュ システムに依存する代わりに、この新しい攻撃は一時的な実行の欠陥を利用して、タイミング分析を通じてユーザー メモリ空間から機密データを抽出できるようにします。

この攻撃は、2018 年に発見された重大なセキュリティ上の欠陥である Meltdown へのサイド チャネルとして機能し、 多くの x86 ベースのマイクロプロセッサに影響を与えています

Meltdown は、「投機的実行」と呼ばれるパフォーマンス最適化機能を悪用して、攻撃者がメモリ分離メカニズムをバイパスし、パスワード、暗号化キー、およびその他のプライベート データなどのカーネル メモリに保存されているシークレットにアクセスできるようにします。

メルトダウンは、ソフトウェアのパッチ、マイクロコードの更新、およびハードウェアの再設計によって大幅に軽減されています。ただし、問題を 100% 解決するソリューションはなく、最新の攻撃方法は、ハードウェア、ソフトウェア、およびパッチの構成によっては、完全にパッチが適用されたシステムでも機能する可能性があります。

一時実行タイミング攻撃

Arxiv.org で公開されたテクニカル ペーパーに示されている新しいサイドチャネル攻撃は、一時的な実行での EFLAGS レジスタの変更の欠陥を説明しており、JCC (条件コードのジャンプ) 命令のタイミングに影響を与えます。

EFLAGS レジスタは、プロセッサの状態に関するさまざまなフラグを保持する CPU レジスタであり、JCC 命令は、EFLAGS レジスタの内容に基づいて条件分岐を実行できる CPU 命令です。

攻撃は 2 つのフェーズで実行されます。1 つ目は、一時的な実行をトリガーし、EFLAGS レジスタを介して機密データをエンコードすることです。2 つ目は、データをデコードするための KCC 命令の実行時間を測定することです。

攻撃の概要
攻撃の概要(arxiv.org)

実験データは、攻撃が Intel i7-6700 および Intel i7-7700 で 100% のデータ取得 (リーク) を達成し、新しい Intel i9-10980XE CPU に対してある程度の成功を収めたことを示しました。この実験は、Linux カーネル バージョン 5.15.0 を搭載した Ubuntu 22.04 jammy で実施されました。

一時実行攻撃のタイミングを計る疑似コード
一時実行攻撃のタイミングを計る疑似コード(arxiv.org)

ただし、研究者は、このタイミング攻撃はキャッシュ状態のサイドチャネル方法ほど信頼性が高くなく、最近のチップでより良い結果を得るには、攻撃を何千回も繰り返す必要があると指摘しています。

「私たちの実験では、Jcc 命令の実行時間に対する EFLAGS レジスタの影響は、キャッシュ状態ほど永続的ではないことがわかりました」と、実験データの評価に関する部分を読みます。

「トランジェント実行後の約 6 ~ 9 サイクルの間、Jcc 実行時間はサイドチャネルを構築しようとはしません。経験的に、精度を高めるには、攻撃を何千回も繰り返す必要があります。」

研究者は、攻撃の根本的な原因はとらえどころのないままであることを認めており、Intel CPU の実行ユニットにバッファがあり、実行を取り消す必要がある場合に元に戻すのに時間が必要であるという仮説を立てています。バッファのターゲット。

ただし、彼らは、JCC命令の実装を変更して敵対的な実行をあらゆる条件下で測定できないようにしたり、一時的な実行後にEFLAGSを書き直してJCC命令への影響を軽減したりするなど、いくつかの重要な緩和策を提案しています。