非局所的なデータと制御
マルウェアのデータ依存と制御依存は複数の関数とデータ構造にまたがるため、悪意のある振る舞いが、解析器が指し示せる 1 か所にとどまることはありません。
ENSOFT の研究 · DARPA APAC · 2012–2015
DARPA の APAC プログラムは、DoD の Android マーケットプレイスに悪意のあるアプリが入らないようにすることを目指し、Red チームがチャレンジアプリに書き込んだ新種のマルウェアで試されました。証明可能な自動化はすべての場合に可能なわけではないため、チームは 2012 年から 2015 年にかけて、人間の分析者をループの中に置きました。そのために用いたのが、Atlas グラフデータベースとその XCSG スキーマ、その上に構築した Android セキュリティツールボックス、そしてライブラリを要約する FlowMiner です。チームはフェーズ I で最も成績のよい Blue チームとなり、フェーズ II では上位 3 チームに入りました。
マルウェアのデータ依存と制御依存は複数の関数とデータ構造にまたがるため、悪意のある振る舞いが、解析器が指し示せる 1 か所にとどまることはありません。
マルチスレッドとイベント処理は、静的解析から見える関数呼び出しや制御文なしに制御を切り替えます。Android フレームワークは、ボタンのクリック、ライフサイクルの変化、その他の多くのイベントに応じて、アプリへのコールバックを行います。
アプリの意図はあいまいであり、悪意のある振る舞いを正当な機能から切り分けることを難しくします。判断にはドメイン固有の見極めが必要であり、自動化されたツールだけではそれを下せません。
APAC は、悪意のある Java アプリを DoD の Android マーケットプレイスに入れないための、実用的なプログラム分析ツールを求めました。誤警報と検出漏れはフェーズ I で 30% 未満、フェーズ II で 5% 未満、アプリ 1 つあたりの手作業はフェーズ I で 160 時間未満、フェーズ II で 80 時間未満とし、ソフトウェア開発と悪意のある手法の基礎知識を持つ分析者が操作できるツールであることが求められました。
2 パス方式のツールは、まず自動化を実行し、すべての警報の確認や棄却を人間に委ねます。これは不当な負担です。チームは代わりに、分析者とツールを反復的な改良の 1 つのループで結び付けました。その仕組みを提供するのが、ENSOFT が開発した Query-Model-Refine フレームワークです。対話的にも Java に埋め込んでも使える組み合わせ可能なクエリ言語と、大規模なソフトウェアの効果的な抽象を作るモデルと改良の機能を備えています。
図 1 · 2 パス方式と統合された分析読む →
eXtensible Common Software Graph(XCSG)は、Java、Java バイトコード、C、C++ のプログラムの構造と振る舞いを、1 つの属性付きグラフとして表現します。Atlas はプログラムを一度だけそのグラフにインデックス化し、その後は解析器、シェル、分析者のクリックに応答する Smart Views からのクエリに答えます。
第 3–3.1.1 節読む →
このツールボックスは、Android のパーミッションをプログラムグラフにマッピングし、Java の解析では見落とされる XML リソースをインデックス化し、プロパティ、スメル、機密性、完全性、可用性の解析器を実行します。そのダッシュボードは解析器を並列に実行し、結果を分析者のためにキューに並べます。
図 2–3読む →
Android アプリは巨大なライブラリの上で動作するため、アプリだけを分析することは部分プログラム解析になります。FlowMiner は、Java ライブラリのバイナリから、重要なフローを保持した情報フローの要約をマイニングします。その要約は、平均して元のライブラリのグラフのノードの 26.89%、エッジの 16.32% にとどまります。
オープンソース読む →


チームは 8 回のエンゲージメントで 105 のチャレンジアプリを監査し、そのうち 87 が悪意のあるものでした。検出漏れは、フェーズ I では 30% という目標を下回る 6.49%、フェーズ II では Red チームのマルウェアが変化したことで 25% でした。分析時間はアプリ 1 つあたり、フェーズ I で平均約 1 時間、フェーズ II で約 9 時間であり、160 時間と 80 時間の上限を下回りました。検出も分析時間もアプリのサイズとは連動せず、難しさはマルウェアそのものから生じていました。
図 6 · アプリケーションのサイズと分析時間読む →
AFRL-RI-RS-TR-2015-186 · ADA621995
理解駆動型プログラム分析の背景にある 3 つの研究課題と、それぞれへの答えです。
チーム、DARPA 自身の言葉によるプログラムの説明、そしてプログラムの目標と、それぞれに向けたチームの進捗です。
ヒューマン・イン・ザ・ループの手法、Query-Model-Refine、XCSG グラフスキーマ、Atlas プラットフォームです。
パーミッションのマッピング、解析器、インデクサー、ダッシュボードです。
表現力と簡潔さを両立するライブラリの要約、その検証、オープンソースのツールです。
分析者とそのプロセス、チャレンジアプリケーション、検出率、分析時間、そしてエンゲージメントが示したことです。
政府向けとオープンソースでリリースしたものと、最後の評価です。
発表論文 4 本、参考文献 7 件、略語一覧です。
概要: DARPA APAC プログラムにより、我々は 3 つの重要な技術的進歩を遂げる機会を得た。(a) 自動化と人間の理解の両方を促進する、グラフデータベースによるプログラム分析プラットフォームと、プログラムの意味論を表現するグラフスキーマ。(b) マルウェアの分析手法と、それをセキュリティツールボックスに組み込み、新規で高度な Android マルウェアを検出する人間と機械による分析システムを提供すること。(c) 革新的なライブラリの要約手法と、それを、正確でスケーラブルな部分プログラム解析のために、表現力があり簡潔な情報フローの要約をライブラリからマイニングする FlowMiner ツールに組み込むこと。チャレンジアプリは、我々の技術を発展させ、その限界を理解するうえで非常に有用であった。本報告書では、技術的進歩の詳細と、我々の経験と所見を概説する。
Atlas 上に構築された DARPA APAC の Android Security Toolbox を実演します。このツールボックスにより、Red チームの敵対的アプリケーションに対して、Android のソースと Java バイトコードにわたるヒューマン・イン・ザ・ループのマルウェア監査が可能になります。
Benjamin Holland, Tom Deering, Suresh Kothari, Jon Mathews, Nikhil Ranade10.1109/ICSE.2015.235
DARPA APAC プログラムのもとで開発された、理解駆動型でヒューマン・イン・ザ・ループのマルウェア検出手法を定式化します。この手法は、Red チームによる敵対的な Android マルウェアに対して、DoD および商用のモバイルマーケットプレイスを審査するためのものです。
Suresh Kothari, Tom Deering, Ben Holland, Ahmed Tamrawi, Akshay Deepak, Sandeep Krishnan, Damanjit Singh, Vani Bojja, Ganesh Santhanam, Jeremías Sauceda, Jon Mathews, Nikhil Ranade論文を読む →
完全に自動化された静的解析では誤検知が過剰になる、またはスケールしない、複雑で横断的なソフトウェア異常を診断し解決するための、対話的なヒューマン・イン・ザ・ループの推論手法を紹介します。
Suresh Kothari, Akshay Deepak, Ahmed Tamrawi, Benjamin Holland, Sandeep Krishnan10.1109/SMC.2014.6974210
プログラムのインデックス作成をドメイン固有の分析から切り離す、Atlas ソフトウェア分析プラットフォームを紹介します。多項式時間の静的解析器がプログラムの属性付きグラフデータベースを構築し、エンジニアはそれを対話的に、または分析スクリプトを通じてクエリします。Linux カーネルの同期検証と Android マルウェアの検出で検証されています。
Tom Deering, Suresh Kothari, Jeremías Sauceda, Jon Mathews10.1145/2591062.2591065
Simulink と SimDiff によるドメイン固有のグラフィカルモデリングと、Atlas によるプログラムグラフのクエリモデリングを組み合わせた、問題駆動型のモデリングカリキュラムを紹介します。2 イベントのグラフモデルを、オペレーティングシステムのメモリリーク、Linux カーネルのロックの対応付け、DARPA APAC における Android マルウェアの検出に適用します。
Suresh Kothari, Jeremías Sauceda論文を読む →