Зависимости и установка Sydr-fuzz
- Зависимости и установка Sydr-fuzz
- Минимальные системные требования
- Рекомендуемые системные требования
- Зависимости
- Установка
- Использование sydr-fuzz
Минимальные системные требования
- Операционная система: Ubuntu 18.04/20.04/22.04, Astra 1.7, ALT Workstation 10.0 и аналоги - 64-bit.
- Процессор (CPU): Intel Core i3 или аналогичный AMD.
- Оперативная память (RAM): 4 ГБ.
Рекомендуемые системные требования
- Операционная система: Ubuntu 18.04/20.04/22.04 - 64-bit.
- Процессор (CPU): Intel Core i7 (Desktop) или аналогичный AMD.
- Оперативная память (RAM): 32 ГБ и больше.
Зависимости
Перед установкой инструмента установите следующие зависимости.
$ sudo apt install gcc-multilib binutils lsb-release gdb lcov
Для корректной работы лицензионного USB ключа требуется установить последнюю версию Sentinel HASP/LDK Run-time Environment (перед установкой желательно вынуть USB ключ, и вставить его назад по завершении установки):
$ tar xf aksusbd*.tar.gz
$ cd aksusbd*
$ sudo ./dinst
Для работы лицензионного ключа на Astra Linux требуется разрешить трассировку ptrace: Пуск -> Панель управления -> Безопасность -> Политика безопасности -> Настройка безопасности -> Системные параметры -> Снять галочку с “Блокировать трассировку ptrace для всех пользователей”.
Установка
Для установки достаточно распаковать zip-архив.
$ unzip sydr.zip
Использование sydr-fuzz
Рекомендуется воспользоваться нашим докером sydr/ubuntu20.04-sydr-fuzz
.
Докер можно выкачать с помощью команды:
$ docker pull sydr/ubuntu20.04-sydr-fuzz
DockerFile
можно найти тут.
Затем запускать гибридный фаззинг внутри него. Дальнейшая документация
основывается на использовании нашего докера. Далее перечислены зависимости,
которые нужно установить, если запуск производится на другой системе.
Зависимости libFuzzer
Sydr-fuzz можно запускать просто на системе (требуется LLVM 13+). Однако настоятельно рекомендуем установить Docker для сборки и запуска фаззинга целей в изолированном окружении.
Для корректного ранжирования входных данных, подающихся от libFuzzer к Sydr, требуется сборка LLVM, содержащая добавленный нами коммит. Данные изменения добавляют печать входных данных от Sydr, которые увеличивают покрытие кода с точки зрения фаззера. Эта функциональность присутствует с релиза LLVM 13.0.0. Более ранние версии LLVM также поддерживаются, но ранжирование не будет эффективным.
Зависимости AFL++
Фаззер AFL++ и все необходимые утилиты уже установлены в нашем докере
sydr/ubuntu20.04-sydr-fuzz
. При запуске на другой системе потребуется
скачать и установить AFL++ (можно из репозитория).
AFL++ активно разрабатывается, поэтому желательно использовать наиболее новую версию.
Для запуска Sydr-fuzz с AFL++ также необходимы утилиты минимизации корпуса afl-cmin
и построения битовой карты afl-showmap
. Вместе с фаззером afl-fuzz они должны находиться
в одной директории, путь до которой либо есть в $PATH
, либо указан в конфигурационном файле.
Зависимости Atheris
Библиотека фаззинга Atheris и все необходимые утилиты уже установлены в нашем докере
sydr/ubuntu20.04-sydr-fuzz
. При запуске на другой системе потребуется скачать
и установить Atheris (можно из репозитория).
Для работы sydr-fuzz с Atheris также необходима библиотека сбора покрытия
Coverage.
Зависимости Jazzer
Фаззер Jazzer и все необходимые утилиты уже установлены в нашем докере
sydr/ubuntu20.04-sydr-fuzz
. При запуске на другой системе потребуется скачать
и установить Jazzer (можно из репозитория).
Для сбора покрытия понадобится библиотека Jacoco.
Зависимости Jazzer.js
Фаззер Jazzer.js и все необходимые утилиты уже установлены в нашем докере
sydr/ubuntu20.04-sydr-fuzz
. При запуске на другой системе потребуется скачать
и установить Jazzer.js (можно из репозитория).
Зависимости Sharpfuzz
Фаззер Sharpfuzz и все необходимые утилиты уже установлены в нашем докере
sydr/ubuntu20.04-sydr-fuzz
. При запуске на другой системе потребуется скачать
Sharpfuzz (можно из репозитория),
AFL++ (можно из репозитория),
для сборки и запуска C# програм понадобится скачать .NET SDK (можно с сайта).
Для сбора покрытия в форматах html, clover, coveralls, xml, opencover, cobertura, text
понадобится инструмент minicover
(скачать можно по гайдам из репозитория).
Для сбора покрытия в форматах html (с помощью genhtml) или lcov
понадобится инструмент AltCover
(скачать можно по гайдам из репозитория).