智能合约漏洞检测之mythril简介与使用

mythril简介

mythril是以太坊的官方智能合约漏洞检测工具,可以检测大量的智能合约安全问题,如整数溢出,任意地址写入,时间戳依赖等14种漏洞检测工具。可以发现常规漏洞,但是无法发现一个合约的业务逻辑问题,主要思想是利用符号执行去探索所有可能的不安全的路径。

相关预备知识

本文仅是对自己学习的一个记录,如果觉得有点啰嗦,可以直接翻到docker安装运行的地方,嘻嘻

远程服务器相关知识

由于普通大部分人的电脑都是windows系统,如果利用WMware虚拟机,安装linux系统或者centos启动将会超级无敌缓慢,而重装系统又很麻烦,所以租用阿里云的服务器是一个很好的选择,服务器的本质就是一个不关机的远程电脑,利用Xshell软件实现安全的终端模拟,这样我们就可以瞎搞了(不是),利用XFTP实现文件的上传下载,就可以和本地差不多了。

centos系统相关知识

centos是基于Linux内核的一个发行版本,同样的还有发行版本Redhat,但是我们为什么不选择redhat呢,因为要钱(不是)。
在服务器上,centos比Ubuntu更加稳定,Ubuntu一般用在本地电脑的桌面应用。

docker相关

我们的mythril是利用docker安装的,简单说一下什么是docker。
对于一款产品的开发,运维来说,环境配置都是十分麻烦的,这里有一句程序员常说的一句话,这个我电脑上运行的好好的,怎么在你的电脑上就不行了,这里往往是环境配置出现了问题。
这时候docker出现了,docker本质是集装箱思想,是一个应用容器引擎,也就是创建容器的工具。将我们需要的所有环境和工具打包到我们的集装箱里,仅需一次搭建,到处都能用。

利用docker安装mythril

# Pull the latest release of mythril/myth
docker pull mythril/myth

运行智能合约检测漏洞

查看帮助命令

#查看帮助命令
docker run mythril/myth -h
#可以选用的参数有
analyze (a),分析智能合约
disassemble (d),拆解合约,返回合约对应的Opcodes
pro (p),使用Mythril 专业版(收费)
list-detectors,列出可用的安全检测模型
read-storage,通过rpc读取指定地址的存储插槽
leveldb-search,从本地leveldb中检索
function-to-hash,计算合约方法的函数标识码
hash-to-address,将hash转换为以太坊地址
version,版本号

下载智能合约

下载合约后保存为sol格式

分析智能合约

# 分析root文件夹地下的1.sol文件,solidity编译器的版本号是0.4.24
 docker run -v $(pwd):/root mythril/myth analyze /root/1.sol --solv 0.4.24
l

分析结果
该漏洞为101号漏洞,可能产生整型溢出漏洞
该漏洞为101号漏洞,可能产生整型溢出漏洞

如果分析链上智能合约的话 ,可以使用INFURA或者手动配置RPC

由于第一次写博客,有错误希望大家友好指出,虚心改正。

猜你喜欢

转载自blog.csdn.net/weixin_41787421/article/details/107880808