GitHub Security Lab представила Fuzzing Taskflow — агентный конвейер для поиска уязвимостей в C/C++ проектах. Вдохновляйся и делай для других ЯП 🐍!
И так, что там к чему 😴
Даёшь агенту ссылку на репозиторий. Он выбирает, что проверять, пишет небольшой код для подачи тестовых данных и запускает фаззер AFL++. Потом смотрит, какие участки программы удалось проверить.
Если до какой-то ветки фаззер не добрался, агент меняет тестовый код или подбирает новые данные. И пробует снова:
запуск ➡️ проверка покрытия ➡️ новые входные данные ➡️ новый запуск
Когда программа падает 👋, агент разбирает сбой: пытается воспроизвести его на самом коротком примере и понять, где ошибка. Например, она может быть в библиотеке или в написанном им тестовом коде. После этого агент готовит отчёт для исследователя. Его вывод всё равно нужно проверить, тк падение программы ещё не означает уязвимость.
А минусы будут? Конечно, какие вопросы! 📰 Агент читает код из репозитория и запускает команды в окружении исследователя. Если в чужом проекте окажутся вредоносные инструкции или опасный скрипт сборки, под угрозой могут оказаться доступные агенту файлы и токены, ведь их можно отправить наружу. Это риск такого способа запуска. 😖
Поэтому автор советует запускать конвейер в одноразовом окружении, без повышенных прав и секретов.
По-моему, это
😣 интереснее очередного обещания, что ИИ автоматически найдёт все уязвимости и предложит патчи. Здесь видно, какую именно часть работы исследователя автоматизировали: чтение покрытия, улучшение входов и первичный разбор крэшей. И видно, какие решения всё ещё нельзя принимать по одному ответу модели.
Класс, что агенту поручили не абстрактное задание найти все уязвимости, а рутинный цикл, в котором агенту 🆕 надо посмотреть на покрытие, улучшить тест и помочь разобрать сбой.
Идею с автоматическим разбором покрытия берём на заметку. А токены и рабочие файлы перед запуском агента убираем подальше.
Все!
🤡