Статический анализатор смарт-контрактов Solidity от Trail of Bits. 80+ детекторов: reentrancy, integer overflow, tx.origin authentication, unprotected SELFDESTRUCT, shadowing переменных. Строит граф вызовов, inheritance, выполняет taint-анализ. Интегрируется в CI/CD для аудита контрактов при каждом коммите.
pip install slither-analyzer # Анализ проекта Hardhat/Foundry slither . # Конкретный контракт slither contract.sol # JSON-вывод для CI slither . --json results.json

Присоединяйтесь к Slack-каналу Empire Hacking
- Обсуждения и поддержка
Slither — это фреймворк статического анализа контрактов на языках Solidity и Vyper, написанный на Python3. Он выполняет набор детекторов уязвимостей, выводит визуальную информацию о деталях контрактов и предоставляет API для простой реализации пользовательских анализов. Slither помогает разработчикам находить уязвимости, повышать понимание своего кода и быстро создавать прототипы пользовательских анализов.
Запустите Slither на приложении Hardhat/Foundry/Dapp/Brownie:
slither .
Это предпочтительный вариант, если ваш проект имеет зависимости, так как Slither полагается на базовую среду компиляции для компиляции исходного кода.
Тем не менее, вы можете запустить Slither на отдельном файле, который не импортирует зависимости:
slither tests/uninitialized.sol
Примечание Для работы Slither требуется Python 3.10+. Если вы не планируете использовать одну из поддерживаемых сред компиляции, вам потребуется solc, компилятор Solidity; мы рекомендуем использовать solc-select для удобного переключения между версиями solc.
uv — это быстрый менеджер пакетов Python, который в 10-100 раз быстрее pip.
# 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 <target>
Для обновления:
uv tool upgrade slither-analyzer
python3 -m pip install slither-analyzer
Для обновления:
python3 -m pip install --upgrade slither-analyzer
brew install slither-analyzer
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-образ eth-security-toolbox. Он включает все наши инструменты безопасности и каждую основную версию Solidity в одном образе. /home/share будет смонтирован в /share в контейнере.
docker pull trailofbits/eth-security-toolbox
Для совместного использования каталога в контейнере:
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
$GIT_TAG на реальный тег)
```YAMLslither [target] --checklist.slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/ (замените ORG, REPO, COMMIT)Для получения дополнительной информации смотрите
human-summary: Выводит краткую сводку по контрактам в удобочитаемом форматеinheritance-graph: Экспортирует граф наследования для каждого контракта в файл .dotcontract-summary: Выводит сводку по контрактамloc: Подсчитывает общее количество строк кода (LOC), исходных строк кода (SLOC) и строк комментариев (CLOC) в исходных файлах (SRC), зависимостях (DEP) и тестовых файлах (TEST).entry-points: Выводит все функции-точки входа, изменяющие состояние, и их переменные в контрактахcall-graph: Экспортирует граф вызовов контрактов в файл .dotcfg: Экспортирует CFG (граф управления потоком) для каждой функцииfunction-summary: Выводит сводку по функциямvars-and-auth: Выводит переменные состояния, изменяемые функциями, и авторизацию функцийnot-pausable: Выводит функции, которые не используют модификатор whenNotPaused.Для запуска принтера используйте --print и разделенный запятыми список принтеров.
Полный список смотрите в документации по принтерам.
slither-check-upgradeability: Проверка возможности обновления на основе delegatecallslither-prop: Автоматическая генерация модульных тестов и свойствslither-flat: Объединение (flatten) базы кодаslither-check-erc: Проверка соответствия ERCslither-read-storage: Чтение значений хранилища из контрактовslither-interface: Генерация интерфейса для контрактаДля получения информации о дополнительных инструментах смотрите документацию по инструментам.
Свяжитесь с нами для получения помощи в разработке собственных инструментов.
Документация по внутреннему устройству Slither доступна здесь.
Не стесняйтесь заходить на наш канал в Slack (#ethereum) за помощью по использованию или расширению Slither.
Документация по принтерам описывает информацию, которую Slither может визуализировать для каждого контракта.
Документация по детекторам описывает, как написать новый анализатор уязвимостей.
Документация API описывает методы и объекты, доступные для пользовательских анализов.
Документация SlithIR описывает промежуточное представление SlithIR.
Как исключить моки или тесты?
Как исправить ошибку "unknown file" или проблемы с компиляцией?
slither contract.sol завершится неудачей.
Вместо этого используйте slither . в родительской директории папки contracts/ (при выполнении команды ls вы должны видеть contracts/).
Если у вас есть папка node_modules/, она должна находиться в той же директории, что и contracts/. Чтобы убедиться, что эта проблема связана со slither,
запустите команду компиляции для используемого вами фреймворка, например npx hardhat compile. Она должна успешно выполниться;
в противном случае движок компиляции slither, crytic-compile, не сможет сгенерировать AST.Slither лицензирован и распространяется под лицензией AGPLv3. Свяжитесь с нами, если вы ищете исключение из условий.
| Название | Использование | Авторы | Площадка | Код |
|---|---|---|---|---|
| ReJection: A AST-Based Reentrancy Vulnerability Detection Method | Анализ на основе AST, построенный поверх Slither | Rui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia Chen | CTCIS 19 | - |
| MPro: Combining Static and Symbolic Analysis for Scalable Testing of Smart Contract | Использование зависимостей данных через Slither | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | MPro |
| ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart Contracts | Использование зависимостей данных через Slither | Qingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi Ma | SANER 20 | - |
| Verification of Ethereum Smart Contracts: A Model Checking Approach | Символическое выполнение, построенное поверх CFG от Slither | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | - |
| Smart Contract Repair | Опирается на детекторы уязвимостей Slither | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | SCRepair |
| Demystifying Loops in Smart Contracts | Использование зависимостей данных через Slither | Ben Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil Dillig | ASE 20 | - |
| Trace-Based Dynamic Gas Estimation of Loops in Smart Contracts | Использование CFG от Slither для обнаружения циклов | Chunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang Hu | IEEE Open J. Comput. Soc. 1 (2020) | - |
| SAILFISH: Vetting Smart Contract State-Inconsistency Bugs in Seconds | Опирается на SlithIR для построения графа зависимостей хранилища | Priyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni Vigna | S&P 22 | Sailfish |
| SolType: Refinement Types for Arithmetic Overflow in Solidity | Использование Slither как фронтенда для построения системы уточняющих типов | Bryan Tan, Benjamin Mariano, Shuvendu K. Lahiri, Isil Dillig, Yu Feng | POPL 22 | - |
| Do Not Rug on Me: Leveraging Machine Learning Techniques for Automated Scam Detection | Использование Slither для извлечения признаков токенов (mintable, pausable, ..) | Mazorra, Bruno, Victor Adan, and Vanesa Daza | Mathematics 10.6 (2022) | - |
| MANDO: Multi-Level Heterogeneous Graph Embeddings for Fine-Grained Detection of Smart Contract Vulnerabilities | Использование Slither для извлечения CFG и графа вызовов | Hoang Nguyen, Nhat-Minh Nguyen, Chunyao Xie, Zahra Ahmadi, Daniel Kudendo, Thanh-Nam Doan and Lingxiao Jiang | IEEE 9th International Conference on Data Science and Advanced Analytics (DSAA, 2022) | ge-sc |
| Automated Auditing of Price Gouging TOD Vulnerabilities in Smart Contracts | Использование Slither для извлечения CFG и зависимостей данных | Sidi Mohamed Beillahi, Eric Keilty, Keerthi Nelaturu, Andreas Veneris, and Fan Long | 2022 IEEE International Conference on Blockchain and Cryptocurrency (ICBC) | Smart-Contract-Repair |
| Modeling and Enforcing Access Control Policies for Smart Contracts | Расширение зависимостей данных от Slither | Jan-Philipp Toberg, Jonas Schiffl, Frederik Reiche, Bernhard Beckert, Robert Heinrich, Ralf Reussner | IEEE International Conference on Decentralized Applications and Infrastructures (DAPPS), 2022 | SolidityAccessControlEnforcement |
| Smart Contract Vulnerability Detection Based on Deep Learning and Multimodal Decision Fusion | Использование Slither для извлечения CFG | Weichu Deng, Huanchun Wei, Teng Huang, Cong Cao, Yun Peng, and Xuan Hu | Sensors 2023, 23, 7246 | - |
| Semantic-enriched Code Knowledge Graph to Reveal Unknowns in Smart Contract Code Reuse | Использование Slither для извлечения признаков кода (CFG, функции, типы параметров, ..) | Qing Huang, Dianshu Liao, Zhenchang Xing, Zhengkang Zuo, Changjing Wang, Xin Xia | ACM Transactions on Software Engineering and Methodology, 2023 | - |
| Smart Contract Parallel Execution with Fine-Grained State Accesses | Использование Slither для построения графов доступа к состоянию | Xiaodong Qi, Jiao Jiao, Yi Li | International Conference on Distributed Computing Systems (ICDCS), 2023 | - |
| Bad Apples: Understanding the Centralized Security Risks in Decentralized Ecosystems | Реализация внутреннего анализа поверх Slither | Kailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing Guo | ACM Web Conference April 2023 | - |
| Identifying Vulnerabilities in Smart Contracts using Interval Analysis | Создание 4 детекторов поверх Slither | Ştefan-Claudiu Susan, Andrei Arusoaie | FROM 2023 | - |
| Storage State Analysis and Extraction of Ethereum Blockchain Smart Contracts (pdf не в открытом доступе) | Опирается на CFG и AST от Slither | Maha Ayub , Tania Saleem , Muhammad Janjua , Talha Ahmad | TOSEM 2023 | SmartMuv |
Если вы используете Slither для академической работы, рассмотрите возможность подачи заявки на Crytic Research Prize $10k.