Mythril

Blockchain / Web3 v0.24.8 · 27.03.2024 активный

Инструмент безопасности Ethereum-контрактов от ConsenSys. Использует symbolic execution, concolic analysis и SMT-solving для обнаружения reentrancy, integer overflow, arbitrary jump, delegatecall injection. Работает с EVM-байткодом без исходников.

v0.24.8
27.03.2024 current

Установка
pip install mythril
# Анализ по адресу контракта в mainnet
myth analyze --address 0xABCD... --infura-id YOUR_ID
# Анализ файла
myth analyze contract.sol
показать оригинал переведено ИИ

Mythril

Discord PyPI Read the Docs CircleCI Sonarcloud - Maintainability Pypi Installs DockerHub Pulls

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.

Устранение уязвимостей

Посетите Реестр классификации уязвимостей смарт-контрактов, чтобы найти подробную информацию и рекомендации по устранению обнаруженных уязвимостей.

Войдите, чтобы оставить комментарий