PeAR: A Static Binary Rewriting Framework for Binary-Only Fuzzing
本論文は、静的インストルメンテーションがバイナリのみのファジングにおいて動的インストルメンテーションに代わる実用的かつ効果的な選択肢であることを示す静的バイナリ書き換えフレームワークであるPeARを導入しており、高いターゲット互換性、持続モードによる大幅な性能向上、およびコンパイラベースの手法に匹敵するカバレッジを実現している。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
あなたは、鍵のかかった謎めいた建物(あるソフトウェア)の中に隠された罠を見つけ出そうとしている警備員だと想像してください。あなたは設計図(ソースコード)を見ることができないため、ドアや壁に何千もの異なる物体を投げつけて、何が壊れるかを見ることで、どこに罠があるかを推測しなければなりません。このプロセスは**ファジング(fuzzing)**と呼ばれます。
新しいテスト箇所を見つけたかどうかを知るためには、すでに訪れた建物のどの部分を通過したかを追跡する方法が必要です。通常は、建築家(コンパイラ)が、あなたの歩数を数えるための小さなセンサー(インストルメンテーション)を設置します。しかし、あなたには設計図がないため、建物が完成した後に、自分でこれらのセンサーを設置しなければなりません。
これには主に2つの方法があります:
- 「ライブ」方式(動的): 建物の内部に作業員チームを雇い、あなたが物体を投げている間、彼らに中を見守らせ、記録させます。これは非常に正確ですが、作業員が動きを遅くし、邪魔になるため、プロセス全体が大幅に遅くなります。
- 「プレゲーム」方式(静的): 建物が開館する前に忍び込み、壁を改造してセンサーを組み込み、その後、建物を施錠します。センサーが建物自体の一部となるため、これは非常に高速です。しかし、リスクも伴います。もし壁の構造を読み間違えると、建物を壊してしまうか、あるいは罠を見逃してしまう可能性があります。
長い間、人々は「ライブ」方式こそが唯一の安全な選択肢だと考えてきました。なぜなら、「プレゲーム」方式はあまりにも不器用で間違いやすいと考えられていたからです。
PeAR:熟練のリノベーション業者
この論文の著者たちは、PeARと呼ばれる新しいツールを開発しました。PeARを、完成した建物に忍び込み、正確に壁の構造を把握し、何も壊すことなくハイテクなセンサーを設置できる、非常にスキルの高い自動リノベーション隊だと考えてください。
彼らは、「プレゲーム」方式が単なる危険な賭けではなく、もっと優れた、より高速な方法であることを証明したいと考えていました。
何がPeARを特別にしているのか?
以前の多くのリノベーション隊(古いツール)は、基本的なセンサーしか設置できませんでした。彼らは、セキュリティガードが作業を速めるために使う高度なテクニックには対応できなかったのです。しかし、PeARは新しい信頼できる地図作成システム(GTIRBと呼ばれるもの)に基づいて構築されており、以下の3つの高度なトリックを可能にします。
「リセットなし」のループ(持続モード / Persistent Mode):
- 古いやり方: 物体を投げるたびに、作業員があなたを外へ追い出し、ドアを再構築し、再び中に入れる必要があります。これでは時間がかかりすぎます。
- PeARのやり方: PeARは特別な廊下を設置します。そこでは、一度も建物から出ることなく、連続して1,000個の物体を投げることができます。部屋をリセットするだけで済むのです。これにより、プロセスは驚異的に速くなります。
「セットアップをスキップ」するトリック(遅延初期化 / Deferred Initialization):
- 古いやり方: 一部の建物では、物体を投げ始める前に、入り口で長い退屈なセキュリティチェック(ライブラリのロードや設定の確認など)があります。
- PeARのやり方: PeARは建物を切り開き、その退屈なセットアップが終わった後に、物体を投げ始められるようにします。毎回、待ち行列をスキップできるのです。
「テレパシーによる受け渡し」(共有メモリファジング / Shared Memory Fuzzing):
- 古いやり方: あなたは石について書いた紙を書き、郵便受けまで歩いて行き、それを入れなければなりません。そして建物はその郵便受けを開けて読む必要があります。これは遅いです。
- PeARのやり方: PeARは、あなたの手と建物の手の間に直接のチューブを設置します。あなたは物体を直接、空気中を介して渡します。紙も、郵便受けも、待ち時間もありません。
大規模なテスト
著者たちは、FuzzBenchという有名な障害物コース(25種類の複雑なソフトウェアプログラムを含む)を用いて、PeARを他のツールと比較検証しました。彼らは、膨大な時間(連続したコンピュータ処理で4.25年分に相当)にわたってテストを実行しました。
結果は以下の通りです:
- 信頼性: PeARは25の建物のうち22個の改造に成功しました。これは他の優れた「プレゲーム」ツールと同等の性能であり、センサーを設置するために建物を壊す必要はないことを証明しています。
- 速度: PeARがこれらの高度なトリック(「リセットなし」ループと「テレパシーによる受け渡し」)を使用したとき、基本バージョンよりも4倍速くなりました。他のどの「プレゲーム」ツールよりも大幅に高速でした。
- 正確性: 高速化したにもかかわらず、PeARは見逃した罠はありませんでした。遅い「ライブ」方式のツールや、設計図を使用するツールと同じだけの隠れた経路(コードカバレッジ)を発見しました。
結論
この論文は、「プレゲーム」方式(静的バイナリ・インストルメンテーション)は、もはやリスクが高く、遅く、不正確な選択肢ではないと結論付けています。PeARのような適切なツールがあれば、設計図がなくても、迅速かつ正確にクローズドなソフトウェアのバグを見つけるために、ソフトウェアを修正することができます。PeARは、リノベーション隊のスピードと、ライブ観測者の精密さを両立できることを証明したのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。