Инструмент безопасности Ethereum-контрактов от ConsenSys. Использует symbolic execution, concolic analysis и SMT-solving для обнаружения reentrancy, integer overflow, arbitrary jump, delegatecall injection. Работает с EVM-байткодом без исходников.
Статический анализатор смарт-контрактов Solidity от Trail of Bits. 80+ детекторов: reentrancy, integer overflow, tx.origin authentication, unprotected …
Фреймворк символьного выполнения для EVM и нативных бинарей (x86/64, ARM) от Trail of Bits. Для Ethereum: …
Коллекция PoC-эксплойтов для реальных DeFi-взломов через Foundry forge-тесты. Включает: reentrancy (Euler Finance $197M), flash loan attacks …
Фаззер смарт-контрактов на основе property-based testing от Trail of Bits. Генерирует случайные транзакции для нарушения инвариантов …
pip install mythril # Анализ по адресу контракта в mainnet myth analyze --address 0xABCD... --infura-id YOUR_ID # Анализ файла myth analyze contract.sol

Mythril — это инструмент анализа безопасности на основе символьного исполнения для байт-кода EVM. Он обнаруживает уязвимости безопасности в смарт-контрактах, созданных для Ethereum и других блокчейнов, совместимых с EVM.
Если вы хотите внести вклад, нуждаетесь в поддержке или хотите узнать, что мы готовим на будущее, загляните в канал diligence-mythx на сервере ConsenSys в Discord.
Установите с помощью Docker:
$ docker pull mythril/myth
Установите из Pypi (Python 3.7-3.10):
$ pip3 install mythril
Используйте через pre-commit хук (замените $GIT_TAG на реальный тег):
- repo: https://github.com/Consensys/mythril
rev: $GIT_TAG
hooks:
- id: mythril
Дополнительно установите args: [disassemble] или args: [read-storage], чтобы использовать другую команду вместо analyze.
Более подробные инструкции см. в документации.
Запустите:
$ myth analyze <solidity-file>
Или:
$ myth analyze -a <contract-address>
Укажите максимальное количество транзакций для исследования с помощью -t <число>. Также можно установить тайм-аут с помощью --execution-timeout <секунды>.
Вот пример запуска Mythril для файла killbilly.sol, который находится в директории solidity_examples, для 3 транзакций:
> myth a killbilly.sol -t 3
==== Unprotected Selfdestruct ====
SWC ID: 106
Severity: High
Contract: KillBilly
Function name: commencekilling()
PC address: 354
Estimated Gas Usage: 974 - 1399
Any sender can cause the contract to self-destruct.
Any sender can trigger execution of the SELFDESTRUCT instruction to destroy this contract account and withdraw its balance to an arbitrary address. Review the transaction trace generated for this issue and make sure that appropriate security controls are in place to prevent unrestricted access.
--------------------
In file: killbilly.sol:22
selfdestruct(msg.sender)
--------------------
Initial State:
Account: [CREATOR], balance: 0x2, nonce:0, storage:{}
Account: [ATTACKER], balance: 0x1001, nonce:0, storage:{}
Transaction Sequence:
Caller: [CREATOR], calldata: , decoded_data: , value: 0x0
Caller: [ATTACKER], function: killerize(address), txdata: 0x9fa299cc000000000000000000000000deadbeefdeadbeefdeadbeefdeadbeefdeadbeef, decoded_data: ('0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',), value: 0x0
Caller: [ATTACKER], function: activatekillability(), txdata: 0x84057065, value: 0x0
Caller: [ATTACKER], function: commencekilling(), txdata: 0x7c11da20, value: 0x0
Инструкции по использованию Mythril можно найти в документации.
По вопросам поддержки или общим обсуждениям загляните в канал diligence-mythx на сервере ConsenSys в Discord.
Документация Mythril находится в папке docs и публикуется на Read the Docs. Она основана на Sphinx и может быть собрана с помощью Makefile, содержащегося в поддиректории:
cd docs
make html
Это создаст выходной каталог build с HTML-выводом. Альтернативно, PDF-документацию можно собрать с помощью make latexpdf. Доступные варианты выходного формата можно посмотреть с помощью make help.
Посетите Реестр классификации уязвимостей смарт-контрактов, чтобы найти подробную информацию и рекомендации по устранению обнаруженных уязвимостей.