MyThril adalah alat analisis keamanan untuk EVM bytecode. Ini mendeteksi kerentanan keamanan dalam kontrak pintar yang dibangun untuk Ethereum, Hedera, kuorum, vechain, batang bawah, tron, dan blockchain yang kompatibel dengan EVM lainnya. Ini menggunakan eksekusi simbolik, pemecahan SMT dan analisis noda untuk mendeteksi berbagai kerentanan keamanan.
Apakah Anda ingin berkontribusi, memerlukan dukungan, atau ingin mempelajari apa yang kami masak untuk masa depan, Anda dapat checkout saluran ketekunan-mythx di Consensys Discord Server.
Dapatkan dengan Docker:
$ docker pull mythril/myth
Instal dari PYPI (Python 3.7-3.10):
$ pip3 install mythril
Gunakan melalui kait pra-komit (ganti $GIT_TAG
dengan tag asli):
- repo : https://github.com/Consensys/mythril
rev : $GIT_TAG
hooks :
- id : mythril
Selain itu, atur args: [disassemble]
atau args: [read-storage]
untuk menggunakan perintah yang berbeda dari analyze
.
Lihat dokumen untuk instruksi yang lebih rinci.
Berlari:
$ myth analyze <solidity-file>
Atau:
$ myth analyze -a <contract-address>
Tentukan jumlah maksimum transaksi untuk dijelajahi dengan -t <number>
. Anda juga dapat menetapkan batas waktu dengan --execution-timeout <seconds>
.
Berikut adalah contoh menjalankan mythril pada file killbilly.sol
yang ada di direktori solidity_examples
untuk 3
transaksi:
> 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
Instruksi untuk menggunakan mythril ditemukan di dokumen.
Untuk Dukungan atau Diskusi Umum, silakan checkout Saluran Diligence-Mythx di Consensys Discord Server ..
Dokumentasi MyThril terkandung dalam folder docs
dan diterbitkan untuk membaca dokumen. Ini didasarkan pada sphinx dan dapat dibangun menggunakan makefile yang terkandung dalam subdirektori:
cd docs
make html
Ini akan membuat direktori output build
yang berisi output HTML. Atau, dokumentasi PDF dapat dibangun dengan make latexpdf
. Opsi format output yang tersedia dapat dilihat dengan make help
.
Kunjungi Registry Klasifikasi Kerentanan Kontrak Cerdas untuk menemukan informasi terperinci dan panduan perbaikan untuk kerentanan yang dilaporkan.