智能合约扫描工具Mythril、Solium(新版改名ethlint)、Slither

差生文具多,菜鸟琢磨工具多。

Mythril

简介:

Mythril是一个以太坊官方推荐的智能合约安全分析工具,使用符合执行来检测智能合约中的各种安全漏洞。在remix和truffle等IDE里都有集成。

安装:

使用docker方式安装可以省去很多依赖包有问题的情况:

Pull the latest release of mythril/myth

docker pull mythril/myth

使用:

docker run mythril/myth -h

docker run -v /Users/aaa/go/src/six-days/ethereum-contracts:/contract mythril/myth analyze /contract/bec.sol --solv 0.4.25 --solver-timeout 60 --execution-timeout 60 -o json -t 3

mythril当前只能对单个文件进行检测,检测时需要将合约文件挂载到docker上去检测。

如上诉命令,其中:

solv 是指定solidity编译版本

solver-timeout solidity版本下载超时时间

execution-timeout,执行超时时间

o 输出格式,可选text/markdown/json/jsonv2

t 交易个数

运行结果

运行结果如下图所示,检测出了swc 101漏洞。

2、交易数-t参数

在漏洞检测中,有一个很重要的参数-t(–transaction-count 交易数),有必要单独拿出来说一下。

在执行analyze时,Mythril会在一个特制的EVM虚拟机中执行合约,默认的交易数是2,对于大多数的漏洞(如整数溢出)足矣被发现。

由于每个交易可以具有多个有效的最终状态,在理论上,要探索的状态空间与交易数量成指数关系,交易个数越大,执行时间也越长。Mythril在处理多个交易方面通过分析程序路径在读写状态变量的过程关联关系,可以缩小交易个数。

命令:

analyze (a),分析智能合约

disassemble (d),拆解合约,返回合约对应的Opcodes

pro §,使用Mythril 专业版(收费)

list-detectors,列出可用的安全检测模型

read-storage,通过rpc读取指定地址的存储插槽

leveldb-search,从本地leveldb中检索

function-to-hash,计算合约方法的函数标识码

hash-to-address,将hash转换为以太坊地址

version,版本号

Ethlint工具:

简介:

一个基于文件感知的智能合约扫描工具,内部解析器仅支持Solidity V0.5,这意味着>0.5的版本更新不支持,扫描的结果将会是Syntax error。

中文官方文档:Contents — Solium 1.0.0 documentation

安装:

npm install -g solium

验证:solium -V

  • npm install -g solium
  • cd myDapp
  • solium --init
  • solium -d contracts/solium -d .solium -f myContract.sol

修复代码:

  • solium -f myContract.sol --fix
  • git diff myContract.sol

Slither工具:

简介:

Slither是一个用Python 3编写的智能合约静态分析框架(源码),提供如下功能:

自动化漏洞检测。提供超30多项的漏洞检查模型
自动优化检测。Slither可以检测编译器遗漏的代码优化项并给出优化建议。
代码理解。Slither能够绘制合约的继承拓扑图,合约方法调用关系图等,帮助开发者理解代码。
辅助代码审查。用户可以通过API与Slither进行交互。

官方手册及下载:GitHub - crytic/slither: Static Analyzer for Solidity

安装:

docker安装:

docker pull trailofbits/eth-security-toolbox
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox

使用:

slither .
slither tests/uninitialized.sol
 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智能合约漏洞检测工具是用于检测智能合约中潜在漏洞的软件工具。目前市场上有多种智能合约漏洞检测工具,包括但不限于:Mythril、SmartCheck、Securify、Oyente、Solhint、Slither等。下面对这些工具进行简要分析和比较: 1. Mythril:一种基于Python的智能合约漏洞检测工具,可以自动检测以太坊智能合约中的漏洞。Mythril使用静态分析技术来检测合约中的漏洞,并支持多种漏洞类型的检测。 2. SmartCheck:一种基于Solidity的智能合约漏洞检测工具,使用了一种基于符号执行的技术来检测合约中的漏洞。SmartCheck还支持自定义规则和插件。 3. Securify:一种基于静态分析的智能合约漏洞检测工具,支持检测多种漏洞类型。Securify使用了一种基于抽象解释的方法来检测合约中的漏洞。 4. Oyente:一种基于Python的智能合约漏洞检测工具,使用了一种基于符号执行的技术来检测合约中的漏洞。Oyente支持多种漏洞类型的检测,并提供了一种基于可视化的方式来展示检测结果。 5. Solhint:一种用于Solidity代码规范检查的工具,可以检查合约中的代码是否符合Solidity代码规范。Solhint支持多种代码规范,并可以自定义规范。 6. Slither:一种基于静态分析的智能合约漏洞检测工具,支持多种漏洞类型的检测。Slither使用了一种基于数据流分析的方法来检测合约中的漏洞。 综上所述,不同的智能合约漏洞检测工具使用了不同的技术和方法来检测合约中的漏洞,每种工具都有其独特的优势和劣势。在选择合适的工具时,需要根据具体的需求和场景进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值