Mythril es una herramienta de análisis de seguridad para EVM Bytecode. Detecta vulnerabilidades de seguridad en contratos inteligentes construidos para Ethereum, Hedera, Quórum, Vechain, Raíz, Tron y otras blockchains compatibles con EVM. Utiliza la ejecución simbólica, la resolución de SMT y el análisis de contaminación para detectar una variedad de vulnerabilidades de seguridad.
Ya sea que desee contribuir, necesite soporte o quiera aprender lo que tenemos para cocinar para el futuro, puede consultar el canal Diligence-Mythx en Consensys Discord Server.
Consíguelo con Docker:
$ docker pull mythril/myth
Instalar desde Pypi (Python 3.7-3.10):
$ pip3 install mythril
Úselo a través de un gancho previo al comité (reemplace $GIT_TAG
con etiqueta real):
- repo : https://github.com/Consensys/mythril
rev : $GIT_TAG
hooks :
- id : mythril
Además, establezca args: [disassemble]
o args: [read-storage]
para usar un comando diferente al analyze
.
Vea los documentos para obtener instrucciones más detalladas.
Correr:
$ myth analyze <solidity-file>
O:
$ myth analyze -a <contract-address>
Especifique el número máximo de transacciones para explorar con -t <number>
. También puede establecer un tiempo de espera con --execution-timeout <seconds>
.
Aquí hay un ejemplo de ejecutar mythril en el archivo killbilly.sol
que está en el directorio solidity_examples
para 3
transacciones:
> 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
Las instrucciones para usar Mythril se encuentran en los documentos.
Para obtener soporte o discusiones generales, consulte el canal Diligence-Mythx en Consensys Discord Server.
La documentación de Mythril está contenida en la carpeta docs
y se publica para leer los documentos. Se basa en Sphinx y se puede construir utilizando el File Make contenido en el subdirectorio:
cd docs
make html
Esto creará un directorio de salida build
que contiene la salida HTML. Alternativamente, la documentación de PDF se puede construir con make latexpdf
. Las opciones de formato de salida disponibles se pueden ver con make help
.
Visite el Registro de Clasificación de Vulnerabilidad del Contrato Smart para encontrar información detallada y orientación de remediación para las vulnerabilidades reportadas.