
slither v0.11.6
Статический анализатор для Solidity и Vyper
Slither, статический анализатор смарт-контрактов
Присоединяйтесь к Slack-каналу Empire Hacking
- Обсуждения и поддержка
Slither — это фреймворк статического анализа для Solidity и Vyper, написанный на Python3. Он запускает набор детекторов уязвимостей, выводит визуальную информацию о деталях контрактов и предоставляет API для простого написания собственных анализов. Slither позволяет разработчикам находить уязвимости, улучшать понимание кода и быстро прототипировать собственные анализы.
- Возможности
- Использование
- Как установить
- Детекторы
- Принтеры
- Инструменты
- Документация API
- Получение помощи
- Часто задаваемые вопросы
- Лицензия
- Публикации
Возможности
- Обнаруживает уязвимый код Solidity с низким уровнем ложных срабатываний (см. список трофеев)
- Определяет, где в исходном коде возникает условие ошибки
- Легко интегрируется в непрерывную интеграцию и сборки Hardhat/Foundry
- Встроенные «принтеры» быстро сообщают важную информацию о контракте
- API детекторов для написания собственных анализов на Python
- Возможность анализа контрактов, написанных на Solidity >= 0.4
- Промежуточное представление (SlithIR) обеспечивает простые и высокоточные анализы
- Корректно парсит 99.9% всего публичного кода Solidity
- Среднее время выполнения менее 1 секунды на контракт
- Интегрируется со сканированием кода GitHub в CI
- Поддержка смарт-контрактов Vyper
Использование
Запустите Slither в приложении Hardhat/Foundry/Dapp/Brownie:```console slither .
Это предпочтительный вариант, если ваш проект имеет зависимости, поскольку Slither полагается на базовый фреймворк компиляции для компиляции исходного кода.
Однако вы можете запустить Slither на одном файле, который не импортирует зависимости:```console
slither tests/uninitialized.sol
Как установить
Примечание Slither требует Python 3.10+. Если вы не собираетесь использовать один из поддерживаемых фреймворков сборки, вам потребуется solc, компилятор Solidity; мы рекомендуем использовать solc-select для удобного переключения между версиями solc.
Использование uv (рекомендуется)
uv — это быстрый менеджер пакетов Python, который в 10-100 раз быстрее pip.```console
Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
Install slither as a tool
uv tool install slither-analyzer
Or run slither without installation
uvx --from slither-analyzer slither
Для обновления:```console
uv tool upgrade slither-analyzer
Использование Pip```console
python3 -m pip install slither-analyzer
Для обновления:```console
python3 -m pip install --upgrade slither-analyzer
Использование Brew```console
brew install slither-analyzer
### Использование Git (Разработка)```bash
git clone https://github.com/crytic/slither.git && cd slither
# Install as editable for development
uv tool install -e .
# Or use uv run for testing without installation
uv run slither <target>
Флаг -e устанавливает в редактируемый режим, то есть изменения в исходном коде немедленно отражаются без переустановки.
Использование Docker
Используйте образ Docker eth-security-toolbox. Он включает все наши инструменты безопасности и все основные версии Solidity в одном образе. /home/share будет смонтирован в /share внутри контейнера.```bash
docker pull trailofbits/eth-security-toolbox
Чтобы предоставить общий доступ к каталогу в контейнере:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
Интеграция
- Для интеграции с GitHub Actions используйте slither-action.
- Для интеграции с pre-commit используйте (замените
$GIT_TAGна реальный тег) ```YAML- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- id: slither
- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- Чтобы сгенерировать отчёт в Markdown, используйте
slither [target] --checklist. - Чтобы сгенерировать Markdown с подсветкой исходного кода GitHub, используйте
slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/(заменитеORG,REPO,COMMIT)
Детекторы