Mythril est un outil d'analyse de sécurité pour les bytecodes EVM. Il détecte les vulnérabilités de sécurité dans les contrats intelligents construits pour Ethereum, Hedera, Quorum, Vechain, Rootstock, Tron et d'autres blockchains compatibles EVM. Il utilise une exécution symbolique, une résolution de SMT et une analyse de souillure pour détecter une variété de vulnérabilités de sécurité.
Que vous souhaitiez contribuer, avoir besoin de support ou que vous souhaitiez savoir ce que nous avons cuisine pour l'avenir, vous pouvez vérifier Dilivence-Mythx Channel dans Ansensy Discord Server.
Obtenez-le avec Docker:
$ docker pull mythril/myth
Installation à partir de PYPI (Python 3.7-3.10):
$ pip3 install mythril
Utilisez-le via Hook pré-Commit (Remplacez $GIT_TAG
par une réelle balise):
- repo : https://github.com/Consensys/mythril
rev : $GIT_TAG
hooks :
- id : mythril
De plus, définissez args: [disassemble]
ou args: [read-storage]
pour utiliser une commande différente de analyze
.
Voir les documents pour des instructions plus détaillées.
Courir:
$ myth analyze <solidity-file>
Ou:
$ myth analyze -a <contract-address>
Spécifiez le nombre maximum de transactions à explorer avec -t <number>
. Vous pouvez également définir un délai d'attente avec --execution-timeout <seconds>
.
Voici un exemple d'exécution de Mythril sur le fichier killbilly.sol
qui se trouve dans le répertoire solidity_examples
pour 3
transactions:
> 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
Les instructions pour l'utilisation de Mythril se trouvent sur les documents.
Pour le support ou les discussions générales, veuillez vérifier le canal de diligence-mythx dans le serveur de discorde consensys.
La documentation de Mythril est contenue dans le dossier docs
et est publiée pour lire les documents. Il est basé sur Sphinx et peut être construit en utilisant le makefile contenu dans le sous-répertoire:
cd docs
make html
Cela créera un répertoire de sortie build
contenant la sortie HTML. Alternativement, la documentation PDF peut être construite avec make latexpdf
. Les options de format de sortie disponibles peuvent être vues avec make help
.
Visitez le registre de classification des vulnérabilité des contrats intelligents pour trouver des informations détaillées et des conseils de correction des vulnérabilités signalées.