[論文レビュー] In Nomine Function: Naming Functions in Stripped Binaries with Neural Networks
この論文では、深層学習を用いてストリップドバイナリ実行可能ファイル内の関数を自動的に命名するニューラルネットワーク手法を提案する。8.800万件の関数を含む多様なソフトウェアから構成される大規模な公開データセットを導入し、トランスフォーマーを用いた最先端の性能(F1スコア:0.230)を達成した。また、微調整により精度が顕著に向上することを示しており、特にシステムユーティリティのようなドメイン固有のバイナリにおいて顕著である。
In this paper we investigate the problem of automatically naming pieces of assembly code. Where by naming we mean assigning to an assembly function a string of words that would likely be assigned by a human reverse engineer. We formally and precisely define the framework in which our investigation takes place. That is we define the problem, we provide reasonable justifications for the choices that we made for the design of training and the tests. We performed an analysis on a large real-world corpora constituted by nearly 9 millions of functions taken from more than 22k softwares. In such framework we test baselines coming from the field of Natural Language Processing (e.g., Seq2Seq networks and Transformer). Interestingly, our evaluation shows promising results beating the state-of-the-art and reaching good performance. We investigate the applicability of tine-tuning (i.e., taking a model already trained on a large generic corpora and retraining it for a specific task). Such technique is popular and well-known in the NLP field. Our results confirm that fine-tuning is effective even when neural networks are applied to binaries. We show that a model, pre-trained on the aforementioned corpora, when fine-tuned has higher performances on specific domains (such as predicting names in system utilites, malware, etc).
研究の動機と目的
- 関数名が存在しないストリップドバイナリのリバースエンジニアリングの課題に対処すること。これはマルウェア解析やソフトウェア保守を妨げる。
- 動的ライブラリ呼び出しの存在や閉鎖語彙命名に依存する制限的な仮定に依存する先行研究の限界を克服すること。
- 再現可能な評価とベンチマークの実施を可能にするために、実世界のバイナリから構成される大規模かつ公開可能なデータセットを構築すること。
- seq2seqおよびトランスフォーマー・アーキテクチャを含む深層ニューラルネットワークの、関数名予測タスクへの有効性を評価すること。
- 事前学習モデルをドメイン固有のバイナリデータセットに微調整することで、予測精度がどの程度向上するかを調査すること。
提案手法
- システムユーティリティ、データベース、ゲームなど多様な分野にまたがる22,000個のソフトウェアバイナリから構成される、880万件の関数を含む大規模データセット「UbuntuDataset」を構築する。
- ソースコードの関数名を正例ラベルとして用い、seq2seqおよびトランスフォーマーの2つの深層ニューラルネットワークアーキテクチャを訓練・評価する。
- 全UbuntuDatasetで事前学習されたモデルを、より小さなドメイン固有のサブセット(例:システムユーティリティのbusybox)で微調整することで、転移学習を適用する。
- 評価指標としてBLEUとF1スコアを用い、F1スコアは予測名と正解名の間の正確な語の一致および部分一致に基づいて計算する。
- トランスフォーマー・モデルでは文脈的埋め込みとアテンションメカニズムを活用し、アセンブリレベルの関数動作における意味的・構文的パターンをよりよく捉える。
- 予測の意味的整合性と実際の関数動作との整合性を評価するため、アブレーションスタディおよび定性的分析を実施する。
実験結果
リサーチクエスチョン
- RQ1シンボリック情報が欠落しているストリップドバイナリコードから、意味的で人間らしい関数名を深層ニューラルネットワークが効果的に予測できるか?
- RQ2システムユーティリティ、マルウェア、アプリケーションライブラリなど、多様なソフトウェア分野において、モデルの性能はどのように変動するか?
- RQ3一般用途のモデルと比較して、ドメイン固有のサブセットで事前学習モデルを微調整することで、関数名予測精度はどの程度向上するか?
- RQ4F1スコアおよび予測の意味的関連性の観点から、提案モデルは既存の最先端手法と比較してどの程度優れているか?
- RQ5複数の妥当な命名規則を考慮することで、複数正解を用いたアプローチが評価の堅牢性を向上させるか?
主な発見
- トランスフォーマー・モデルは、全テストセットにおいてF1スコア0.230を達成し、seq2seqベースライン(F1スコア:0.122)を顕著に上回った。
- UbuntuDatasetで事前学習したモデルをドメイン固有のサブセット(例:busybox)で微調整したところ、coreutilsでテストした際のF1スコアが相対的に22%向上した。
- マルウェアサンプル「gonnacry」では、トランスフォーマー・モデルがF1スコア0.260を達成し、DEBIN(F1スコア:0.0825)を上回った。予測は正解と完全に一致しなくても、機能的意味をよく捉えていた。
- 暗号化/復号化関数に対して「copy file」、鍵生成関数に対して「random」といった予測は、実際の動作と意味的に整合しており、標準的な名前とは異なる場合でも妥当であった。
- この研究は、微調整がバイナリコード解析において有効であることを確認した。自然言語処理から低レベルのバイナリ関数命名へとその成功を拡張した。
- UbuntuDataset(22,000個のソフトウェアから880万件の関数を含む)の作成と公開により、バイナリ関数命名分野における再現可能なベンチマークと今後の研究が可能になった。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。