掲載日:2020/11/05

Bromium共同創設者Ian Pratt、SpectreとMeltdownを語る [ビデオ、第1部]

※ 本ブログは、2018年1月8日にBromium BlogにポストされたIan Pratt, Bromium Co-Founder, Speaks on Spectre and Meltdown [Video, Part 1] の日本語抄訳です。

 

  • Intelのチップの脆弱性に起因してSpectreとMeltdownと呼ばれる、情報漏えいに繋がる脆弱性が引き起こされました。
  • 双方とも、一般ユーザー空間で実行された攻撃さえ、他のプロセスに属するデータの参照を可能にし、さらに特権がある場合はカーネル自体を含むプロセスの読み込みを可能にしてしまいます。
  • MeltdownはIntelのCPUにしか見られませんが、Spectreの脆弱性は、IntelやAMDをはじめとした大半の最新CPUや、ARMなどの異なるアーキテクチャでも存在します。

 

弊社創業者のIan Prattに、Spectre、Meltdown、そしてこれが業界やBromiumのお客様にとってどのような意味を持つのか、話を聞きました。また、このビデオに付随する以下のメモも作成しています。これは2部構成のシリーズの第1部です。(第2部を参照)

 

SpectreとMeltdown、これらがコンピューティングにとって意味すること

この2つの脆弱性は、世界中の多くの団体、特にGoogleとグラーツ工科大学(Graz University of Tech)によるセキュリティ研究によって発見されました。彼らは20年前にPentium ProでCPUに導入された、マイクロアーキテクチャーの機能(投機的実行と分岐予測子)のセキュリティの影響調査を独自に開始し、パフォーマンス向上を追及し、洗練され続けていました。

情報漏えいに繋がる脆弱性の幾つかは、攻撃者が漏洩したものの多くを操作できなかったり、わずかなバイト数しか漏れないため、実際には大きな問題にはなりません。一方、SpectreとMeltdownは、攻撃側がメモリ領域を自由に読むには努力を要するとはいえ、潜在的にはメモリのどの領域も好きに読ませてしまう可能性があるため深刻です。

攻撃者はメモリ上のデータの変更や、実行状態を変更することはできません (したがって、権限を直接的に昇格させたり、システムを感染させることはできません)が、カーネルメモリを読むことで、興味深い秘密を取得できるかもしれ ません。たとえば、管理者アカウントのパスワードハッシュを知ることができれば、それを悪用して管理者としてログインし、マルウェアをシステムに好きなようにインス トールすることもできます。

 

SpectreとMeltdownの除去には、特にSpectreには多少の努力が必要

(この問題について)これまでに示されているデモンストレーションは、少々故意的な意図の上での証明であり、実際には、攻撃者がターゲットシステムに関する 多くの詳細な情報を習得する必要があるため、現実にはこうした攻撃の実行は、確かに困難になるでしょう。 もし、あなたが重要な顧客の機微な処理を実行している数十万の表面上同じシステムを持つ、大規模なクラウドプロバイダで あったとしたら、SpecterとMeltdownについて、非常に真剣に受け止める必要があります。誰かがあなたのシステムについて、十分な情報を得た上で、攻撃を仕掛けようと努力しているかもしれません。

典型的な業務用途のサーバーの場合、信頼できないコードの実行を許可するか否かを自問する必要があります。(Terminal Serverなど)これを必要とするアプリケーションがいくつかはありますが、大抵の場合はサーバー上で実行されるコードは制御されています。 このようなサーバーの場合、心配する必要はありません。

一方、企業組織内のデスクトップは通常、信頼できないユーザーがおり、Webページやドキュメントなど、信頼できない コードを実行し、危険にさらす事になりますが、SpectreとMeltdownに関しては、CISOの懸念事項リストの、特に上位にする必要はありません。 過去数ヶ月間には、SpectreやMeltdownよりも強力で、悪意の攻撃者により使用される可能性が高い、他の脆弱性も報告されています。 いつの日か、攻撃者が特権昇格に使用するSpectreまたはMeltdownを目にするかもしれませんが、その日が早々に来たら、私自身はむしろ驚くと思います。もちろん、セキュリティ研究者による、危険性に関してよりよい説明を耳にする事もあるでしょうが、それが攻撃者によって使用されているか否かは別の問題です。

 

Spectre と Meltdownについて、CPUやOSベンダーがしていること

CPUのバグはまれです。CPUは非常に複雑なハードウェアですが、ベンダーはセキュリティ上の脆弱性を回避し、正当な用途に向けての大量のテストを行う、素晴らしい仕事をしてい ます。

過去何年にもわたり、いくつかのバグが発見されています。CPUベンダーがファームウェアやOSのアップデートの一部と してインストールするマイクロコードアップデートを発行し、問題を修正する場合があります。他のケースでは、CPUベンダーは、OSやハイパーバイザーベンダーの助けを借りて問題の回避策を考え出す必要があります。 最悪のケースのシナリオは、CPUベンダーがリコールを実施し、全てのCPUを交換する必要がありますが、それは24 年前の悪名高いPentium FDIVバグ以降では起きたことはありません。

通常、CPUベンダーとOSベンダーは、問題を緩和するソフトウェアまたはマイクロコードによる対策を策定するとができます。 パフォーマンスの損失が見られる場合もあれば、見られない場合もあります。SpectreとMeltdownの場合、問題を緩和し、OSを安全にするために必要なソフトウェアとマイクロコードの回避策の、前例のない複雑な組み合わせが存在します。

マイクロソフトではこれまでこのような事をしたことがありません。つまり、Meltdownを回避するために仮想メモリシステムの動作方法に大きな変更を加えたのです。Spectreを軽減するためのカーネルへの変更は、小さいながらも広 範囲に及んでいます。 マイクロソフトは既にWindows 7、8、および10用のパッチの提供を開始しましたが、Intelや他のシステムベンダーは、新しいマイクロコードをインストールするためのファームウェ アアップデートはまだ準備されていません。

Intelに固有のMeltdown軽減パッチはパフォーマンスに影響します。この影響は、CPUの新しさと、PCID と呼ばれるものがサポートされているかどうかに依存します。PCIDは、TLBエントリフラッシュの発生の一部を回避し、オーバーヘッドを削減するものです。 パフォーマンスの影響は、アプリケーションがシステムコールを行う頻度に大きくします。ユーザー空間ですべての時間を費やすアプリケーションは、事実上 オーバーヘッドは見られません(例:ビットコインマイニング)。 一方、データベースのようなサーバーアプリケーションでは、IOとシステムコールが大量に発生するため数十パーセントのオーバーヘッドが発生する可能性があります。しかし、信頼されていないコードが実行されている可能性の低さから、データベースサーバがMeltdownの緩和を本当に必要とするか否かは明らかではありません。

 

第2部