チップのセキュリティホールからネットワーク経由で(ゆっくりと)秘密を盗む方法:NetSpectreの登場

Table of Contents

チップのセキュリティホールからネットワーク経由で(ゆっくりと)秘密を盗む方法:NetSpectreの登場

コンピューター セキュリティの研究者は、ネットワーク接続を介して最新のプロセッサ チップの投機的実行の設計上の欠陥を悪用する方法を考案しました。これはかなり深刻な可能性のように聞こえますが、実際はそれほど深刻ではないかもしれません。

これまで、Spectre 攻撃では、脆弱なマシン上で悪意のあるコードを実行し、コンピューター上の他のソフトウェアのメモリからパスワード、キー、その他の秘密を潜在的に抽出する必要がありました。

さて、ここでNetSpectreが登場します。これは、ネットワーク上の他のデバイスから個人情報を抜き出す可能性のある技術です。標的の機器にエクスプロイトコードをインストールする必要はなく、抽出速度は比較的遅いものの、潜在的に数十億台のコンピューター、ガジェット、機器が何らかのリスクにさらされている可能性があります。

— The Register (@TheRegister) 2018年7月26日

理論上は、悪用可能なコードスニペットを実行しているサービスへのネットワーク接続を確立するだけで、アプリケーションメモリの内容をリモートから非常にゆっくりと判別できるはずです。これには正確なタイミングと継続的な測定が必要となるため、インターネットなどのノイズの多いネットワーク環境であれば、ある程度は悪用を阻止できるでしょう。

これが第一段階です。次のステップは、プログラムのメモリ内に散らばっている一時変数やその他の重要でないデータを取得するのではなく、興味深いデータを取り出すことです。これは決して簡単なステップではありません。

「Spectre攻撃はローカルでのコード実行を必要とせず、リモートからも実行可能であることを実証しました」と、NetSpectre研究者の一人であるマイケル・シュワルツ氏はThe Registerへのメールで述べています。「さらに、新たな隠れチャネルを用いることで、Spectreが値を漏洩させるのに必ずしもキャッシュが必要ではないことも示しました。」

「NetSpectre: ネットワーク経由で任意のメモリを読み取る」と題された論文で説明されている大きな問題は、このサイドチャネル攻撃では 1 時間あたり 15 ビット、または AVX ベースの隠れチャネル経由では 1 時間あたり 60 ビットしか漏洩しないという点です。つまり、暗号化キーや認証トークンなどの機密情報を見つけて収集するには数日かかる可能性があります。

高価値ターゲット

シュワルツ氏は、このデータ漏洩は人々が心配すべきことだと考えているものの、漏洩が行われる速度が制限要因であることを認めている。

「幸いなことに、攻撃速度は非常に限られているため、この攻撃は主に高価値ターゲットへの標的型攻撃において興味深いものとなっています」と彼は述べた。「論文で示した新しいガジェットの亜種を含め、Spectreに対するパッチをシステムに完全に適用すれば、攻撃は阻止できるはずです。しかし、Spectreガジェットがどのような外観になるのかはまだ解明の初期段階にあるため、これは簡単に解決できる問題ではありません。」

Spectre攻撃は、最新のCPUの投機的実行エンジンで使用されている分岐予測メカニズムを操作し、標的プロセスにメモリアクセスを強制することで、特権情報を漏洩させます。今日のプロセッサは、ソフトウェアを高速に実行するために投機的実行を利用しており、プログラムの流れがどこへ進むかを予測し、先を見越してコードとデータを準備しています。この予測的実行を操作し、その影響を観察することで、通常は見えないメモリの内容を把握することが可能です。

やったー!Meltdown CPUの修正プログラムがリリースされました。Spectreの脆弱性は今後何年もテクノロジー業界を悩ませ続けるでしょう。

続きを読む

リモートSpectre攻撃を実行するには、標的のデバイスに、各反復で境界チェックを伴うループ内で配列の読み取りなどの操作を実行するコードが含まれている必要があります。このエクスプロイトは、プロセッサのマイクロアーキテクチャの設計上の決定を悪用して投機的実行を誘発し、その結果としてメモリの内容を読み出します。オーストリア、グラーツ工科大学のMichael Schwarz、Daniel Gruss、Martin Schwarzl、Moritz Lipp、Stefan Mangardが執筆した論文では、これらのコードフラグメントを「Spectreガジェット」と呼んでいます。

「ローカルSpectre攻撃と同様に、私たちのリモート攻撃では、標的のコード内にSpectreガジェットが存在する必要があります」と論文は説明しています。「公開されたネットワークインターフェースまたはAPIに必要なSpectreガジェットを含むシステムは、私たちの汎用的なリモートSpectre攻撃によって攻撃可能であり、ネットワーク経由で任意のメモリを読み取ることができることを示しています。攻撃者は、細工した一連のリクエストを被害者に送信し、応答時間を計測することで、被害者のメモリから秘密の値を漏洩させます。」

この攻撃では、常に境界内にある値を持つ複数のネットワーク パケットをターゲットに送信し、比較が正しいと予測するように分岐予測機能をトレーニングします。

(ビット)ストリームを交差させないでください

たとえば、脆弱なデバイス上で次のコードが実行されているとします。

x < bitstream_length の場合、bitstream[x] の場合、flag = true;

…悪意のある人物は、このbitstream[x]アクセスを利用してソフトウェアのプライベートメモリからビットを抽出しようとする可能性があります。「攻撃者は、xが境界外となるパケットを送信します。これにより、ビットストリーム[x]はターゲットのメモリ内の秘密ビットとなります」と論文は説明しています。

次に、分岐予測子は境界チェックが真であると想定し、メモリ アクセスが投機的に実行されます。

今年初めに研究者から調査結果を知らされたIntelは、それほど警戒していないようだ。基本的に、過去のSpectre攻撃の影響を軽減するためにコードとアプリケーションを更新していれば、NetSpectreの脅威から安全であるはずだ。

「NetSpectreは境界チェックバイパス(CVE-2017-5753)の応用であり、コード検査とソフトウェアの修正を通じて、適切な場所に投機阻止バリアを設置することで、同様の方法で軽減されます」と広報担当者はThe Registerに電子メールで述べた。

インテルは、ホワイトペーパー「境界チェックバイパスの潜在的な脆弱性の分析」を更新し、調査結果に関連する情報を組み込んだと述べ、研究を報告してくれた研究者らに感謝の意を表した。

レッドハットは研究者らと協力し、自社製品への影響があれば、金曜日のブログ投稿で詳細を発表する予定だと述べた。「ユーザー空間におけるSpectreガジェット攻撃は確認されていないが、ネットワーク経由でリッスンするすべてのデーモンとスタックの残りの部分を積極的に監査している」と、レッドハットのチーフArmアーキテクト兼コンピュータマイクロアーキテクチャリーダーであるジョン・マスターズ氏はTwitterで述べた。

これまでのところ、他の Spectre および Meltdown の亜種およびサブ亜種と同様に、私たちが知る限り、これらの脆弱性を悪用するマルウェアは実際に存在していません。®

Discover More