Как заставить afl-fuzz не пропускать тестовые случаи при достижении тайм-аута - PullRequest
0 голосов
/ 29 ноября 2018

В настоящее время я пытаюсь распознать средство просмотра PDF с помощью фаззера AFL (American Fuzzy Lop).

Моя проблема довольно проста, afl-fuzz ожидаю, что приложение примет ввод и закроет его после обработки.Но программа просмотра PDF предназначена для открытия документа и его открытия до закрытия.В результате afl-fuzz достигает тайм-аута для всех начальных входов и решает остановиться здесь.

...
[*] Validating target binary...
[*] Attempting dry run with 'id:000000,orig:myPDFsample00.pdf'...
[*] Spinning up the fork server...
[+] All right - fork server is up.
[!] WARNING: Test case results in a timeout (skipping)
[*] Attempting dry run with 'id:000001,orig:myPDFsample01.pdf'...
[!] WARNING: Test case results in a timeout (skipping)
[*] Attempting dry run with 'id:000002,orig:myPDFsample02.pdf'...

[-] PROGRAM ABORT : All test cases time out, giving up!
         Location : perform_dry_run(), afl-fuzz.c:2883

Я хотел бы знать, как сообщить AFL, что достижение тайм-аута и завершение программы«нормальное» поведение для контрольного примера.

1 Ответ

0 голосов
/ 25 февраля 2019

На самом деле, обычный способ сделать это - просто прибавить код программного обеспечения, которое вы просматриваете, добавив exit(0) после анализа.

Это кажется довольно простым, но я работаю ...

Другим способом может быть изменение значения времени ожидания в программном обеспечении AFL.Но тогда он не обнаружит «зависания», когда ваша программа может войти в бесконечный цикл.

Итак, лучший способ действительно добавить exit(0) (или return 0, если вы находитесь вmain()) внутри целевого программного обеспечения сразу после завершения анализа.

...