VEXIR2Vec: An Architecture-Neutral Embedding Framework for Binary Similarity

要約

バイナリの類似性には、2 つのバイナリ プログラムが同様の機能を示しているかどうかを判断することが含まれます (多くの場合、同じソース コードに由来します)。
この研究では、アーキテクチャ中立的な中間表現 (IR) である VEX-IR を使用したバイナリ類似性のアプローチである VexIR2Vec を提案します。
制御フロー グラフ上のランダム ウォークによって導出された、のぞき穴と呼ばれる基本ブロックのシーケンスから埋め込みを抽出します。
のぞき穴は、コンパイラの最適化に基づいた変換を使用して正規化されます。
VEX-IR 正規化エンジンは、これらの変換により、セマンティックな類似性を明らかにしながら、バイナリのアーキテクチャおよびコンパイラに起因する変動を軽減します。
次に、教師なしの方法でナレッジ グラフ埋め込み技術を使用して、IR のエンティティ レベルで表現の語彙を学習します。
この語彙は、VexNet を使用して類似性評価のための関数埋め込みを導出するために使用されます。VexNet は、n 次元空間で類似した関数を近くに配置し、異なる関数を分離するように設計されたフィードフォワード シャム ネットワークです。
このアプローチは、差分タスクと検索タスクの両方に適しており、語彙外 (OOV) 問題に対する堅牢性が保証されます。
x86 および ARM アーキテクチャをターゲットとする 12 のコンパイラでコンパイルされた 7 つのプロジェクトからの 270 万の関数と 1550 のバイナリで構成されるデータセットで VexIR2Vec を評価します。
差分実験では、VexIR2Vec は、クロス最適化、クロスコンパイル、クロスアーキテクチャ、難読化設定において、最も近いベースラインよりもそれぞれ $40\%$、$18\%$、$21\%$、$60\%$ 優れています。
検索実験では、VexIR2Vec は $0.76$ の平均精度を達成し、最も近いベースラインを $46\%$ 上回りました。
私たちのフレームワークは拡張性が高く、オープンソース ツールのみを使用して軽量のマルチスレッド並列ライブラリとして構築されています。
VexIR2Vec は、最も近いベースラインより $3.1$ ~ $3.5 \倍$ 速く、他のツールよりも桁違いに高速です。

要約(オリジナル)

Binary similarity involves determining whether two binary programs exhibit similar functionality, often originating from the same source code. In this work, we propose VexIR2Vec, an approach for binary similarity using VEX-IR, an architecture-neutral Intermediate Representation (IR). We extract the embeddings from sequences of basic blocks, termed peepholes, derived by random walks on the control-flow graph. The peepholes are normalized using transformations inspired by compiler optimizations. The VEX-IR Normalization Engine mitigates, with these transformations, the architectural and compiler-induced variations in binaries while exposing semantic similarities. We then learn the vocabulary of representations at the entity level of the IR using the knowledge graph embedding techniques in an unsupervised manner. This vocabulary is used to derive function embeddings for similarity assessment using VexNet, a feed-forward Siamese network designed to position similar functions closely and separate dissimilar ones in an n-dimensional space. This approach is amenable for both diffing and searching tasks, ensuring robustness against Out-Of-Vocabulary (OOV) issues. We evaluate VexIR2Vec on a dataset comprising 2.7M functions and 15.5K binaries from 7 projects compiled across 12 compilers targeting x86 and ARM architectures. In diffing experiments, VexIR2Vec outperforms the nearest baselines by $40\%$, $18\%$, $21\%$, and $60\%$ in cross-optimization, cross-compilation, cross-architecture, and obfuscation settings, respectively. In the searching experiment, VexIR2Vec achieves a mean average precision of $0.76$, outperforming the nearest baseline by $46\%$. Our framework is highly scalable and is built as a lightweight, multi-threaded, parallel library using only open-source tools. VexIR2Vec is $3.1$-$3.5 \times$ faster than the closest baselines and orders-of-magnitude faster than other tools.

arxiv情報

著者 S. VenkataKeerthy,Soumya Banerjee,Sayan Dey,Yashas Andaluri,Raghul PS,Subrahmanyam Kalyanasundaram,Fernando Magno Quintão Pereira,Ramakrishna Upadrasta
発行日 2024-07-09 17:38:42+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.CR, cs.LG, cs.PL パーマリンク