address-sanitizer は何をしますか?
AddressSanitizerは、ファジング中にメモリエラーを検出します。C/C++コードのファジング時に使用して、バッファオーバーフローや解放後使用(use-after-free)のバグを見つけてください。
概要
AddressSanitizer(ASan)は、CおよびC++プログラムにおけるメモリエラーを検出するためのコンパイラベースのツールです。このスキルは、ファジングセッション中にASanを有効にして活用する方法をガイドします。
機能
- バッファオーバーフローの検出(ヒープ、スタック、グローバル)
- 解放後使用(use-after-free)の検出
- 二重解放の検出
- スタックバッファオーバーフローの検出
- メモリリークの検出(オプション)
使用方法
- 対象のC/C++コードをAddressSanitizer付きでコンパイルします:
gcc -fsanitize=address -g -o my_program my_program.c
- ファザー(例:AFL、libFuzzer)を実行します:
afl-fuzz -i input_dir -o output_dir ./my_program
- AddressSanitizerがエラーを検出すると、詳細なエラーレポートが生成されます。
注意事項
- AddressSanitizerは実行時オーバーヘッドを追加します(通常2倍程度)。
- すべてのメモリエラーを検出できるわけではありません。
- 特定のプラットフォームやコンパイラバージョンで制限がある場合があります。