[論文レビュー] A Cross-Architecture Instruction Embedding Model for Natural Language Processing-Inspired Binary Code Analysis
本稿では、x86 や ARM などの異なる命令セットアーキテクチャ(ISA)間で意味的類似性を捉えるクロスアーキテクチャ命令埋め込みを生成する共同学習モデルを提案する。内部アーキテクチャの文脈とクロスアーキテクチャの意味的同等性の両方を活用することで、統計的ベースラインを上回る高品質な埋め込みを実現し、クロスアーキテクチャの基本ブロック類似度比較において AUC 0.90 を達成する。
Given a closed-source program, such as most of proprietary software and viruses, binary code analysis is indispensable for many tasks, such as code plagiarism detection and malware analysis. Today, source code is very often compiled for various architectures, making cross-architecture binary code analysis increasingly important. A binary, after being disassembled, is expressed in an assembly languages. Thus, recent work starts exploring Natural Language Processing (NLP) inspired binary code analysis. In NLP, words are usually represented in high-dimensional vectors (i.e., embeddings) to facilitate further processing, which is one of the most common and critical steps in many NLP tasks. We regard instructions as words in NLP-inspired binary code analysis, and aim to represent instructions as embeddings as well. To facilitate cross-architecture binary code analysis, our goal is that similar instructions, regardless of their architectures, have embeddings close to each other. To this end, we propose a joint learning approach to generating instruction embeddings that capture not only the semantics of instructions within an architecture, but also their semantic relationships across architectures. To the best of our knowledge, this is the first work on building cross-architecture instruction embedding model. As a showcase, we apply the model to resolving one of the most fundamental problems for binary code similarity comparison---semantics-based basic block comparison, and the solution outperforms the code statistics based approach. It demonstrates that it is promising to apply the model to other cross-architecture binary code analysis tasks.
研究の動機と目的
- ソースコードが入手不可なプロプライエタリでクロスコンパイルされたバイナリを、多様な命令セットアーキテクチャ(ISA)にわたり分析する課題に対処すること。
- バイナリコードの意味的比較を妨げる、ISA間の構文的・構造的差異を克服すること。
- 異なるアーキテクチャ間で意味的類似性を保持する統一された命令表現を開発し、堅牢なクロスアーキテクチャ解析を可能にすること。
- 意味ベースの基本ブロック比較という基本的なバイナリコード類似度タスクにおける命令埋め込みの有効性を示すこと。
- 学習された不変な意味的表現により、あるISAで訓練されたモデルを別のISAに容易に転送可能にする。
提案手法
- 同じアーキテクチャ内での文脈(スライディングウインドウによる命令列の処理)と、異なるISA間での意味的同等性(x86 と ARM のバイナリから得た対応する命令ペア)の両方を同時に最適化する共同学習フレームワークを採用する。
- 同じアーキテクチャ内での文脈的隣接命令を予測するニューラルネットワークを訓練し、局所的な構文的・意味的パターンを学習する。
- x86 と ARM のバイナリから得た対応する命令ペアを用いて、異なるアーキテクチャ間で意味的に同等の命令の埋め込み間の距離を最小化するように同時に学習する。
- 各基本ブロックをその命令埋め込みの合計として表現し、ブロックレベルの比較にコサイン類似度を計算可能にする。
- 事前学習済みの命令埋め込みを活用して、文書/文の埋め込みに準拠した NLP の一般的な手法に従い、基本ブロックを文のような表現として構築する。
- 意味的に同等の命令が異なるISAからも近くにマップされる埋め込み空間を学習するため、シアンペア型アーキテクチャを適用する。
実験結果
リサーチクエスチョン
- RQ1x86 や ARM などの異なるISA間で意味的に同等の命令が近くにマップされるような統一された埋め込み空間を学習できるか?
- RQ2内部アーキテクチャの文脈とクロスアーキテクチャのアライメントを共同で学習することで、それぞれを別々に学習する場合に比べ、命令埋め込みの質がどの程度向上するか?
- RQ3学習された命令埋め込みは、基本ブロック比較のようなクロスアーキテクチャのバイナリコード類似度タスクにどの程度一般化できるか?
- RQ4従来の統計的特徴ベースのアプローチ(例:命令数、定数の数)に比べて、意味的に類似した基本ブロックを検出する能力で本モデルは優れているか?
- RQ5学習された埋め込みはどの程度アーキテクチャ間で転送可能か?あるISA(例:x86)で訓練した分類器を、別のISA(例:ARM)に直接適用できるか?
主な発見
- 提案されたクロスアーキテクチャ命令埋め込みモデルは、クロスアーキテクチャの基本ブロック類似度比較タスクにおいて AUC 0.90 を達成し、統計的ベースライン(AUC = 0.85)を顕著に上回る。
- x86 の `SUBQ RSP,0` と ARM の `SUB SP,SP,0` のような意味的に同等の命令ペアの埋め込みが近接していることから、モデルがISA間で意味的同等性を的確に捉えていることが実証された。
- 内部アーキテクチャの文脈とクロスアーキテクチャのアライメントの共同学習は、いずれの信号を個別に学習するよりも、より堅牢で一般化可能な命令埋め込みをもたらす。
- モデルの埋め込みは、アーキテクチャの違いを考慮しても意味的意味を保持するため、脆弱性検出やマルウェア分析といった後続タスクにおいて有効である。
- モデルのアーキテクチャにより、あるISA(例:x86)で訓練した分類器を、共有された意味的表現空間のおかげで、別のISA(例:ARM)に最小限の変更で直接適用可能である。
- 実装、データセット、および訓練済みモデルは GitHub で公開されており、クロスアーキテクチャバイナリ解析分野における再現性とさらなる研究を促進する。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。