AFLTriageはデバッガを使用してクラッシュする入力ファイルをトリアージするツールです。 移植性が高く、libcと外部デバッガ以外の実行時依存関係を必要としないように設計されています。 AFLに限らず任意のプログラムによって生成されたクラッシュのトリアージをサポートしますが、特にAFLディレクトリを認識するため、この名前が付けられています。
注目すべき機能は次のとおりです。
現在、AFLTriageはGDBのみをサポートしており、Linux C/C++ターゲットでのみテストされています。 AFLTriageは潜在的な悪用可能性によってクラッシュを分類しないことに注意してください。正確な悪用可能性の分類はターゲットとシナリオに非常に依存しており、専門のツールと経験豊富なアナリストに任せるのが最善です。
AFLTriageの使い方は非常に簡単です。トリアージする入力、レポート用の出力ディレクトリ、およびトリアージするバイナリとその引数が必要です。
例:
$ afltriage -i fuzzing_directory -o reports ./target_binary --option-one @@
AFLTriage v1.0.0
[+] GDB is working (GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1 - Python 3.6.9 (default, Jan 26 2021, 15:33:00))
[+] Image triage cmdline: "./target_binary --option-one @@"
[+] Reports will be output to directory "reports"
[+] Triaging AFL directory fuzzing_directory/ (41 files)
[+] Triaging 41 testcases
[+] Using 24 threads to triage
[+] Triaging [41/41 00:00:02] [####################] CRASH: ASAN detected heap-buffer-overflow in buggy_function after a READ leading to SIGABRT (si_signo=6) / SI_TKILL (si_code=-6)
[+] Triage stats [Crashes: 25 (unique 12), No crash: 16, Errored: 0]
AFLと同様に、@@はトリアージするファイルのパスに置き換えられます。AFLTriageが残りの処理を行います。
動作するRustビルド環境が必要です。cargoとrustがインストールされていれば、ビルドと実行は簡単です。
cd afltriage-rs/
cargo run --help
<compilation>
Finished dev [unoptimized + debuginfo] target(s) in 0.33s
Running `target/debug/afltriage --help`
<AFLTriage usage>
...
afltriage 1.0.0
Quickly triage and summarize crashing testcases
USAGE:
afltriage -i <input>... -o <output> <command>...
OPTIONS:
-i <input>...
A list of paths to a testcase, directory of testcases, AFL directory, and/or directory of AFL directories to
be triaged. Note that this arg takes multiple inputs in a row (e.g. -i input1 input2...) so it cannot be the
last argument passed to AFLTriage -- this is reserved for the command.
-o <output>
The output directory for triage report files. Use '-' to print entire reports to console.
-t, --timeout <timeout>
The timeout in milliseconds for each testcase to triage. [default: 60000]
-j, --jobs <jobs>
How many threads to use during triage.
--report-formats <report_formats>...
The triage report output formats. Multiple values allowed: e.g. text,json. [default: text] [possible
values: text, json, rawjson]
--bucket-strategy <bucket_strategy>
The crash deduplication strategy to use. [default: afltriage] [possible values: none, afltriage,
first_frame, first_frame_raw, first_5_frames, function_names, first_function_name]
--child-output
Include child output in triage reports.
--child-output-lines <child_output_lines>
How many lines of program output from the target to include in reports. Use 0 to mean unlimited lines (not
recommended). [default: 25]
--stdin
Provide testcase input to the target via stdin instead of a file.
--profile-only
Perform environment checks, describe the inputs to be triaged, and profile the target binary.
--skip-profile
Skip target profiling before input processing.
--debug
Enable low-level debugging output of triage operations.
-h, --help
Prints help information
-V, --version
Prints version information
ARGS:
<command>...
The binary executable and args to execute. Use '@@' as a placeholder for the path to the input file or
--stdin. Optionally use -- to delimit the start of the command.
AFLTriageはBSD 3-Clause "New" または "Revised" ライセンスの下で提供されています。詳細はLICENSEを参照してください。