AIKraft/Skills/Написание харнессов

Написание харнессов

Techniques for writing effective fuzzing harnesses across languages. Use when creating new fuzz targets or improving existing harness code.

trailofbits official Документы

Что делает навык

Написание эффективных fuzzing-харнессов, которые служат точкой входа для получения случайных данных от фаззера и их маршрутизации в тестируемую систему (SUT). Качество харнесса определяет покрытие кодовых путей и возможность обнаружения критических уязвимостей.

Когда применять

  • Создание новых fuzz-целей для приложений на разных языках программирования
  • Улучшение существующего кода харнесса для повышения эффективности тестирования
  • Обеспечение детерминизма и воспроизводимости результатов при fuzzing
  • Парсинг сырых байтов в осмысленные входные данные для целевых функций

Как работает

  1. Определить функцию входа (entry point), требуемую фаззером (например, LLVMFuzzerTestOneInput)
  2. Использовать FuzzedDataProvider для структурированного извлечения типизированных данных из сырых байтов
  3. Написать логику маршрутизации полученных данных к целевому коду (SUT)
  4. Обработать граничные случаи (edge cases) корректно, чтобы избежать ложных сбоев
  5. Обеспечить детерминизм: одинаковый вход должен всегда давать одинаковое поведение
  6. При необходимости реализовать 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 и совместимые) подхватывает его по описанию и следует шагам.