MyThril ist ein Sicherheitsanalyse -Tool für EVM -Bytecode. Es erkennt Sicherheitslücken in intelligenten Verträgen, die für Ethereum, Hedera, Quorum, Vechain, RootStock, Tron und andere EVM-kompatible Blockchains erstellt wurden. Es verwendet symbolische Ausführung, SMT -Lösung und Mel der Analyse, um eine Vielzahl von Sicherheitslücken zu erkennen.
Unabhängig davon, ob Sie beitragen, Unterstützung benötigen oder lernen möchten, was wir für die Zukunft kochen möchten, können Sie den Diligence-MythX-Kanal auf Consensys Discord Server auschecken.
Holen Sie sich es mit Docker:
$ docker pull mythril/myth
Installieren Sie von PYPI (Python 3.7-3.10):
$ pip3 install mythril
Verwenden Sie es über Pre-Commit-Hook (ersetzen Sie $GIT_TAG
durch echtes Tag):
- repo : https://github.com/Consensys/mythril
rev : $GIT_TAG
hooks :
- id : mythril
Setzen Sie außerdem args: [disassemble]
oder args: [read-storage]
um einen anderen Befehl zu verwenden als analyze
.
Weitere detailliertere Anweisungen finden Sie in den Dokumenten.
Laufen:
$ myth analyze <solidity-file>
Oder:
$ myth analyze -a <contract-address>
Geben Sie die maximale Anzahl von Transaktionen an, die mit -t <number>
untersucht werden sollen. Sie können auch eine Zeitüberschreitung mit --execution-timeout <seconds>
festlegen.
Hier ist ein Beispiel für das Ausführen von MyTHhril in der Datei killbilly.sol
, die im Verzeichnis solidity_examples
für 3
Transaktionen ist:
> 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
Anweisungen zur Verwendung von MyThril finden Sie auf den Dokumenten.
Für Unterstützung oder allgemeine Diskussionen finden Sie die Diligence-MythX-Kanal in Consensys Discord Server.
Die Dokumentation von MyThril ist im Ordner docs
enthalten und wird veröffentlicht, um die DOCS zu lesen. Es basiert auf Sphinx und kann mit dem im Unterverzeichnis enthaltenen Makefile erstellt werden:
cd docs
make html
Dadurch wird ein build
-Ausgangsverzeichnis erstellt, das die HTML -Ausgabe enthält. Alternativ kann PDF -Dokumentation mit make latexpdf
erstellt werden. Die verfügbaren Ausgangsformatoptionen sind mit make help
zu sehen.
Besuchen Sie das Smart Contract -Klassifizierungsregister der Klassifizierung in Smart Contract, um detaillierte Informationen und Sanierungsanleitungen für die angegebenen Schwachstellen zu finden.