Wind River Blog Network 翻訳版
本サイトでは、Wind River Blog Networkの一部を翻訳し公開しております。

January 24, 2018

「Spectre」と「Meltdown」 – 組込み業界での対処法


投稿者:Tim Skutt

この数週間、「Spectre」と「Meltdown」という新たなセキュリティ問題をめぐり、憶測と新事実の発覚で大騒動になりました。総括すると、この問題は、主要プロセッサのアーキテクチャや実装の大部分に影響があり、分野横断的に「自分は何をすべきか」という問いを投げかけています。

この問いに対する答えとして、最初に提供された情報の多くは、クラウドコンピューティング環境、エンタープライズIT環境、コンシューマエンドポイント環境にフォーカスしています。しかし、組込み環境の場合、異なる特性や制約があるのが一般的なため、答えは違ってくるかもしれません。たとえば、多くの組込みデバイスは、多少なりとも機能が固定されたデバイスで、SpectreやMeltdownの脆弱性を突こうとする未確認のコードは実行できないように設計されています。こういった制約のあるデバイスの開発者の場合、エンタープライズやクラウドのソリューション開発者とは、問題解決へのアプローチが異なるかもしれません。

このブログでは、多くのセキュリティ問題の解決で実績のある各種アプローチを検討して、ソフトウェア定義型組込み環境の観点から、目下の問題に適用します。

簡単な背景説明

SpectreとMeltdownは、投機実行を利用するサイドチャネル攻撃です。投機実行は、性能を向上するためにプロセッサが使う一般的な手法です。

  • サイドチャネル=情報を直接取得するのではなく、システムによって処理中の情報を読み取るのに利用できる、コンピュータシステムのいくつかの物理的な動作状況
  • 投機的実行=現代のほとんどのCPUが持つ機能で、所定のプロセスのために実行する必要がありそうなコードを予測して、必要な結果を即座に用意できるように、先行して実行できる機能

つまり、SpectreとMeltdownは、投機実行に関連した物理的な動作状況(具体的にはタイミング)を観察することで、コンピュータシステム内の情報を読み取る手法です。これらの攻撃を実行するコードは、正常ではアクセス権限のない情報、たとえばパスワード、他のアプリケーションやOSが使用する鍵などを漏出させることができます。

ウインドリバーは、SpectreとMeltdownに関してプロセッサベンダ、セキュリティコミュニティと協力しており、今後もセキュリティベンダとして真摯に取り組んでいきます。

SpectreとMeltdown問題への対応

セキュリティの要点は、リスクを明確にして、所定のリスクの発生する可能性と影響が許容できるか、あるいは、リスクの発生可能性、影響、またはその両方を低減するための対応策が必要かを判断することです。SpectreとMeltdownの場合、リスクは、攻撃者が投機実行のサイドチャネルを使って、アクセス権限のない情報を盗み見できることです。この難しいプロセスを確認するための手引きとして、以下のステップを活用できます。

ステップ1 – システムに対するリスクの発生可能性と影響の特定

Spectre/Meltdown問題は、実行可能にするための前提条件がいくつかあります。

  1. SpectreやMeltdownが悪用できる機能を、プロセッサが実装していること – プロセッサベンダのガイダンスや資料で、プロセッサがSpectre、Meltdown、または両方に対して脆弱性があるかどうかを判断します。
  2. プロセッサのタイミングソースが、投機実行の影響を計測するのに十分な粒度であること – ある程度システムに依存しますが、一般的に、粒度の大きいタイマー(タイミング計測の最小単位が1000プロセッサクロックサイクル以上のオーダー)しか利用できない場合は、投機実行のタイミングを悪用するのは極めて困難です。
  3. 攻撃者が攻撃コードをプロセッサ上で実行できること– SpectreとMeltdownはリモート攻撃ではありません。攻撃者のコードをプロセッサ上で実行して、投機実行のタイミングを計測する必要があります。組込みシステムやミッションクリティカルなシステムの多くは、制約が厳しく、事前定義され、検証済みの定められた機能セットしかシステム上で実行できません。この種のシステムでは、たとえば、攻撃者が攻撃コードをプロセッサ上で実行する可能性は低く、リスクは許容できる場合があります。
  4. 攻撃者にアクセス権限がない、プロセッサにアクセス可能な情報があること– Spectre/Meltdown問題には、データの破損、改ざん、削除の可能性はありません。攻撃者にアクセス権限がない情報がシステムに含まれていない場合は、攻撃が成功しても影響はなく、リスクは許容できる場合があります。

以上4つの前提条件を評価してみて、Spectre/Meltdownは、これ以上何かしなければならないような、高い発生可能性と影響のあるリスクはもたらさないと判明するケースも考えられます。以上の前提条件について不明な点(攻撃者が攻撃コードをシステム上で実行する可能性など)があれば、ウインドリバーがお手伝いできます。

4つの前提条件を満たす(プロセッサが投機実行と十分な粒度のタイムソースを実装しており、攻撃者がプロセッサ上でコードを実行できる可能性があり、攻撃者にアクセス権限のない情報がシステム上にある)場合は、続いて、リスクの発生可能性と影響度を明確にする必要があります。次に示すような枠組みを使うと、分類しやすいかもしれません。

発生可能性と影響度の定義は、組織によって異なるものですが、この枠組みを活用すれば、現在の発生可能性と影響度に加えて、軽減後の望ましい発生可能性と影響度も効果的に明確にできます。ウインドリバーは長年にわたり、リスクの評価をはじめとするセキュリティ評価でお客様をサポートしてきました。必要があれば、この領域での支援が可能です。

ステップ2 – 対応戦略の特定

SpectreとMeltdownのリスクの発生可能性と影響度を明確にした結果、現在のリスクが許容できない場合は、対応戦略が必要になります。数種類の軽減策がプロセッサベンダやコミュニティのソフトウェアベンダ(ウインドリバーも含む)によって開発されていますが、トレードオフが異なる多数の対応策がありうることを認識することが大切です。ウインドリバーはコミュニティと協力して、ハードウェアベースのSpectre/Meltdown問題に必要とされる、最適な軽減策の策定に取り組んでいます。しかし、各ソリューションには固有の特徴があり、自由に選べる選択肢が必要だと考えられます。

可能性のある対応策例としては、前述のような制約が厳しいシステムでも、実行イメージの真正性をシステムが検証しないために、攻撃者がシステム上でコードを実行する可能性が低いとはいえない場合は、セキュアブートと静的解析を組み合わせたソリューションが考えられます。デジタル署名付きイメージを使うセキュアブートを加えることで、実行イメージやデータの認証が行われ、イメージの出所が信頼できるソースに限定されます。静的解析は、デジタル署名付きイメージに投機実行コードシーケンスが含まれておらず、信頼できることを検証できます。この解決策は、セキュアブートのインテグレーション(ウインドリバーのVxWorks製品ラインやオープンソースベースの製品ラインには搭載済み)と、現在提案されているOSとコンパイラレベルの軽減策の潜在的な実行時オーバーヘッドとのトレードオフになります。

別の例を挙げると、一番の課題が暗号鍵のような非常に機密性の高い少数の情報の保護である場合は、解決策として、鍵を使用するストレージやオペレーションを、別個の暗号オフロードエンジンやTPM(Trusted Platform Module)に移すことができます。この解決策は、既存システムのアップデートされた新しいOSへの移植とのトレードオフになります。機密情報をハードウェアモジュールに分離することで、前述の前提条件4(攻撃者にアクセス権限のない、プロセッサにアクセス可能な情報がある)を除外できる場合は、このような対応策で、アプリケーションへの影響を最小に抑えて、許容範囲内のリスクレベルを実現できるかもしれません。

適切な対応戦略は、スケジュール、検証やアップデートのコスト、堅牢性など、多数の要素によって変わってきます。利用可能な対応策の選択肢を把握しておくことは、最善の対応戦略を選ぶうえで重要です。ウインドリバーは、選択肢とトレードオフをチームが判断できるように支援できます。ウインドリバーのサービスは、コミュニティベースの軽減策を含め、幅広い実装を提供します。

ステップ3 – モニタリング

時間が経つにつれて、SpectreとMeltdownへの対応は進化します。当初のソフトウェアだけの軽減策は、プロセッサベンダからマイクロコードの修正が提供されると変更され、いずれ最適化が行われると思われます。また、SpectreとMeltdownに触発されて、大規模な研究が進み、軽減策の改良だけでなく、別の問題の発見につながる可能性もあります。今後の経過を注視することは、SpectreとMeltdownが露呈した問題に対処し、対応策を可能なかぎり最新の状態に保つために、重要な部分になります。

ウインドリバーは軽減策や対応策に対処するコミュニティの一員として、ポートフォリオ全製品について、ソリューションの追跡、インテグレーション、開発に積極的に取り組んでいます。お客様はウインドリバーのカスタマーサポートサイト(https://knowledge.windriver.com)で、Spectre/Meltdownソリューションの進捗について最新情報を得られるほか、通知用のRSSフィードにご登録いただけます。有効なサポートアカウントをお持ちでないお客様には、ウインドリバーが公開しているCVEデータベースで、関連CVEの影響についてよりハイレベルの情報を提供しています。ウインドリバーのCVEデータベースは、こちらから利用できます。
http://www.windriver.com/security/cve/main.php

製品のアップデート機能でも、ウインドリバー製品に組み込まれたソリューション向けに、配布チャネルを提供しています。ソリューションとそのアップデートを組み込むタイミングは、お客様が選べます。

Spectre、Meltdownへの対応プロセスの一環として、今後の対応を計画しておけば、将来ありうる変更に効率よく適応できます。ウインドリバー製品は、アップデートソリューションを搭載しています。ウインドリバーのプロフェッショナルサービス部門は、アップデートソリューションのカスタマイズやインテグレーション、アップデートの作成、検証、検査、デバイスへの配布に使用されるプロセスとツールの効率化を支援できます。

まとめ

SpectreとMeltdownは、ソフトウェア定義型環境に関わるすべての人々に、不正に情報を読み取るサイドチャネル攻撃の可能性に気づかせました。業界全体で、「自分は何をすべきか」が問われています。この問いに対する答えとして、最初に提供された情報の多くは、クラウドコンピューティング環境、エンタープライズIT環境、コンシューマエンドポイント環境にフォーカスしています。組込み環境の場合、異なる特性や制約があるのが一般的なため、答えは違ってくるかもしれません。

対象がクラウド、エンタープライズ、コンシューマ、組込みのいずれでも、すべての人に有効なアプローチは、まず問題のリスクと影響を検討して、次に、対応戦略の特定と実装の段階に進み、その後は、ソリューションのモニタリングを継続します。アプローチの最終段階は、環境によってまちまちだと思いますが、このアプローチなら、徹底的で漏れのない対応が可能です。

ウインドリバーはSpectreとMeltdownに対応するセキュリティコミュニティの一員として、幅広い業界のデバイスやシステムと幅広いプロセッサ実装に、堅牢で最適化されたソフトウェアソリューションの選択肢を提供しています。選択肢があることで、ウインドリバーのお客様はシステムのトレードオフを調整でき、リアルタイム、セーフティクリティカル、ミッションクリティカル、レジリエンスなどの要件とともに、セキュリティを保つことができます。ウインドリバーのクラストップレベルのセキュリティレスポンスチームは、初期対応とソリューションだけでなく、ソリューションや環境の進化に応じて、通知やアップデートも提供します。そのため、開発者は、現時点でシステムをセキュアにできるだけでなく、将来もセキュアに保つことが可能です。