Skip to main content
QUICK REVIEW

[論文レビュー] XFL: eXtreme Function Labeling

James Patrick-Evans, Moritz Dannehl|arXiv (Cornell University)|Jul 28, 2021
Software Engineering Research参考文献 33被引用数 7
ひとこと要約

本稿では、関数名の各トークンをラベルとして扱うことで、バイナリコードにおける関数名の予測を目的とした極端な多ラベル学習フレームワークXFLを提案する。DEXTERと呼ばれる関数埋め込み手法を導入し、静的解析特徴とローカルおよびグローバルなコードコンテキストを統合することで、10,000個のバイナリから構成されるデータセットで82.5%の精度を達成し、最先端の手法を上回った。

ABSTRACT

Reverse engineers would benefit from identifiers like function names, but these are usually unavailable in binaries. Training a machine learning model to predict function names automatically is promising but fundamentally hard due to the enormous number of classes. In this paper, we introduce eXtreme Function Labeling (XFL), an extreme multi-label learning approach to selecting appropriate labels for binary functions. XFL splits function names into tokens, treating each as an informative label akin to the problem of tagging texts in natural language. To capture the semantics of binary code, we introduce DEXTER, a novel function embedding that combines static analysis-based features with local context from the call graph and global context from the entire binary. We demonstrate that XFL outperforms state-of-the-art approaches to function labeling on a dataset of over 10,000 binaries from the Debian project, achieving a precision of 82.5%. We also study combinations of XFL with different published embeddings for binary functions and show that DEXTER consistently improves over the state of the art in information gain. As a result, we are able to show that binary function labeling is best phrased in terms of multi-label learning, and that binary function embeddings benefit from moving beyond just learning from syntax.

研究の動機と目的

  • 関数名の識別子が通常欠落しているバイナリにおいて、意味のある関数名を予測する課題に対処すること。
  • 関数名付けにおける極端なクラス不均衡を解消するため、それを多ラベル学習問題として定式化すること。
  • ローカル(コールグラフ)およびグローバル(全体のバイナリ)コードコンテキストを組み込むことで、関数埋め込みの品質を向上させること。
  • リバースエンジニアリングにおける関数ラベル付けにおいて、多ラベル学習が単一ラベルアプローチよりも効果的であることを示すこと。
  • DEXTER埋め込みが、さまざまなバイナリ関数埋め込みベースラインにおいて一貫して性能を向上させることを示すこと。

提案手法

  • XFLは、関数名の各単語を個別のラベルとして扱い、関数名付けを多ラベル分類タスクに変換する。
  • DEXTERは、静的解析特徴とコールグラフからのローカルコンテキスト、および全体のバイナリからのグローバルコンテキストを統合して関数埋め込みを生成する。
  • モデルは、コード構造と関係性から意味的意味を捉える表現を学習するための深層ニューラルネットワークを用いる。
  • ラベル予測は、名前の各トークンに対して確率を出力する多ラベル分類ヘッドを用いて実施される。
  • フレームワークは、Debianプロジェクトの10,000個のバイナリからなる大規模データセット上でエンドツーエンドに訓練される。
  • 性能評価には、k=1における精度(precision at k)と、ラベル品質を測るための情報ゲインが用いられる。

実験結果

リサーチクエスチョン

  • RQ1バイナリにおける関数名付けを、極端な多ラベル学習問題として効果的にモデル化できるか?
  • RQ2ローカルおよびグローバルなコードコンテキストを組み込むことで、名前予測のための関数埋め込み品質はどのように向上するか?
  • RQ3DEXTERは、既存の関数埋め込み手法よりも、意味のある関数名トークンの予測において優れているか?
  • RQ4多ラベル学習は、単一ラベルアプローチと比較して、関数ラベル付けの正確性をどの程度向上させるか?
  • RQ5DEXTER埋め込みは、さまざまなバイナリ解析タスクおよびデータセットに一般化可能か?

主な発見

  • XFLはDebianバイナリデータセットで82.5%の精度を達成し、最先端の手法を顕著に上回った。
  • DEXTER埋め込みは、複数のベースライン関数埋め込みにおいて一貫して情報ゲインを向上させ、その頑健性と有効性を示した。
  • グローバルなバイナリコンテキストの統合により、関数表現が向上し、構文やローカルコンテキストのみを用いたモデルよりも優れたラベル予測が得られた。
  • 多ラベル学習の定式化により、単一ラベル代替手法と比較して、より正確で意味的に整合性のある関数名予測が可能になった。
  • トークンレベルのラベルの使用により、モデルは高精度で複雑な複数語関数名を予測できるようになった。
  • 結果から、関数ラベル付けは多ラベル問題として扱うのが最適であり、構文的特徴を超えて意味的意味を捉える必要があることが示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。