2. はじめに
本研究は Iowa State University(ISU)が実施し、Air Force Research Laboratory(AFRL)から協力協定 No. FA8750-12-2-0126、Comprehension-Driven Program Analysis (CPA) for Malware Detection in Android Phones として発注されたものである。Defense Advanced Research Project Agency(DARPA)のプログラムマネージャーは Tim Fraser、AFRL のプログラムマネージャーは Mark Williams であった。研究代表者は ISU の Dr. Suresh Kothari であり、下請けは ENSOFT. Corp と North Carolina State University(NCSU はフェーズ I の初期のみ参加)であった。
DARPA [1] によれば、このプログラムは次の課題に取り組むことを目指している。
Automated Program Analysis for Cybersecurity(APAC)プログラムは、まず照らし合わせて測定するセキュリティ特性を定義し、次にその測定を行う自動化ツールを開発することで、モバイルアプリのセキュリティ検証を適時かつ堅牢に行うという課題に取り組むことを目指す。APAC は、DoD の Android ベースのアプリケーションマーケットプレイスに悪意のあるコードが入らないようにするため、形式手法によるプログラム分析(定理証明、論理、機械による証明)の分野に大きく依拠する。APAC は、DoD のプログラム分析の能力を、自動化されたソリューションでかつて達成されたことのない水準までスケールさせるため、この分野の最近の研究上の飛躍的進歩を応用する。.. APAC が取り組むことを目指す 2 つ目の課題は、特定されたサイバーセキュリティ特性を実証する、実用的な自動化ツールを生み出すことである。成功するツールは、誤警報、検出漏れ、そして特性を証明するために人間が結果を選別する必要性を最小限に抑える。
2.1 チーム
我々のチームは 3 つのサブチームで構成され、それぞれが本プロジェクトに独自の能力をもたらした。
研究代表者の Suresh Kothari と Iowa State University の彼のチームは、プログラム分析の応用における革新的な進歩の実績を持つ。
共同研究代表者の Jeremías Sauceda と ENSOFT の彼のチームは、高度なアルゴリズムを応用した、世界水準の使いやすいエンジニアリングツールを構築した経験を持つ。
フェーズ I の最初の年には、North Carolina State University の Xuxian Jiang と彼のチームが、実環境の Android マルウェアに関する専門知識を提供した。
2.2 目標と目標に向けた進捗
Automated Program Analysis for Cybersecurity(APAC)プログラムは、Android 端末のマルウェアを見つけるために設計された。プログラムの BAA [2] に定められた目標は次のとおりである。
- Java で書かれた悪意のあるアプリケーションを、DoD の Android ベースのモバイルマーケットプレイスに入れないための、実用的なプログラム分析ツールを開発する。
- 静的プログラム分析の進歩を活用する新しい研究を行い、既存の手法をはるかに超える革新的な能力を開発して、DoD が備える必要のある非常に高度なマルウェア攻撃を検出する。
- 実用的な配備に向けた DoD の必要を満たすため、提案するツールは次の最低限の性能要件を上回る。
- 誤警報がフェーズ I で 30% 未満、フェーズ II で 5% 未満
- 検出漏れがフェーズ I で 30% 未満、フェーズ II で 5% 未満
- モバイルアプリ 1 つあたりに必要な手作業がフェーズ I で 160 時間未満、フェーズ II で 80 時間未満
- ソフトウェア開発と悪意のある手法の基礎知識を持つ分析者が、ツールを効果的に操作できること
目標 1 の達成度を評価するにあたり、我々はフェーズ I で最も成績のよい Blue チームであり、フェーズ II では上位 3 チームに入ったことを考慮する。しかし一方で、DoD レベルのソフトウェア監査を扱う場合には、5% の検出漏れ率でさえ深刻な結果をもたらしうる。Red チームは、ある程度理想的な条件の下でさえ、マルウェアの検出という問題が解決からほど遠いことを示した。さらに、我々は分析時間の目標を十分に満たしていたが、APAC の参加チームは PI ミーティングで DoD の分析者から、現在の分析の需要を満たすには人間の分析時間をさらに短縮する必要があるかもしれないというフィードバックを受けた。とはいえ、我々の平均分析時間は、BAA で提案された分析時間の目標を大きく下回っていた。
目標 2 に対しては、我々のチームは新しいプログラム分析の手法に関する査読付き論文を発表しており、その詳細は本報告書の最後の「発表論文」の節に記載している。
目標 3A に関しては、我々のチームは意図されていないマルウェア(Red チームが意図的に作り込んだものではないが、チャレンジアプリ内に存在することがわかった悪意のある振る舞い)を発見した。フェーズ I では 6 件、フェーズ II では 35 件の意図されていないマルウェアを発見した。我々のヒューマン・イン・ザ・ループのプロセスは、フェーズ I でも II でも誤警報を生まなかった。
目標 3B に関しては、我々は検出漏れを 30% に抑えるというフェーズ I の目標を、6.49% の検出漏れ率で上回った。フェーズ II では、チャレンジアプリケーションの性質が変化した結果、検出漏れ率が 25% に上昇したため、5% というフェーズ II の目標は達成できなかった。Red チームは、マルウェアの検出がいまだ解決されていない問題であり、さらなる研究が必要であることを明確に示した。APAC プログラムは、静的解析の最も難しい問題のいくつかと、それらの問題に対処する新しい技術の必要性を浮き彫りにした。具体的には、人間が潜在的なマルウェアの候補についてよりよい仮説を立てられるようにする、静的解析に基づく新しいプログラム理解の手法が強く必要とされている。フェーズ II で、仕込まれたマルウェアを見つけられなかったほぼすべてのチャレンジアプリにおいて、失敗の原因は正しい仮説を立てられなかったことにあった。そうしたケースの多くで、我々は仮説を立ててマルウェアを発見したが、それは Red チームが仕込んだものではなかった。したがって、フェーズ II では意図されていないマルウェアをはるかに多く発見した(フェーズ I の 6 件に対し、フェーズ II では 35 件)にもかかわらず、検出漏れ率はフェーズ II で悪化した(フェーズ I の 6.49% に対し、フェーズ II では 25%)。
フェーズ I ではアプリケーション 1 つあたり 160 時間未満、フェーズ II では 80 時間未満でアプリケーションを分析するという目標 3C は達成された。フェーズ I では、アプリケーション 1 つあたり平均 1.13 時間、フェーズ II では平均 9.19 時間であった。分析時間はフェーズ I からフェーズ II にかけて増加したが、その増加の大部分は、分析者がマルウェアの仮説を立てるのに要した時間によるものである。自動化された解析の時間は問題ではなかった。実際、フェーズ II のアプリは通常フェーズ I のアプリよりはるかに小さく、自動化された解析のスケーラビリティは問題ではなかった。
目標 3D については、我々はこの目標を達成したと考えている。APAC のフェーズ I と II を通じて、ISU は学部生を雇用し、セキュリティツールボックスに対するフィードバックの提供と開発作業の支援を行ってもらった。また、プログラム分析の宿題に Atlas を用いたソフトウェア工学の学部の授業では、ソフトウェア分析とマルウェアに関する背景知識が限られたユーザーでもツールをうまく操作できることが示された。Red チームは、我々のツールの使いやすさと、実地での成熟度を一貫して高く評価した。
これらの結果についてのさらなる考察は、「結果と考察」の節にある。
