Skip to main content
QUICK REVIEW

[論文レビュー] XFL: Naming Functions in Binaries with Extreme Multi-label Learning

James Patrick-Evans, Moritz Dannehl|arXiv (Cornell University)|Jul 28, 2021
Machine Learning in Bioinformatics被引用数 4
ひとこと要約

本稿では、静的解析、コールグラフの文脈、およびグローバルなバイナリ特徴を組み合わせた新規関数埋め込み「Dexter」を活用して、ストリップドバイナリにおける関数名トークンを予測する極端な多ラベル学習フレームワークXFLを紹介する。XFLは10,047個のバイナリから成るDebianデータセットで83.5%の精度を達成し、トークンレベルのラベリングによりレアな関数名を効果的にモデル化することで、先行手法を上回っている。

ABSTRACT

Reverse engineers benefit from the presence of identifiers such as function names in a binary, but usually these are removed for release. Training a machine learning model to predict function names automatically is promising but fundamentally hard: unlike words in natural language, most function names occur only once. In this paper, we address this problem by introducing 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. We relate the semantics of binary code to labels through 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/DEXTER outperforms the state of the art in function labeling on a dataset of 10,047 binaries from the Debian project, achieving a precision of 83.5%. We also study combinations of XFL with alternative binary embeddings from the literature and show that DEXTER consistently performs best for this task. As a result, we demonstrate that binary function labeling can be effectively phrased in terms of multi-label learning, and that binary function embeddings benefit from including explicit semantic features.

研究の動機と目的

  • ソースコードやデバッグ情報が欠落しているストリップドバイナリにおける意味のある関数名の予測という課題に対処すること。
  • クラスの不均衡と無制限のラベル空間という根本的な制限により、従来の関数名モデルが稀または未学習の関数名に対して失敗する問題を克服すること。
  • 関数名を再利用可能で記述的なトークンに分解することで、未学習の関数に対しても正確な関数名の予測を可能にすること。
  • 静的解析、ローカルコールグラフの文脈、およびグローバルバイナリ構造を統合した、堅牢な関数埋め込み(Dexter)を構築すること。
  • 多ラベル学習による制御されたラベル語彙の使用が、顕著なラベル分布の不均衡を示すバイナリ関数名タスクにおいて、全名分類よりも優れた性能を発揮することを実証すること。

提案手法

  • 関数名を個々のトークンに分割(例:'make_smooth_colormap' → {make, smooth, color, map})することで、問題を多ラベル分類に変換する。
  • 低レベルの静的解析特徴(例:命令パターン、レジスタ使用状況)に加え、ローカルコールグラフの文脈とグローバルバイナリレベルの統計を統合した関数埋め込み「Dexter」を導入する。
  • Dexter埋め込みを用いて、各関数の関連するラベルトークンの集合を予測する極端な多ラベル学習(XML)モデルを訓練する。
  • 長尾分布の問題に対処するため、半教師あり学習戦略を採用し、高いスパarsityにもかかわらず、各ラベルごとに十分な訓練サンプルを確保する。
  • Debianから抽出された10,047個のストリップドバイナリから成るデータセットを用い、ラベル予測の主な指標として精度を評価する。
  • Asm2Vec、SAFE、PalmTreeなどの既存のバイナリコード埋め込みと比較し、関数名トークン予測において一貫した優位性を示す。

実験結果

リサーチクエスチョン

  • RQ1関数名をトークンに分解することで、バイナリ関数名タスクにおけるクラスの不均衡問題が軽減され、モデルの一般化性能が向上するか?
  • RQ2静的解析、ローカルコールコンテキスト、およびグローバルバイナリ構造を統合した関数埋め込みが、関数名予測のパフォーマンスにどの程度向上効果をもたらすか?
  • RQ3顕著なラベル分布の不均衡を示すバイナリにおいて、極端な多ラベル学習が従来の単一ラベル分類を上回るか?
  • RQ4関数名トークン予測の予測性能に関して、提案されたDexter埋め込みは既存のバイナリコード埋め込みと比較してどの程度優れているか?
  • RQ5訓練時に登場しなかった関数、特にユニークまたはレアな名前を持つ関数の関数名を予測する能力に、モデルは一般化できるか?

主な発見

  • XFLは10,047個のバイナリから成るDebianデータセットで83.5%の精度を達成し、関数名予測分野における最先端手法を著しく上回っている。
  • トークン化後のラベル分布は、全関数名分類と比較してはるかにバランスが取れており、長尾問題が軽減されている。
  • Dexter埋め込みは、評価されたすべてのベースラインバイナリコード埋め込み(例:Asm2Vec、SAFE、PalmTree)を予測性能において一貫して上回っている。
  • Dexterにおける静的解析特徴とローカル・グローバルコンテキストの統合により、構文のみまたは命令ベースの埋め込みよりも意味的により明確な関数表現が得られている。
  • XFLは、トレーニングセットに存在しない関数の関数名トークンを正しく予測できており、未学習の関数名への一般化能力を示している。
  • 関数構造が変更されるオブフスケーション技術に対しても、意味的および構文的特徴が十分に保持されていれば、モデルは堅牢に保たれる。

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

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

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

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