Control Flow Graph Recovery for Dynamically Loaded Code via Symbolic Library Resolution
本論文は、動的にロードされたコードから制御フローグラフを復元するために、推測的ライブラリ事前読み込みとカスタムフックを組み合わせる安全な記号的実行ベースの分析手法を提案し、ライブラリ検出において 100% の精度と再現率を維持しつつ、静的分析に比べてノードおよびエッジの復元を大幅に改善する。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
複雑な機械の仕組みを理解するために、その設計図を見てみようとしていると想像してください。コンピュータソフトウェアの世界では、これらの設計図は**制御フローグラフ(CFGs)**と呼ばれます。これらはプログラムが取りうるすべての経路をマッピングし、コードが次にどこへ進むかを示します。
しかし、現代のソフトウェア(マルウェアなどの悪意のあるプログラムを含む)は、その設計図を隠すというトリックを学びました。彼らは動的ロードと呼ばれる技術を使用します。すべての部品を最初からメインマシンに組み込むのではなく、一部の部品を施錠された箱の中に保管し、マシンが稼働している間にのみ箱を開けて部品を組み立てるのです。
問題:見えない部品
従来のソフトウェア分析ツールは、静的な建築家のようなものです。彼らは机の上の設計図を見て、「ここが経路だ」と言います。しかし、マシンが稼働中に箱から隠された部品を取り出せば、静的な建築家は何も見えません。彼らは扉があるはずの場所に空白しか見えないため、その扉を通る経路を描くことができません。
これはセキュリティにとって大きな問題です。隠された経路が見えなければ、そのマシンが安全なのか、それとも罠なのかを判断できません。
解決策:「推測的」な探偵
この論文の著者、O. S. Mostovyi は、新しい種類の探偵ツールを構築しました。単に設計図を見るのではなく、このツールは時空を旅するシミュレーターのように振る舞います。
それがどのように機能するか、簡単な例えを使って説明します。
- シミュレーション(記号実行): 実際にはソフトウェアを起動することなく実行できるロボットを持っていると想像してください。このロボットは「もしも」の世界でコードを実行します。危険な部分を実際に実行するのではなく、それらを思考だけで処理します。
- 2 段階アーキテクチャ: このツールは、連携して働く 2 つの特別な感覚を持っています。
- レベル 1(図書館司書): この部分は、ソフトウェアが新しい部品を要求する様子を観察します。ソフトウェアが「ネットワークからライブラリが必要だ」あるいは「隠されたメモリ領域からファイルが必要だ」と言おうものなら、図書館司書はその要求を傍受します。ソフトウェアがファイル名を暗号化したり、かき混ぜたりして言おうとも、ツールは数学を用いてそのファイルが実際には何であるかを特定します。その後、ロボットが見られるように、そのファイルを「推測的」にシミュレーション内にロードします。
- レベル 2(交通整理員): この部分は、ロボットが通る道路を観察します。ロボットが、秘密のアドレスのような隠された変数に依存する方向の分岐点に到達すると、交通整理員はその道路が実際にどこへ続くかを確認するために「もしも」のシナリオをチェックします。
厄介なトリックへの対処法
この論文では、悪意のある行為者がロードプロセスを隠すために多くの方法を用いると説明しています。このツールはそれらすべてを捕捉するように設計されています。
- ファイルレス実行: 一部のプログラムは、ハードドライブ上に存在しないファイルを作成し、RAM のみで動作します。ツールはこれらの見えないファイルを検知します。
- ネットワークロード: 一部のプログラムは実行中にインターネットからコードをダウンロードします。ツールはこのダウンロードをシミュレートし、何が到着するかを確認します。
- 暗号化された名前: プログラムが「ファイル [暗号化コード] をロード」と言う場合、ツールは数学的ソルバーを用いてコードを解読し、実際のファイル名を特定します。
結果:欠落した地図の補完
これをテストするために、著者は単純なトリックから複雑な多段階暗号化まで、さまざまな隠蔽技術を使用した 16 種類の異なる「罠」(ベンチマーク)を作成しました。
結果は非常に明確でした。
- 完全性: このツールは、従来の静的ツールよりも29.8% 多い経路(ノード)と26.5% 多い接続(エッジ)を検出しました。地図上の空白を埋めたのです。
- 精度: 100% 正確でした。隠されたライブラリを発見したと報告した際、すべてが正しかったです。誤報は一つもありませんでした。
- 安全性: 危険なコードを実際に実行するのではなく、シミュレーション(記号実行)を用いたため、マルウェアが脱出したり損害を与えたりするリスクなく、これらの厄介なプログラムを安全に分析できました。
限界
著者は、このツールがまだできないことについても正直に述べています。
- 探偵であって魔法使いではない: 隠された扉を見つけ、経路を描くことはできますが、複雑な難読化(かき混ぜ)を自動的に「元に戻して」コードを読みやすくすることはできません。それはまだ難しい問題です。
- プラットフォームの制限: 現在、特定のコンピュータチップ上の Linux システム(特に ELF ファイル)ではよく機能しますが、Windows や他のオペレーティングシステムではまだ機能しません。
- 隠れたフロー: 明示的に移動するデータは追跡しますが、複雑な数学関数を通るような、微妙で間接的な方法で移動するデータは、時として見逃すことがあります。
まとめ
要約すると、この論文は、実行されるまで部品を隠すソフトウェアの経路をマッピングする新しい手法を提示しています。「もしも」のシミュレーターと、隠されたファイル要求を傍受・解決するスマートなシステムを組み合わせることで、このツールはプログラムの挙動の完全な地図を描き出し、セキュリティ分析者には以前は見えなかった経路を明らかにします。これは 16 の異なるシナリオで成功裏にテストされ、隠されたライブラリを完璧な精度で見つけることができることを証明しました。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。