Promt-Hub
AI-инструменты и MCP

GitHub Security Lab представила автономный инструмент для фаззинга на базе LLM

Новый инструмент GitHub Security Lab автоматизирует рутинные задачи фаззинга с помощью LLM-агентов. Система самостоятельно анализирует код, пишет хансеры, отслеживает покрытие и генерирует отчеты об уязвимостях, сокращая необходимость ручного вмешательств

GitHub Security Lab представила автономный инструмент для фаззинга на базе LLM
Лид

GitHub Security Lab выпустила Fuzzing Taskflow — автономный пайплайн для фаззинга C/C++ проектов, использующий LLM-агентов для написания хансеров, анализа покрытия и триажинга уязвимостей.

Кратко

Главные тезисы

  • Fuzzing Taskflow — автономный пайплайн для фаззинга C/C++ проектов на базе LLM-агентов.
  • Система самостоятельно пишет хансеры, анализирует покрытие и триажит краши без участия человека.
  • Используется модель Claude Sonnet 5 по умолчанию.
  • Архитектура разделяет ответственность: агент принимает решения, MCP-инструменты выполняют действия.
  • Рекомендуется запускать в изолированной среде (Codespace или VM) из-за выполнения произвольных команд.

Автоматизация фаззинга с помощью LLM

GitHub Security Lab представила Fuzzing Taskflow, автономный пайплайн для фаззинга проектов на C/C++. Инструмент предназначен для автоматизации процессов, которые ранее требовали постоянного участия человека: анализа покрытия кода, написания новых хансеров для неохваченных участков и триажинга найденных крашей.

Система работает на базе GitHub Security Lab Taskflow Agent. Пользователю достаточно указать ссылку на репозиторий GitHub, после чего агент самостоятельно выполняет следующие шаги:

  • Определяет подходящие точки входа в код.
  • Анализирует систему сборки.
  • Пишет хансеры (harnesses).
  • Запускает AFL++ и читает отчеты о покрытии.
  • Улучшает хансеры на основе полученных данных.
  • Триажит каждый краш и формирует отчет об уязвимости.

Архитектура и разделение ответственности

Архитектура Fuzzing Taskflow построена на четком разделении ответственности между агентом и инструментами:

  1. Shell-драйвер (run_fuzzing.sh) связывает этапы пайплайна.
  2. Taskflow YAML содержат промпты, определяющие действия агента на каждом шаге.
  3. MCP-инструменты выполняют фактическую работу: запуск AFL, компиляцию хансеров, сохранение крашей и чтение отчетов о покрытии.

Агент принимает решения о том, что фаззить, какой ханшер писать и какие пробелы в покрытии устранять. Инструменты же предоставляют только примитивы выполнения, такие как run_afl_for или compile_harness. Агент никогда не вызывает AFL или clang напрямую, а собирает пайплайн из этих блоков. Все состояние хранится в базе данных SQLite (fuzz_context.db), что исключает передачу данных между этапами через память.

Механизмы повышения покрытия

Цикл обратной связи по покрытию является ключевым элементом системы. Агент анализирует отчеты о покрытии и выбирает одно из действий: добавление нового сидa, редактирование исходного кода ханшера, обогащение словаря AFL или пропуск холодных путей кода.

Для работы с структурированными данными Fuzzing Taskflow использует четыре механизма:

  • Словари и мутаторы для конкретных форматов: для JSON, XML, регулярных выражений и бинарных форматов с префиксом длины.
  • Словарь на уровне исходного кода: генерируется автоматически путем сканирования файлов .c/.h на наличие строковых литералов и числовых констант.
  • Динамическое обогащение словаря: на основе анализа непокрытых строк кога в словарь добавляются новые токены, найденные в условиях сравнения.
  • Оператор слияния корпуса: позволяет мутатору загружать файлы из корпуса и объединять их случайные фрагменты.

Время выполнения каждого итерационного цикла удваивается: 30s, 60s, 120s, 240s, 480s, 960s. Цикл останавливается при обнаружении плато: если два последовательных итерации дают прирост покрытия менее 1%, система переходит к следующему этапу.

Триажинг и отчетность

После завершения фаззинга система автоматически минимизирует краши с помощью afl-tmin, воспроизводит их под ASan и дедуплицирует по хешу вершины стека. Агент анализирует исходный код ханшера и вызывающую функцию, чтобы определить причину краша.

Для каждого инцидента генерируется отчет с одним из следующих вердиктов:

  • vulnerability (уязвимость)
  • library_hardening (необходимость усиления библиотеки)
  • harness_bug (ошибка в самом ханшере)
  • oom (нехватка памяти)
  • timeout (таймаут)
  • assertion_failure (ошибка утверждения)
  • duplicate (дубликат)

Отчет включает анализ первопричины, аргумент о достижимости, оценку эксплуатационной возможности, предлагаемый патч в виде unified diff и эскиз регрессионного теста. Авторы отмечают, что предлагаемые патчи требуют обязательной проверки человеком, так как анализ ограничен пониманием модели.

Запуск и безопасность

По умолчанию для работы используется модель Claude Sonnet 5. Инструмент запускается через скрипт run_fuzzing.sh, принимающий в качестве аргумента slug репозитория GitHub.

Важное предупреждение по безопасности: taskflow запускает afl-fuzz, clang и произвольные команды сборки непосредственно на хосте без контейнеризации. Агент может выполнить любые команды, доступные пользователю. Рекомендуется запускать инструмент только в изолированной среде (например, Codespace или временной VM) без привилегий root.

Для мониторинга процесса запускается локальный HTML-дашборд на порту 8765, отображающий пульсацию работы, тренды покрытия, тепловые карты крашей и временную шкалу итераций.

Источники
Был ли материал полезен?

Поделитесь в социальных сетях

Подпишись на нас в

Следите за новыми материалами, обновлениями каталога и полезными находками в наших соцсетях.

Комментарии

0 комментариев

Хотите принять участие в обсуждении, оставить комментарий или поделиться своим мнением? Зарегистрируйтесь или войдите в аккаунт.

Пока никто не оставил комментарий. Будьте первым.

Что почитать дальше

Все материалы