Skip to main content
QUICK REVIEW

[論文レビュー] Chaff Bugs: Deterring Attackers by Making Software Buggier

Zhenghao Hu, Yu Hu|arXiv (Cornell University)|Aug 2, 2018
Advanced Malware Detection Techniques参考文献 16被引用数 10
ひとこと要約

この論文では、数千もの非利用可能なメモリ破損型のバグをソフトウェアに挿入することで攻撃者を妨げる、新しい防御技法「チャフバグ」を紹介する。これらのバグは自動化ツールからは利用可能に見えるが、過剰に制約された値や使用されないデータを用いることで、実際に利用不可能であることが証明可能である。この手法により、特にバグの特定(トリエージ)とエクスプロイト開発の段階で攻撃者の作業負荷が著しく増加するが、nginx や libFLAC といったクラッシュ耐性を持つシステムでは機能に影響を与えない。

ABSTRACT

Sophisticated attackers find bugs in software, evaluate their exploitability, and then create and launch exploits for bugs found to be exploitable. Most efforts to secure software attempt either to eliminate bugs or to add mitigations that make exploitation more difficult. In this paper, we introduce a new defensive technique called chaff bugs, which instead target the bug discovery and exploit creation stages of this process. Rather than eliminating bugs, we instead add large numbers of bugs that are provably (but not obviously) non-exploitable. Attackers who attempt to find and exploit bugs in software will, with high probability, find an intentionally placed non-exploitable bug and waste precious resources in trying to build a working exploit. We develop two strategies for ensuring non-exploitability and use them to automatically add thousands of non-exploitable bugs to real-world software such as nginx and libFLAC; we show that the functionality of the software is not harmed and demonstrate that our bugs look exploitable to current triage tools. We believe that chaff bugs can serve as an effective deterrent against both human attackers and automated Cyber Reasoning Systems (CRSes).

研究の動機と目的

  • エクスプロイト開発の高コストと高作業負荷を軽減するため、ソフトウェアに非利用可能なバグの数を増やすこと。
  • 任意の発見されたバグが非利用可能である確率を統計的に高めることで、攻撃者のワークフロー(特にトリエージとエクスプロイト作成)を攪乱すること。
  • 非利用可能性が攻撃者や自動トリエージツールに対して明白でないが、証明可能であるような技術を開発すること。
  • nginx や libFLAC などの実世界のソフトウェアにチャフバグを挿入するプロトタイプを通じて、実現可能性を示すこと。
  • 防御の新しい形として、攻撃者の時間を浪費する「だまし」に基づく手法を提供すること。検出や緩和に依存するのではなく、攻撃の動機を減らす。

提案手法

  • スタックおよびヒープのバッファオーバーフローを対象として、ソースコードの変更によりチャフバグを挿入する。
  • 非利用可能性を保証する2つの戦略を用いる:メモリ破損に使用される値を安全な値にのみ制約し、プログラムで使用されないデータを上書きする。
  • nginx や libFLAC などの実世界のC言語プログラムに、機能的動作に影響を与えることなく、数千個のこのようなバグを自動生成する。
  • チャフバグはコード実行を引き起こさず、クラッシュのみを引き起こすため、脅威モデル下では非利用可能であることを保証する。
  • チャフバグが !exploitable や exploitable といった既存のトリエージツールから実際に利用可能であると検出されることを検証し、攻撃者の混乱を引き起こす。
  • バイナリレベルでの適用を想定しているが、現時点のプロトタイプはソースコードが必要である。

実験結果

リサーチクエスチョン

  • RQ1実世界のソフトウェアに、機能に影響を与えることなく、大量の非利用可能なバグを挿入できるか?
  • RQ2チャフバグを、自動トリエージツールからは利用可能に見えるように見せかけつつ、実際に非利用可能であることを証明できるか?
  • RQ3チャフバグの存在により、攻撃者が本物の脆弱性を見つけて利用するための作業負荷が著しく増加するか?
  • RQ4チャフバグは人間の攻撃者と自動化されたサイバー推論システム(CRS)の両方に対して有効か?
  • RQ5生産環境用ソフトウェアにスケールしてチャフバグを挿入できるプロトタイプを構築することは可能か?

主な発見

  • チャフバグ技法により、nginx や libFLAC などの実世界のソフトウェアに、機能的動作に影響を与えることなく、数千個の非利用可能なバッファオーバーフロー型バグを挿入できた。
  • 挿入されたバグは、!exploitable や exploitable といった既存のトリエージツールから実際に利用可能であると検出された。これは、現実的で効果的なカモフラージュであることを示している。
  • 非利用可能性を保証する2つの戦略(過剰に制約された値、使用されないデータの上書き)が、コード実行が不可能であることを証明的に保証した。
  • 発見されたバグのうちどれかがチャフバグである確率が著しく高まり、攻撃者のリソース枯渇によって攻撃を阻害する。
  • この手法は既存のエクスプロイト緩和対策と互換性があり、ASLR や CFI などの防御と併用可能である。
  • 特にクラッシュ耐性を持つシステム(マイクロサービスやWebサーバー)において、チャフバグによるクラッシュが正当なユーザーには見えないため、特に効果的である。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。