Mythril هي أداة تحليل أمنية لرمز EVM Bytecode. يكتشف نقاط الضعف الأمنية في العقود الذكية المصممة لـ Ethereum و Hedera و Quorum و Vechain و Rootstock و Tron وغيرها من blockchains المتوافقة مع EVM. يستخدم التنفيذ الرمزي وحل SMT وتحليل taint للكشف عن مجموعة متنوعة من نقاط الضعف الأمنية.
سواء كنت ترغب في المساهمة أو تحتاج إلى الدعم أو ترغب في معرفة ما لدينا طهي للمستقبل ، يمكنك الخروج من قناة Seconded-Mythx في خادم Dissord Consensys.
احصل عليه مع Docker:
$ docker pull mythril/myth
تثبيت من Pypi (Python 3.7-3.10):
$ pip3 install mythril
استخدمه عبر خطاف ما قبل الالتزام (استبدل $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 على المستندات.
للحصول على الدعم أو المناقشات العامة ، يرجى الخروج من قناة العناية-Mythx في خادم Dissord Consensys ..
وثيقة Mythril موجودة في مجلد docs
ويتم نشرها لقراءة المستندات. يعتمد على sphinx ويمكن بناؤه باستخدام makefile الواردة في الدليل الفرعي:
cd docs
make html
سيؤدي ذلك إلى إنشاء دليل إخراج build
يحتوي على إخراج HTML. بدلاً من ذلك ، يمكن بناء وثائق PDF مع make latexpdf
. يمكن رؤية خيارات تنسيق الإخراج المتاحة مع make help
.
تفضل بزيارة سجل تصنيف الضعف الذكي للعقود للعثور على معلومات مفصلة وإرشادات للعلاج عن نقاط الضعف المبلغ عنها.