← DARPA STAC
第 2–3 節

はじめにと技術的アプローチ

RULER:ソフトウェア内のリソース使用の脆弱性を検出するシステム

目次

2. はじめに

本研究は Iowa State University(ISU)が実施し、Air Force Research Laboratory(AFRL)から協力協定 No. FA8750-15-2-0080、Space/Time Analysis for Cybersecurity(STAC)として発注されたものである。我々のチームは、主契約者である Iowa State University(ISU)と、下請けである ENSOFT Corp. で構成され、それぞれが本プロジェクトに独自の能力をもたらした。

研究代表者の Suresh Kothari と Iowa State University の彼のチームは、プログラム分析の応用における革新的な進歩の実績を持つ。共同研究代表者の Wei Le は、ループのハイブリッド解析に豊富な経験を持つ。Srikanta Tirthapura も共同研究代表者であり、スケーラブルなグラフアルゴリズムとデータベースの経験を持つ。最後に、共同研究代表者の Jeremías Sauceda と ENSOFT の彼のチームは、高いスケーラビリティを持つ静的解析ツールの構築に豊富な経験を持つ。

DARPA STAC の BAA には次のように記されている。

STAC プログラムは、アルゴリズムの空間と時間のリソース使用の振る舞いに関連する脆弱性、具体的にはアルゴリズム計算量攻撃とサイドチャネル攻撃に対する脆弱性を特定するための、新しいプログラム分析の手法とツールを求める。STAC は、米国の政府、軍、経済が依存するソフトウェアにおいて、アルゴリズムのリソース使用に関する脆弱性を体系的に探索できるだけの規模と速度で、分析者がそれらを特定できるようにすることを目指す。STAC は新しい手法とツールを求めるものであり、既存の手法とツールを空間と時間の脆弱性の発見に適用するだけの取り組みは対象外である。

STAC プログラムは、規模と速度という 2 つの主要な性能軸に沿った進歩を求める。規模とは、一般に数十万行のソースコードからなるネットワークサービスを実装したソフトウェアから、数百万行、数千万行のコードからなるさらに大規模なシステムまで、より大きなソフトウェアを扱える解析が必要であることを指す。速度とは、人間の分析者が自動化ツールの助けを借りてソフトウェアを分析する速度を、1 時間あたり数千行のコードから、数万行、数十万行、あるいは数百万行へと高める必要があることを指す。半自動の分析時間のうち、人間が担う部分は自動化された部分を上回る傾向がある。これは、一般的な自動プログラム分析ツールでは、検査するソフトウェアを自動ツールが処理できるように準備するために、人間の分析者がまず相当な労力を費やす必要があり、さらに後で、実際の脆弱性を示す報告と単なる誤警報にすぎない報告とを見分ける必要があるためである。手作業による注釈の負担を減らすことは、速度を高める鍵の一つとなる見込みが高く、見逃し率を許容できる低さに保ちながら(すなわち、解析が健全でない場合を減らしながら)誤警報を減らすこと(すなわち、精度を高めること)も同様である。

3. 技術的アプローチ

Space/Time Analysis for Cybersecurity(STAC)プログラムは、Java バイトコードアプリケーションにおいて、アルゴリズムの空間と時間のリソース使用の振る舞いに関連する脆弱性を特定するために設計された。プログラムの BAA に定められた目標は次のとおりである。

  1. 人間の分析者がソフトウェア内のアルゴリズムのリソースに関する脆弱性を特定するために使用できる、自動プログラム分析の手法とツールを開発する。その際、アルゴリズム計算量攻撃とサイドチャネル攻撃の両方に対する脆弱性に、空間と時間の両方の変動について等しく注意を払う。米国の政府、軍、経済が依存するソフトウェアにおいて、それらを体系的に探索できるだけの規模と速度で行う。
  2. プログラム分析の進歩を活用する新しい研究を行い、既存の手法をはるかに超える革新的な能力を開発して、DoD が備える必要のある非常に高度なアルゴリズムのリソースに対する攻撃を検出する。
  3. STAC プログラムで開発される種類のツールを最終的に使用する人間の分析者は、調査対象のソフトウェアの開発者と同等の一般的なソフトウェア開発の専門知識を持ち、さらに、対象ソフトウェアの管理と運用について熟練したユーザーまたは管理者と同等の知識を持つと想定するのが妥当である。

高度なリソース使用の脆弱性を検出するための我々の高水準の技術的アプローチは、次の分析指針に基づいている。

  1. 疑わしいプログラムセグメントを発見するための完全な自動化。
  2. 裏付けとなる証拠を収集するためのヒューマン・オン・ループの静的解析。
  3. 動的な振る舞いを理解し、エクスプロイトを生成するためのヒューマン・オン・ループの動的解析。

次節では、上記の各分析指針に対する技術的進歩について詳しく述べる。