Skip to content

Latest commit

 

History

History
executable file
·
50 lines (35 loc) · 4.93 KB

File metadata and controls

executable file
·
50 lines (35 loc) · 4.93 KB

PHP testing tools review

Реализует фаззинг с обратной связью на основе покрытия кода (coverage-guided fuzzing). Вдохновлен libFuzzer.

Инструментация

  1. Трансформация на лету (on-the-fly transformation): Для перехвата подключения (inclusion) PHP-скриптов используется библиотека nikic/include-interceptor. Она позволяет «подменять» содержимое файлов сразу при их инклюде, не меняя исходный код на диске.
  2. Анализ AST и вставка трекинга: AST обрабатывается библиотекой nikic/PHP-Parser. При парсинге каждого файла фреймворк находит базовые блоки — участки, которые выполняются последовательно без разветвлений. В каждый такой блок вставляется код, который считает количество срабатываний этого перехода.

Что считает багом

  1. Error exceptions, брошенные тестируемым кодом Неперехваченные Error (в отличие от обычных Exception) расцениваются как программная ошибка — например, попытка вызвать метод на null приводит к Error.
  2. Не подавленные нотификации и варнинги Фаззер регистрирует свой обработчик ошибок, который превращает PHP-нотификации и ворнинги в Error. Таким образом, если библиотека генерирует предупреждение, которое обычно просто писалось бы в stderr, фаззер «лихорадит» и останавливает выполнение, фиксируя фичи, приведшие к предупреждению.
  3. Таймауты Если таргет обрабатывает вход слишком долго (по умолчанию 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 и утечки памяти. Использует подход, основанный на слиянии потоков данных из существующих тестов. Вместо генерации случайных входных данных или использования грамматик, инструмент объединяет два или более существующих теста, создавая новые тесты с более сложной семантикой.