McAfee Advanced Threat Research(ATR)チームが詳しく追跡してきたMeltdownおよびSpectreと呼ばれるCPUの脆弱性への対策について、1月3日に発表がありました。今回のブログでは、McAfee ATRチームが、これらの脅威にまつわる事実と誤解を区別し、またマカフィーの検知・防止の能力や方法に迫ることで、この問題について簡単かつ簡潔に説明したいと思います。
報道やSNSでは、プロセッサーやオペレーティング システム(OS)に関わるものも含め、これら2つの影響について、さまざまな憶測が飛び交っています。こうした憶測は、公開されたLinuxカーネルの変更が根拠となっています。McAfee ATRチームは、顧客や一般の方に向けて、技術的に確かな分析結果を公開することを重要視し、混乱を招くような情報の提供はこれまで控えてきました。
こちらのテクニカル ブログで、GoogleのProject Zeroチームによる総合的な記事をご覧いただけます。ATRチームは、この記事により結論を検証することができました。マカフィー製品の互換性に関する詳細については、こちらのナレッジ センターの記事をご覧ください。
1.手法について
MeltdownとSpectreは、“KASLR” などの過去の手法や、実践的なサイドチャネル攻撃に関する論文に基づいた新しい手法です。現在、判明している情報は、CPUの投機的実行の機能を革新的な方法で使用することでそのサイドチャネル攻撃を行うことを前提としています。
投機的実行(speculative execution)とは、10年以上前から存在するプロセッサーの機能です。Tomasuloのアルゴリズムに基づき、分岐予測が行われます。本質的に、分岐の実行はランタイムの状態に依存するため、現代型のプロセッサーが「予側」できれば、時間を節約できる可能性があります。このような分岐の投機的実行は、依存する条件値を推測することで行われます。通常は、その分岐が前回実行された時の最終段階に基づき推測します。この条件値はキャッシュされ、再びその分岐を通る際に利用されます。いずれの場合も、プロセッサーは値が算出されるまで待機しなければならないため、条件値が新しくなったとしても計算によるタイム ロスは発生しません。無効な投機的実行は破棄されます。この無効な投機的実行が破棄されるという部分こそ、MeltdownとSpectreが悪用している重要な特性なのです。
メモリやCPUレジスタに影響を与えることなく、無効な投機的実行の結果をクリアしているにも関わらず、実行結果データがプロセッサーのキャッシュに残っていることがあります。無効な実行データが残ることは、現代型CPUの特徴の1つであり、MeltdownとSpectreはこれを利用しています。その手法の詳細については、こちらのサイトをご覧ください。
MeltdownとSpectreは、ほとんどのOS(Windows、Linux、Android、iOS、macOS、FreeBSDなど)で実行可能です。そのため、「これらの脅威の危険性」、「企業が講じるべき対策」、「個人が講じるべき対策」など懸念事項は多数あります。以下のセクションでは、MeltdownとSpectreに関するマカフィーの現在の知見に基づき、リスクを分析していきます。
セキュリティに関する研究機関では、これらの手法に対し、すでに調査を進めています。グラーツ大学からは、3つの亜種のうち2つのサンプル コードが紹介されています(Spectreに関する論文の付録内)。コードはまだ一般公開されていないものの、エリック・ボスマン(Erik Bosman)もエクスプロイトを開発したとツイートしています。2016年には、ダニエル・グルース(Daniel Gruss)というMeltdownおよびSpectreの研究者が、GitHubにメモリ内キャッシュを利用した初期のサイドチャネル攻撃の例を紹介しています。このように詳しい情報が公開されているにもかかわらず、本ブログを記述している時点で、これらのエクスプロイトが実際に確認された例はありません。McAfee ATRチームは、引き続きこれらの手法に対する研究者や攻撃者の注目度をモニタリングし、適宜、最新情報をお伝えしていきます。現在使用されているほぼすべてのコンピューティング システムが攻撃対象であることや、攻撃の難易度が比較的低いことから、近い将来、少なくとも前述の亜種の1つはサイバー攻撃者によって兵器化される可能性が非常に高いと思われます。
マカフィーの研究者は、公開されているSpectreのエクスプロイト コードをすぐにコンパイルし、Windows、Linux、MacOSを含む数多くのOSで、その効果を検証しました。
2.兵器化
あらゆる脆弱性や攻撃手法の潜在的な影響を評価するためには、まず、その攻撃に潜む攻撃者にとっての価値を考える必要があります。これらのエクスプロイトは、攻撃対象がかつてなく広いこと、攻撃ベクターが比較的新しいこと、またその影響(権限昇格、機密性の高いメモリの漏えいなど)が甚大であることから、不正を働く個人や集団にとって唯一無二の魅力があります。その性質上、唯一のリスク低減要素は、これらのエクスプロイトのコードをローカルで実行する必要があるという点です。数多くのサードパーティーが、可能な攻撃侵入ポイントとしてJavaScriptを挙げています。つまり、理論上、これらの脅威はブラウザ内から実行され、実質的に遠隔侵入経路を作ってしまう、ということを意味しています。JavaScriptには常にメリットとデメリットがあり、使いやすいブラウジング体験を実現してくれる一方で、攻撃者には実行中のブラウザのスクリプト コードという攻撃ための入口を与えてしまうのです。
仮想マシンの境界を越える手法については、攻撃者は特に関心を寄せています。クラウドの仮想マシン インスタンスを利用してクラウド内の他のテナントを攻撃できる可能性があるからです。Spectreは、アプリケーションの境界を越えて攻撃を拡大できるように設計されており、まさにこの問題に当てはまります。そのため、大手クラウド ベンダーは、これらの問題が一般公開される前に、大急ぎでパッチやソフトウェア アップデートを発行しているのです。
また、MeltdownとSpectreの両亜種は、調査され得る足跡を残さず、プログラムの実行を停止することもあるため、なかなか検知できません。こうした理由から、感染後の調査や攻撃の特定作業が極めて複雑化しています。
3.対策
MeltdownとSpectreは、実世界の攻撃者に大きな価値をもたらすことができるため、どのように悪用される可能性があるかを調査する必要があります。これらの手法にリモートによる手法は存在しません。攻撃者はまず、被害者にコードを送る必要があります。不正なJavaScriptを防止するには、インターネットを閲覧中、常に警戒することが重要です。信頼できるサイトのスクリプティング言語のみ、実行を許可してください。McAfee Windows Security SuiteやMcAfee Endpoint Security(ENS)を使えば、既知の危険なサイトに移動した際に警告を受け取ることができます。また、既知の不正スクリプトの実行を防ぐことのできる代替のスクリプト実行エンジンも提供されます。
MeltdownやSpectreの対策としてOSが修正されたら、企業や個人はできるだけ早く、それらのアップデートを適用すべきです。
今のところ、これらの手法を利用したマルウェアは確認されていませんが、ほとんどのソリューションは、プロセッサーやOSのアップデートに組み込まれていると考えられるため、マカフィーでは現在、弊社製品機能により、これらを検知するための検証を実施しています。公開されている概念実証に基づき、すでにOSX/Spectre、Linux/Spectre、Trojan-Spectreの名前で限定的ですが検知機能も提供しています。マイクロソフトからは、こちらの発表に対応した臨時パッチがリリースされています。パッチやアップデートの性質上、まずは重要性の低いシステムにマニュアルでアップデートを適用し、OS機能の細かい用途ごとにソフトウェアの互換性を確認してください。マカフィーのチームでも、リリースされたパッチとの互換性を確認する作業を行っています。
本日行われた重要な発表に関する、潜在的な影響について、世界中で憶測が飛び交っていますが、そこには明るいメッセージも込められています。今回は、「実際の」攻撃が発見されたわけでも、情報漏えい事故が発生したわけでもなく、セキュリティの研究機関が大規模なセキュリティ問題を発見したという事実が伝えられたのです。この情報公開によるマイナスの影響も考えられます。しかし、ソフトウェアやハードウェアのセキュリティに世界の注目が集まり、善良な人々が安全なコンピューティングに向け、より確かなシステムやアーキテクチャを開発するため、幸先のよいスタートが切れたという効果があるのです。
※本ページの内容は、2018年1月4日更新のMcAfee Blogの内容です。
原文:Decyphering the Noise Around ‘Meltdown’ and ‘Spectre’By McAfee
著者:McAfee Advanced Threat Research
■関連サイト