1月に公開された脆弱性MeltdownおよびSpectreにより、2018年の幕開けは暗いものとなりました。これは、デスクトップ、ラップトップ、モバイルデバイスからクラウドプロバイダのインフラストラクチャに至るまで、あらゆるものに影響を与えます。この欠陥は、ほぼすべての最新マイクロプロセッサに存在し、投機的実行と呼ばれる機能を攻撃者が悪用して特権メモリにアクセスする可能性があります。

投機的実行

投機的実行とは、マイクロプロセッサが複数の命令分岐を同時に操作することによってパフォーマンスを向上させる技術です。このために、マイクロプロセッサは、どの分岐を実行する可能性が最も高いかを予測し、その分岐に達する前にその分岐の実行を開始します。この予測が正しくない場合、マイクロプロセッサは、投機的に実行された命令をソフトウェアに透過的な方法でロールバックするように設計されています。

MeltdownとSpectreは、この機能を悪用して、権限の低いプロセスから権限の高いメモリにアクセスします。2つの脆弱性の相違点は、投機的実行のどのコンポーネントが悪用されるか、および異なる実装にどのように適用されるかにあります。GoogleのProject Zeroブログで問題の詳細が説明されていますが、ここではそれらの仕組みの概要を簡単に説明します。

Meltdown

Meltdownの亜種(GoogleのProject Zeroブログで議論されているVariant 3)は、ユーザースペースの攻撃者プログラムが権限の高いカーネルメモリーを読み取ることを可能にします。これは、投機的に命令を実行する際の、メモリーアクセスと権限チェックとの競合状態を悪用します。この状態は、権限チェックが実行されている間に、権限のないアドレスがマイクロプロセッサキャッシュへ一時的に投機的にロードされると発生します。この攻撃はさらに複雑化しますが、それについてはMeltdownホワイトペーパーで詳しく説明されています。

Spectre

Spectreの亜種(GoogleのProject Zeroブログで議論されているVariant 1およびVariant 2)は、攻撃者が制御するプロセスが別のプロセスに属する任意のメモリーを読み取ることを可能にします。この別のプロセスはカーネル自体かもしれませんが、Spectreで鍵となるのは、標的プロセスに合わせた特定の攻撃が必要だということです。その動作方法は、最初に攻撃者プロセスが分枝予測(ブランチプレディクター)を訓練して、特定の分枝パスが取られるようにします。次いで、攻撃者プロセスは標的プロセスの実行をトリガーとし、実行に要する時間を計測します。この時間に基づいて、攻撃者プロセスは、訓練された特定の予測が標的プロセスによって実行されたかどうかを判断できます。この攻撃はさらに複雑であり、Spectreホワイトペーパーにて詳細が確認できます。

影響を受けるマイクロプロセッサ

Meltdownはインプリメンテーション固有の脆弱性で、Intelのマイクロプロセッサに影響することが知られています。幸い、Meltdownはマイクロコードの更新を介したパッチで対応可能です。これらのマイクロコードの更新は、BIOSとオペレーティングシステムの両方のパッチとして配布されています。一方、Spectreは、分岐予測が一般にどのように機能するかに関する脆弱性であり、この投機的実行機能を備えたすべてのマイクロプロセッサに影響を与える可能性があります。Spectreについていえば、マイクロコードでこの脆弱性を修正する方法はありません。ただし、Spectreクラスのほとんどの脆弱性は、オペレーティングシステムやプログラムのソフトウェア更新によって軽減できます。

影響を受けるシステムの特定

オペレーティングシステムのベンダーは、定期的なパッチのリリースサイクルを断念して、この問題に対処するためのオペレーティングシステムのパッチを公開しています。Tenable.io、SecurityCenterおよびNessusは、新しくリリースされたパッチを探して、影響を受けるシステムを特定できます。Spectre/Meltdown脆弱性のために作成された各プラグインには、以下のCVEの少なくともひとつが表示されます。

  • CVE-2017-5753
    投機的実行と分岐予測を利用するマイクロプロセッサを搭載したシステムでは、サイドチャネル分析を介して、ローカルユーザーアクセス権限を持つ攻撃者に情報を不正に開示する可能性があります。
  • CVE-2017-5715
    投機的実行と間接的分岐予測を利用するマイクロプロセッサを搭載したシステムでは、サイドチャネル分析を介して、ローカルユーザーアクセス権限を持つ攻撃者に情報を不正に開示する可能性があります。
  • CVE-2017-5754
    投機的実行と間接的分岐予測を利用するマイクロプロセッサを搭載したシステムでは、データキャッシュのサイドチャネル分析を介して、ローカルユーザーアクセス権限を持つ攻撃者に情報を不正に開示する可能性があります。

  • Tenable.ioを使用して影響を受けるシステムを特定するには、ワークベンチを開き、高度な検索を使用して、次のようにCVEフィルタ(CVE-2017-5753,CVE-2017-5715,CVE-2017-5754)を適用します。このフィルタの例では、各CVEをコンマで区切ってフィールドに入力しています。
    alt

    続きは、Tenable Blogよりご覧ください。(別サイトへ移動します)

    続きを読む


    本コラムは、Tenable Blogに掲載された記事を転載したものです

[PR]提供:Tenable Network Security Japan