Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# ソフトウェア工学

バイナリ類似性分析技術の進展

新しい方法がソフトウェアセキュリティのバイナリ類似性分析の精度を向上させる。

― 1 分で読む


バイナリ類似性分析の改善バイナリ類似性分析の改善プ。新しい方法で実行ファイルの比較精度がアッ
目次

バイナリ類似性分析は、2つの実行可能ファイルが同じソースコードから来ているかどうかを判断する方法だ。この技術は、ソフトウェアのバグ修正、コピーされたコードの特定、マルウェアの検出など、いろんな目的にとって超重要なんだ。例えば、あるソフトウェアライブラリにセキュリティの欠陥が見つかった場合、そのライブラリを使っている全アプリに修正を適用することが必要になってくる。そうしないと、システムが安全じゃなくなるからね。

でも、異なるアプリが同じソースコードをいろいろな方法でコンパイルすることがあって、結果として異なるバイナリファイルができるんだ。この多様性が類似性分析を複雑にしてしまう。ほんの少しのコード変更でも、最終的な実行ファイルに大きな違いをもたらすことがあるからね。

現在の方法とその課題

多くの既存のバイナリ類似性分析アプローチは、バイナリの静的および動的特徴に依存している。静的分析はコードの構造を実行せずに調べるのに対し、動的分析は実行中のコードの挙動を観察するんだ。一部の高度な方法は、バイナリから収集したデータに基づいて類似性を特定するために機械学習技術を利用する。

でも、これらの方法にはしばしば課題があるんだ。従来の静的分析は、大幅に変更されたバイナリを検出するのが難しいことがある。一方で、動的分析は特に複雑なプログラムを分析する際に、すべての実行経路を十分にカバーできないことが多い。

例えば、ファジング技術はプログラムをテストするためにランダムな入力を生成するけど、すべての関数に対して有効な入力が生成されるわけではないよ。その結果、プログラムの挙動を示す重要な経路を見逃すことがある。

機械学習アプローチは通常、訓練のために知られた類似および非類似のバイナリの大きなデータセットが必要なんだ。でも、これらのモデルは必ずしも最も関連性の高い特徴を学ぶわけじゃなくて、不正確な結果をもたらすことがある。

新しい方法の提案

これらの制限を克服するために、バイナリプログラムの意味を表現する新しい方法を提案するよ。私たちのアプローチは、バイナリを事前に決めた入力で実行する際に観測可能な値を収集することに焦点を当てている。観測可能な値は、プログラムが外部世界とどのように相互作用するかを反映するもので、メモリから読まれたり書かれたりする値のことだよ。

これらの値を収集するために、私たちの方法はさまざまな入力パスをサンプリングする確率的実行エンジンを使っている。このエンジンは、異なる実行パスを効率よくナビゲートできるから、バイナリファイルの包括的な比較が可能なんだ。

主要な貢献

  1. 確率的実行モデル: バイナリの入力空間を効率的にサンプリングする新しい実行モデルを開発したよ。これにより、異なるバイナリから収集したサンプルが正確に比較できるようになった。

  2. パスサンプリングアルゴリズム: コンパイラの最適化からの変化に強い実行可能なパスをサンプリングするアルゴリズムを作った。これで、バイナリ内の類似の挙動を反映するパスを特定できるんだ。

  3. 確率的メモリモデル: 無効なメモリアクセスを処理するメモリ管理アプローチを作った。これにより、実行中に収集された観測可能な値がプログラムの挙動を正確に反映するようになった。

  4. プロトタイプ開発: 私たちの方法のプロトタイプを構築して、既存の技術に対するパフォーマンスを評価するために広範な実験を行ったよ。

実験概要

実験では、いくつかの実世界のプロジェクトに対して私たちの方法を評価し、6つの主要なベースライン技術と比較した。精度率とさまざまなシナリオでの堅牢性の詳細な比較を行った。結果は、私たちのアプローチが従来の方法を大幅に上回り、類似バイナリの特定においてより高い精度を達成したことを示しているんだ。

サンプリング技術の重要性

私たちの方法の中核的な要素の一つは、観測可能な値を収集するために使用されるサンプリング技術だ。私たちのアプローチは、プリディケートインスタンスの動的選択性に基づいてパスを選択する。動的選択性は、特定のコードの分岐が実行中にどれだけ取りうるかを測るんだ。

動的選択性の値が最も大きいものと小さいものに焦点を当てることで、私たちのアルゴリズムはプログラムの異なるバージョンにおける同等のパスを探索できる。これにより、収集された観測可能な値が比較において一貫性があり、有意義なものとなることが保障される。

メモリ管理の役割

メモリ管理は私たちの方法の重要な側面なんだ。無効なメモリアクセスは、収集されたデータにノイズをもたらし、不正確な類似性を引き起こすことがある。私たちの確率的メモリモデルは、無効なアクセスがあっても観測可能な値の順序が一貫していることを確保することで、これに対処しているよ。

このモデルはまた、さまざまなバイナリの挙動に適応することを可能にし、異なるプログラムがメモリをどう扱うかをユニークな方法でキャッチできる。これは、異なる最適化でコンパイルされたバイナリや異なるソースコードのバージョンを比較するのに必要不可欠なんだ。

効果の評価

私たちの提案した方法の効果を理解するために、異なるバイナリセットで一連のテストを行った。私たちの方法の結果を既存のアプローチと比較したんだ。

データセットの説明

実験のために、2つの主要なデータセットを使用した。1つ目は、さまざまな最適化レベルでコンパイルされた有名なソフトウェアスイートのバイナリ。2つ目は、類似性分析に一般的に使われる実世界のバイナリプロジェクトを含んでいるよ。

使用したメトリック

パフォーマンスを評価するために、精度率に注目した。特に、私たちの方法がどれだけ正しく類似したバイナリを特定できたかを分析した。また、データのノイズ量を変えて、私たちの方法がどれだけ良く機能したかも調べたんだ。

結果

私たちの結果は、私たちの方法が平均で96%以上の精度率を達成したことを示している。対照的に、従来の技術は約76%の精度率だった。無効なメモリアクセスによって導入されたノイズを処理できたことが、精度の向上に大きく貢献したんだ。

実世界の適用

実用的なケースでは、私たちの方法を使ってバイナリの脆弱性を検出した。結果は、私たちのアプローチが既存の方法に比べてほとんどの場合で正しい関数の一致を特定したことを示した。既存の方法は正確な一致を見つけるのに苦労していたからね。

アプローチの一般化

私たちの方法の別の重要な側面は、その一般化可能性だ。最初のx86-64プラットフォームを超えて、さまざまなアーキテクチャにこの技術を適用できることを示した。少ない手間で他のバイナリ形式にも適応できるんだ。

私たちの方法のスケーラビリティにより、大規模なプロジェクトを効率的に分析できる。私たちのテストでは、1秒あたり3つ以上の関数を処理し、2000以上の関数ペアを迅速に比較できることが示されたよ。

結論

バイナリ類似性分析はソフトウェアのセキュリティとメンテナンスにおいて重要なツールだ。従来の方法には、特に最適化や無効なメモリアクセスを扱う際に大きな制限がある。私たちの新しいアプローチは、確率的実行モデルと高度なサンプリング技術のおかげで、精度と堅牢性の向上を見せている。

ソフトウェアが進化し続ける中で、バイナリを正確に分析する能力はますます重要になっていくだろう。私たちの方法は、より正確で効率的なバイナリ類似性分析の道を開いて、最終的にはソフトウェアのセキュリティと整合性を高めることができるんだ。

要するに、この研究はバイナリ類似性分析における革新的なアプローチの必要性を強調していて、観測可能なプログラムの挙動に焦点を当てることで、異なるバイナリバージョン間の類似性を特定する際に大きなメリットを得られることを示しているよ。

オリジナルソース

タイトル: PEM: Representing Binary Program Semantics for Similarity Analysis via a Probabilistic Execution Model

概要: Binary similarity analysis determines if two binary executables are from the same source program. Existing techniques leverage static and dynamic program features and may utilize advanced Deep Learning techniques. Although they have demonstrated great potential, the community believes that a more effective representation of program semantics can further improve similarity analysis. In this paper, we propose a new method to represent binary program semantics. It is based on a novel probabilistic execution engine that can effectively sample the input space and the program path space of subject binaries. More importantly, it ensures that the collected samples are comparable across binaries, addressing the substantial variations of input specifications. Our evaluation on 9 real-world projects with 35k functions, and comparison with 6 state-of-the-art techniques show that PEM can achieve a precision of 96% with common settings, outperforming the baselines by 10-20%.

著者: Xiangzhe Xu, Zhou Xuan, Shiwei Feng, Siyuan Cheng, Yapeng Ye, Qingkai Shi, Guanhong Tao, Le Yu, Zhuo Zhang, Xiangyu Zhang

最終更新: 2023-08-29 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2308.15449

ソースPDF: https://arxiv.org/pdf/2308.15449

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事

システムと制御リサンプリングでアンサンブルカルマンフィルタを改善する

この研究は新しい再サンプリング技術を使ってアンサンブルカルマンフィルターを強化してるんだ。

― 0 分で読む

コンピュータビジョンとパターン認識クライアント特有のプロンプトでフェデレーテッド・ラーニングを進める

新しいアプローチは、データプライバシーを守りつつモデルのトレーニングをパーソナライズする。

― 1 分で読む