substrate-vulnerability-scanner — скилл для Claude Code: установка
Скилл проверяет паллеты Substrate и Polkadot на 7 критических уязвимостей, включая паники и переполнения. Пригодится при аудите рантайма FRAME перед запуском сети.
npx skills add trailofbits/skills --skill substrate-vulnerability-scanner -a claude-codeЧто делает substrate-vulnerability-scanner
Анализатор ищет код паллетов в директориях pallets/*/lib.rs и конфигурации в runtime/lib.rs. Поиск ориентирован на проекты со структурой FRAME и зависимостями frame-* в Cargo.toml. Скилл проверяет каждую точку входа в #[pallet::call]. Анализ выявляет сбои из-за вызовов unwrap() или expect(), заниженные веса комиссий, небезопасные вызовы ensure_signed для административных действий и слабую случайность через pallet_randomness_collective_flip.
В релизной сборке Rust прямые арифметические операторы вызывают переполнение без генерации ошибки. В блокчейне это ведёт к искажению балансов. Для версий Substrate до 0.9.25 критично отслеживать порядок записи: валидация после изменения хранилища без макроса #[transactional] оставит невалидную мутацию при сбое транзакции.
По итогам проверки агент строит сводную таблицу по всем семи категориям. В ней для каждого пункта фиксируется статус вроде found со ссылкой на строку кода или clear. К найденным уязвимостям сразу прилагаются рекомендации по исправлению.
Какие задачи решает
- выявить пропуски
checked_*в расчётах балансов - найти места с риском паники ноды через
unwrap - проверить разграничение прав и вызовы
ensure_root - обнаружить операции записи в хранилище до валидации
Примеры запросов агенту
- Проверь паллеты в pallets/ на 7 уязвимостей Substrate
- Проведи аудит функций в #[pallet::call] перед релизом рантайма
- Найди в коде рантайма небезопасные вызовы unwrap и арифметику без проверок
Как установить substrate-vulnerability-scanner
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill substrate-vulnerability-scanner -a claude-code2Вручную: положить файлы
~/.claude/skills/substrate-vulnerability-scanner/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/substrate-vulnerability-scanner/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill substrate-vulnerability-scanner -a codex2Вручную: положить файлы
.agents/skills/substrate-vulnerability-scanner/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill substrate-vulnerability-scanner -a cursor2Вручную: положить файлы
.cursor/skills/substrate-vulnerability-scanner/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install trailofbits/skills substrate-vulnerability-scanner2Вручную: положить файлы
.github/skills/substrate-vulnerability-scanner/SKILL.md1Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill substrate-vulnerability-scanner -a gemini-cli2Командой платформы
gemini skills install https://github.com/trailofbits/skills --path plugins/building-secure-contracts/skills/substrate-vulnerability-scannerВручную: положить файлы
.devin/skills/substrate-vulnerability-scanner/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add trailofbits/skills --skill substrate-vulnerability-scanner -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора35
Весь набор →Похожие
Вопросы о substrate-vulnerability-scanner
Как установить substrate-vulnerability-scanner в Claude Code?
Выполните команду npx skills add trailofbits/skills --skill substrate-vulnerability-scanner -a claude-code.
Какие уязвимости ищет этот скилл?
Он проверяет 7 классов проблем: переполнения чисел, паники ноды при unwrap или индексации, заниженные веса вызовов, запись в хранилище до проверок, небезопасные неподписанные транзакции, слабую случайность и некорректную проверку прав через ensure_signed.
Почему проверка порядка записи важна для старых версий Substrate?
В версиях до 0.9.25 транзакционность хранилища не была автоматической. Если метод изменил данные до ошибки валидации и не был защищён макросом #[transactional], изменения сохранятся в состоянии ноды.