[論文レビュー] Extending Source Code Pre-Trained Language Models to Summarise Decompiled Binaries
この論文では、コンパイラ最適化のさまざまなレベルで得られた214Kの逆アセンブル関数-ドキュメンテーションペアからなる新規データセットCAPYBARAを用いて、微調整されたCodeT5モデルであるBinT5を紹介する。BinT5は、逆アセンブルコード上で60.83のBLEU-4スコア、悪意のある変換を施された逆アセンブルコード上で44.21のBLEU-4スコアを達成し、識別子が削除された状態でも性能が著しく低下しないことを示しており、事前学習済みのソースコードモデルが、識別子の減少に伴う表現力の低下にもかかわらず、バイナリリバースエンジニアリングに効果的に拡張可能であることを実証している。
Reverse engineering binaries is required to understand and analyse programs for which the source code is unavailable. Decompilers can transform the largely unreadable binaries into a more readable source code-like representation. However, reverse engineering is time-consuming, much of which is taken up by labelling the functions with semantic information. While the automated summarisation of decompiled code can help Reverse Engineers understand and analyse binaries, current work mainly focuses on summarising source code, and no suitable dataset exists for this task. In this work, we extend large pre-trained language models of source code to summarise decompiled binary functions. Furthermore, we investigate the impact of input and data properties on the performance of such models. Our approach consists of two main components; the data and the model. We first build CAPYBARA, a dataset of 214K decompiled function-documentation pairs across various compiler optimisations. We extend CAPYBARA further by generating synthetic datasets and deduplicating the data. Next, we fine-tune the CodeT5 base model with CAPYBARA to create BinT5. BinT5 achieves the state-of-the-art BLEU-4 score of 60.83, 58.82, and 44.21 for summarising source, decompiled, and synthetically stripped decompiled code, respectively. This indicates that these models can be extended to decompiled binaries successfully. Finally, we found that the performance of BinT5 is not heavily dependent on the dataset size and compiler optimisation level. We recommend future research to further investigate transferring knowledge when working with less expressive input formats such as stripped binaries.
研究の動機と目的
- バイナリリバースエンジニアリングにおける重要なギャップである、逆アセンブル関数の要約に特化したデータセットとモデルの不足に対処すること。
- 特にCodeT5を対象として、事前学習済みのソースコード言語モデルを、逆アセンブルバイナリ関数の自然言語要約を生成するように拡張すること。
- 入力形式(例:逆アセンブルコード対ストリップドコード)、コンパイラ最適化、データ品質(例:重複、識別子の削除)が要約性能に与える影響を調査すること。
- 訓練および評価のためのベンチマークデータセットCAPYBARAを確立すること。
- デコンパイラの出力である表現力が低く、構文的に乏しい状態のバイナリコードに対して、ソースコードNLP技術をどのように転送できるかを検討すること。
提案手法
- 複数のコンパイラ最適化レベルで、オープンソースプロジェクトから収集した214Kの対応する逆アセンブル関数とドキュメンテーションペアを含む大規模データセットCAPYBARAを構築した。
- 実際のリバースエンジニアリングの課題を模倣するために、識別子を削除し重複を除去することで、'デミストリップド'バージョンのCAPYBARAを強化した。
- CAPYBARA上でCodeT5 baseモデルを微調整し、コード要約を目的としたシーケンス・トゥ・シーケンス変換器モデルであるBinT5を訓練した。
- 標準指標(BLEU-4、ROUGE、BERTScore)を用いてBinT5を評価し、ストリップドコードや悪意のある変換を施したコードを含む、さまざまな入力変種における性能を分析した。
- データセットのサイズ、重複レベル、コンパイラ最適化の影響に関するアブレーションスタディを実施し、モデルの頑健性とデータ効率を評価した。
- ソースコードで事前学習済みのモデルを、逆アセンブルバイナリドメインに適応させるためのトランスファー学習を用い、学習済みの意味的・構文的パターンを活用した。

実験結果
リサーチクエスチョン
- RQ1事前学習済みのソースコード言語モデルは、逆アセンブルバイナリ関数の要約に効果的に微調整可能か?
- RQ2逆アセンブルコードに識別子が存在するか否かが、コード要約モデルの性能に与える影響は何か?
- RQ3コンパイラ最適化レベルの違いが、逆アセンブルコードの品質およびその後の要約性能に与える影響は何か?
- RQ4データの重複とデータセットサイズが、バイナリコード要約の文脈においてモデルの性能に与える感受性はどの程度か?
- RQ5逆アセンブルコードで学習したモデルは、ストリップドまたは悪意のある変換を施されたバイナリコードへどの程度一般化可能か?
主な発見
- BinT5は、逆アセンブルコードで60.83の最先端のBLEU-4スコアを達成し、標準的なコード要約ベンチマークで優れた性能を示している。
- 悪意のある変換を施された逆アセンブルコードでも、BLEU-4スコアが44.21に達しており、構文的表現力が低下しても性能が著しく低下しないことが示された。
- ストリップドコードでは性能が著しく低下したが、識別子を削除した「デミストリップド」コードではBLEU-4スコアが58.82に達しており、識別子の回復がモデルの成功に不可欠であることが示された。
- 重複データに対するモデルの頑健性は高く、重複の影響は顕著ではあるが決定的ではなく、高品質なデータが量よりも重要であることを示している。
- BinT5はCAPYBARAデータセットのわずか一部を用いても効果的に微調整可能であり、データ効率が高く、リソースが限られた環境でも応用可能であることが示された。
- 本研究により、ソースコードで事前学習済みのモデルが逆アセンブルバイナリに効果的に拡張可能であることが確認され、コード要約がバイナリリバースエンジニアリングに初めて適用されたという意味を持つ。

より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。