Mythril - это инструмент анализа безопасности для EVM Bytecode. Он обнаруживает уязвимости безопасности в интеллектуальных контрактах, созданных для Ethereum, Hedera, Quorum, Vechain, Rootstock, Tron и других совместимых с EVM блокчейнов. Он использует символическое выполнение, решение SMT и анализ Taint для обнаружения различных уязвимостей безопасности.
Независимо от того, хотите ли вы внести свой вклад, нуждаетесь в поддержке или хотите узнать, что у нас есть в будущем, вы можете проверить усердие Mythx-канал на сервере Discesrys Discessys.
Получите это с Docker:
$ docker pull mythril/myth
Установите из PYPI (Python 3.7-3.10):
$ pip3 install mythril
Используйте его через Pre-Commit Hook (замените $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 <number>
. Вы также можете установить тайм-аут с помощью --execution-timeout <seconds>
.
Вот пример запуска 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 находятся на документах.
Для поддержки или общих дискуссий, пожалуйста, проверьте канал усердий-мифс в консенсии сервера Discord ..
Документация Mythril содержится в папке docs
и опубликована для чтения документов. Он основан на SPHINX и может быть построен с использованием Make -файла, содержащегося в подкаталоге:
cd docs
make html
Это создаст выходной каталог build
содержащий вывод HTML. В качестве альтернативы, документация PDF может быть построена с помощью make latexpdf
. Доступные параметры формата вывода можно увидеть с make help
.
Посетите реестр классификации уязвимостей смарт -контракта, чтобы найти подробную информацию и руководство по исправлению положения для уязвимостей.