Mythril is a security analysis tool for EVM bytecode
. It detects security vulnerabilities in smart contracts built for Ethereum, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains. It usessymbolic execution, SMT solving and taint analysis detect a variety of security vulnerabilities
. It’s also used (in combination with other tools and techniques) in the MythX security analysis platform.
# Update
sudo apt update
# Install solc
sudo apt install software-properties-common
sudo add-apt-repository ppa:ethereum/ethereum
sudo apt install solc
# Install libssl-dev, python3-dev, and python3-pip
sudo apt install libssl-dev python3-dev python3-pip
# Install mythril
pip3 install mythril
myth --version
myth analyze <solidity-file>
$ myth analyze ether_send.sol
==== Unprotected Ether Withdrawal ====
SWC ID: 105
Severity: High
Contract: Crowdfunding
Function name: withdrawfunds()
PC address: 730
Estimated Gas Usage: 1132 - 1743
Anyone can withdraw ETH from the contract account.
Arbitrary senders other than the contract creator can withdraw ETH from the contract account without previously having sent an equivalent amount of ETH to it. This is likely to be a vulnerability.
--------------------
In file: tests/testdata/input_contracts/ether_send.sol:21
msg.sender.transfer(address(this).balance)
--------------------
If an input file contains multiple contract definitions, Mythril analyzes the last bytecode output produced by solc. You can override this by specifying the contract name explicitly:
myth analyze OmiseGo.sol:OMGToken
By default, analysis results are printed to the terminal in text format. You can change the output format with the -o argument:
myth analyze underflow.sol -o jsonv2
Available formats aretext, markdown, json, and jsonv2.
For integration with other tools, jsonv2 is generally preferred over json because it is consistent with other MythX tools.