Написание харнессов
Techniques for writing effective fuzzing harnesses across languages. Use when creating new fuzz targets or improving existing harness code.
AItrailofbits
official
Документы
Что делает навык
Написание эффективных fuzzing-харнессов, которые служат точкой входа для получения случайных данных от фаззера и их маршрутизации в тестируемую систему (SUT). Качество харнесса определяет покрытие кодовых путей и возможность обнаружения критических уязвимостей.
Когда применять
- Создание новых fuzz-целей для приложений на разных языках программирования
- Улучшение существующего кода харнесса для повышения эффективности тестирования
- Обеспечение детерминизма и воспроизводимости результатов при fuzzing
- Парсинг сырых байтов в осмысленные входные данные для целевых функций
Как работает
- Определить функцию входа (entry point), требуемую фаззером (например, LLVMFuzzerTestOneInput)
- Использовать FuzzedDataProvider для структурированного извлечения типизированных данных из сырых байтов
- Написать логику маршрутизации полученных данных к целевому коду (SUT)
- Обработать граничные случаи (edge cases) корректно, чтобы избежать ложных сбоев
- Обеспечить детерминизм: одинаковый вход должен всегда давать одинаковое поведение
- При необходимости реализовать interleaved fuzzing для выполнения нескольких операций в одном харнессе
Примеры запросов агенту
Напиши харнесс для fuzzing библиотеки X на C++ с использованием LLVMFuzzerTestOneInput
Как правильно использовать FuzzedDataProvider для извлечения строк и чисел из входных данных фаззера?
Обеспечь детерминизм в существующем харнессе, чтобы сбои были воспроизводимы
Описание составлено по SKILL.md навыка, сверено 05.10.2026.
Как подключить
1Скачать навык
# возьмите папку навыка «harness-writing» из репозитория:
# https://github.com/trailofbits/skills
2Положить папку с
SKILL.md к навыкам ассистента# положите папку навыка туда, где ассистент ищет skills:
cp -r harness-writing/ ~/.claude/skills/harness-writing/
Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.