libfuzzer — скилл для Claude Code: что делает и как установить
Скилл проводит агента по libFuzzer: харнесс, сборка с -fsanitize=fuzzer, корпус и разбор прогона. Для C/C++ проектов на Clang.
npx skills add trailofbits/skills --skill libfuzzer -a claude-codeЧто делает libfuzzer
Скилл ставит libFuzzer на C/C++: разбирает структуру харнесса LLVMFuzzerTestOneInput, сборку с -fsanitize=fuzzer, работу с корпусом и словарём, связку с санитайзерами и разбор прогона. Пригодится, когда библиотека уже собирается Clang-ом и фаззинг нужен сейчас, без отдельного стенда.
Харнесс — точка входа: фаззер дёргает его с разными входами. Правила перечислены прямо: не звать exit(), доводить потоки до конца, не тянуть случайность из /dev/random, сбрасывать глобальное состояние между запусками. Для сложных входов берут FuzzedDataProvider из LLVM. Сборка идёт через clang++ с флагом -fsanitize=fuzzer и AddressSanitizer, потому что без санитайзера часть ошибок памяти просто не видна.
Clang обязателен. С GCC это не соберётся: флаг -fsanitize=fuzzer живёт в LLVM. Сам libFuzzer с конца 2022 года в режиме поддержки, но автор всё равно советует начинать с него из-за короткой установки, а харнессы совместимы с AFL++, так что переехать можно позже.
Какие задачи решает
- написать харнесс
LLVMFuzzerTestOneInputпод свою функцию - сборка цели с
-fsanitize=fuzzerи AddressSanitizer - завести корпус и словарь под формат входа
- понять, почему прогон заканчивается без падений
- перенести готовый харнесс в AFL++ для многопоточного прогона
Примеры запросов агенту
- Напиши харнесс `LLVMFuzzerTestOneInput` для парсера в `parser.c` и собери его с `-fsanitize=fuzzer,address`
- Фаззер крутится и не находит падений — проверь харнесс на утечку состояния между запусками
- Как подключить словарь к прогону и чем он поможет на бинарном формате?
Как установить libfuzzer
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill libfuzzer -a claude-code2Вручную: положить файлы
~/.claude/skills/libfuzzer/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/libfuzzer/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill libfuzzer -a codex2Вручную: положить файлы
.agents/skills/libfuzzer/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill libfuzzer -a cursor2Вручную: положить файлы
.cursor/skills/libfuzzer/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install trailofbits/skills libfuzzer2Вручную: положить файлы
.github/skills/libfuzzer/SKILL.md1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill libfuzzer -a gemini-cli2Командой платформы
gemini skills install https://github.com/trailofbits/skills --path plugins/testing-handbook-skills/skills/libfuzzerВручную: положить файлы
.devin/skills/libfuzzer/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill libfuzzer -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора35
Весь набор →Похожие
Вопросы о libfuzzer
Как установить libfuzzer в Claude Code?
Выполнить npx skills add trailofbits/skills --skill libfuzzer -a claude-code. Скилл окажется в ~/.claude/skills/libfuzzer/SKILL.md.
Что делает libfuzzer?
Ведёт агента по настройке фаззинга на libFuzzer: пишет харнесс, собирает цель с -fsanitize=fuzzer, подключает корпус, словарь и санитайзеры, помогает разобрать результат прогона.
Чем libFuzzer отличается от AFL++?
libFuzzer проще в установке и рассчитан на один поток, AFL++ нужен для многопоточных прогонов с разнообразными мутациями. Харнессы у них совместимы, поэтому перейти на AFL++ можно без переписывания.