Реализует фаззинг с обратной связью на основе покрытия кода (coverage-guided fuzzing). Вдохновлен libFuzzer.
- Трансформация на лету (on-the-fly transformation): Для перехвата подключения (inclusion) PHP-скриптов используется библиотека nikic/include-interceptor. Она позволяет «подменять» содержимое файлов сразу при их инклюде, не меняя исходный код на диске.
- Анализ AST и вставка трекинга: AST обрабатывается библиотекой nikic/PHP-Parser. При парсинге каждого файла фреймворк находит базовые блоки — участки, которые выполняются последовательно без разветвлений. В каждый такой блок вставляется код, который считает количество срабатываний этого перехода.
- Error exceptions, брошенные тестируемым кодом
Неперехваченные
Error(в отличие от обычныхException) расцениваются как программная ошибка — например, попытка вызвать метод наnullприводит кError. - Не подавленные нотификации и варнинги
Фаззер регистрирует свой обработчик ошибок, который превращает PHP-нотификации и ворнинги в
Error. Таким образом, если библиотека генерирует предупреждение, которое обычно просто писалось бы вstderr, фаззер «лихорадит» и останавливает выполнение, фиксируя фичи, приведшие к предупреждению. - Таймауты Если таргет обрабатывает вход слишком долго (по умолчанию 3 секунды), считается, что он завис в каком-то бесконечном цикле.
- Coverage-guided фаззинг
- Автоматическая минимизация краша (убирает лишние куски, следя за тем, чтобы вход всё ещё вызывал тот же
Error) - Генерация отчёта о покрытии в HTML
- Поддержка словарей
- Запуск одного входа для отладки и просмотра стека
PHUZZ — фреймворк для автоматизированного тестирования безопасности PHP-приложений. Главная цель — обнаружить широкий спектр уязвимостей (SQL Injection, Command Injection, Insecure Deserialization, Path Traversal, XXE, XSS, Open Redirection и др.) путём динамического генерирования HTTP-запросов и мониторинга их исполнения с учётом покрытия кода.
- Перехват функций через UOPZ-хуки (без изменения исходников или PHP-интерпретатора)
- Подмена аутентификации/авторизации для расширенного покрытия
- Сбор покрытия и перехват исключений на лету
- Grey-box: фокус на покрытии кода
- Лёгкое расширение новыми Detection-модулями
FlowFusion — это автоматизированный фреймворк для фаззинга интерпретатора PHP, ориентированный на выявление ошибок управления памятью, таких как переполнения буфера, use-after-free и утечки памяти. Использует подход, основанный на слиянии потоков данных из существующих тестов. Вместо генерации случайных входных данных или использования грамматик, инструмент объединяет два или более существующих теста, создавая новые тесты с более сложной семантикой.