Tenable ブログ
ブログ通知を受信する2018年最初の重大なセキュリティ問題 脆弱性Spectre/Meltdown
この記事は、2018年1月12日に更新され、追加の技術的詳細と補足リンクが加えられました。
最近公開された脆弱性MeltdownおよびSpectreにより、2018年の幕開けは暗いものとなりました。この攻撃は、デスクトップ、ラップトップ、モバイルデバイスからクラウドプロバイダのインフラストラクチャに至るまで、あらゆるものに影響を与えます。この欠陥は、ほぼすべての最新マイクロプロセッサに存在し、投機的実行と呼ばれる機能を攻撃者が悪用して特権メモリにアクセスする可能性があります。
投機的実行
投機的実行とは、マイクロプロセッサが複数の命令分岐を同時に操作することによってパフォーマンスを向上させる技術です。このために、マイクロプロセッサは、どの分岐を実行する可能性が最も高いかを予測し、その分岐に達する前にその分岐の実行を開始します。この予測が正しくない場合、マイクロプロセッサは、投機的に実行された命令をソフトウェアに透過的な方法でロールバックするように設計されています。
MeltdownとSpectreは、この機能を悪用して、権限の低いプロセスから権限の高いメモリにアクセスします。相違点は、投機的実行のどのコンポーネントが悪用されるか、および異なる実装にどのように適用されるかにあります。 GoogleのProject Zeroブログで問題の詳細が説明されていますが、ここではそれらの仕組みの概要を簡単に説明します。
Meltdown
Meltdownの亜種(GPZブログで議論されている#3)は、ユーザースペースの攻撃者プログラムが権限の高いカーネルメモリーを読み取ることを可能にします。これは、投機的に命令を実行する際の、メモリーアクセスと権限チェックとの競合状態を悪用します。この状態は、権限チェックが実行されている間に、権限のないアドレスがマイクロプロセッサキャッシュへ一時的に投機的にロードされると発生します。この攻撃はさらに複雑化しますが、Meltdownホワイトペーパーで詳しく説明されています。
Spectre
Spectreの亜種(GPZブログで議論されている#1および#2)は、攻撃者が制御するプロセスが別のプロセスに属する任意のメモリーを読み取ることを可能にします。この別のプロセスはカーネル自体かもしれませんが、Spectreで鍵となるのは、標的プロセスに合わせた特定の攻撃が必要だということです。その動作方法は、最初に攻撃者プロセスが分枝予測(ブランチプレディクター)を訓練して、特定の分枝パスが取られるようにします。次いで、攻撃者プロセスは標的プロセスの実行をトリガーし、実行に要する時間を計測します。この時間に基づいて、攻撃者プロセスは、訓練された特定の予測が標的プロセスによって実行されたかどうかを判断できます繰り返しになりますが、この攻撃はさらに複雑になり、 Spectreホワイトペーパーで詳しく説明されています。
影響を受けるマイクロプロセッサ
Meltdownはインプリメンテーション固有の脆弱性で、Intelのマイクロプロセッサに影響することが知られています。幸い、Meltdownはマイクロコードの更新を介したパッチで対応可能です。これらのマイクロコードの更新は、BIOSとオペレーティングシステムの両方のパッチとして配布されています。一方、Spectreは、分岐予測が一般にどのように機能するかに関する脆弱性であり、この投機的実行機能を備えたすべてのマイクロプロセッサに影響を与える可能性があります。Spectreについて言えば、マイクロコードでこの脆弱性を修正する方法はありません。ただし、Spectreクラスのほとんどの脆弱性は、オペレーティングシステムやプログラムのソフトウェア更新によって軽減できます。
影響を受けているシステムの特定
オペレーティングシステムのベンダーは、定期的なパッチのリリースサイクルを断念して、この問題に対処するためのオペレーティングシステムのパッチを公開しています。Tenable.io、SecurityCenterおよびNessusは、新しくリリースされたパッチを探して、影響を受けるシステムを特定できます。Spectre/Meltdown脆弱性のために作成された各プラグインには、以下のCVEの少なくとも1つが表示されます。
- CVE-2017-5753:投機的実行と分岐予測を利用するマイクロプロセッサを搭載したシステムでは、サイドチャネル分析を介して、ローカルユーザーアクセス権限を持つ攻撃者に情報を不正に開示する可能性があります。
- CVE-2017-5715:投機的実行と間接的分岐予測を利用するマイクロプロセッサを搭載したシステムでは、サイドチャネル分析を介して、ローカルユーザーアクセス権限を持つ攻撃者に情報を不正に開示する可能性があります。
- CVE-2017-5754:投機的実行と間接的分岐予測を利用するマイクロプロセッサを搭載したシステムでは、データキャッシュのサイドチャネル分析を介して、ローカルユーザーアクセス権限を持つ攻撃者に情報を不正に開示する可能性があります。
Tenable.ioを使用して影響を受けるシステムを特定するには、ワークベンチを開き、高度な検索を使用して、次のようにCVEフィルタ(CVE-2017-5753、CVE-2017-5715、CVE-2017-5754)を適用します。このフィルタの例では、各CVEをコンマで区切ってフィールドに入力しています。
プラグイン個数
CVEを使用してプラグインを検索すると、いくつかのプラグインが見つかります。新しいプラグインが利用可能になると、自動的にプラグインフィードに追加されます。
ID | 名前 |
---|
脆弱性のスキャン
Tenable.ioとSecurityCenterユーザーには、SpectreおよびMeltdownを対象としたスキャンを実行するための新しいスキャンポリシーが適用されます。スキャンジョブを作成するには、「スキャンポリシーテンプレート」に移動し、下の画像に示すポリシーを選択します。必要なプラグインがすべてポリシーに割り当てられます。次に、対象とするシステムの認証情報を追加する必要があります。ポリシー内のすべてのプラグインの実行には、認証情報が必要です。
ダッシュボード
Tenable.ioおよびSecurityCenterユーザーは、フィード内で利用可能な ダッシュボード を使用して、影響を受けるシステムを簡単に特定することができます。ダッシュボードには CVEを使用して、影響を受けるシステムをPlugin GroupおよびVulnerabilityでグループ化する2つのコンポーネントが用意されています。各ビューは、パッチ適用が必要なシステムをわかりやすく表示します。他のコンポーネントは、パッチ発行日に基づいて脆弱性を緩和する点での進捗状況を示します。
まとめ
当社は引き続きこれらの脆弱性を調査し、それらを検出する様々な方法を調べます。新しい情報が利用可能になると、追加のプラグインをリリースいたします。この脆弱性はすべての組織にとって現実的かつ実在する危険であり、直ちにパッチを適用する必要があります。Microsoft、Red Hat、VMWareなどのベンダーがパッチをリリースしようとしていますが、組織はできるだけ早くそれらのパッチを適用する責任があります。
関連記事
- Nessus
- Plugins
- SecurityCenter
- Tenable.io
- Vulnerability Management