Echidna:功能强大的以太坊模糊测试框架

2019 年 9 月 1 日 FreeBuf

Echidna

Echidna是一款针对以太坊虚拟机EVM代码的模糊测试框架,该工具基于Haskell代码库实现,并支持相对复杂的基于语法的模糊测试任务。

以太坊虚拟机EVM

以太坊虚拟机EVM是智能合约的运行环境,它不仅是沙盒封装的,而且是完全隔离的,也就是说在EVM中运行代码是无法访问网络,文件系统和其他进程的,甚至智能合约之间的访问也是受限的。EVM主要用于执行交易代码,这是以太坊与其他系统的核心区别。EVM是图灵完备的,由于以太坊系统中引入了gas的概念,所以原则上,在EVM中可执行的计算总量受gas总量限制。EVM采用了基于栈(stack)的架构,也就是后进先出(LIFO)的方式。

EVM有如下特殊设计:

1、区分临时存储(Memory,存在于VM的每个实例中,并在VM执行结束后消失)和永久存储(Storage,存在于区块链状态层)

2、采用基于栈(stack)的架构

3、单词(word)大小为32字节

4、使用了可变、可扩展的内存大小

5、栈大小没有限制

6、1024调用深度限制

7、没有类型的概念

功能介绍

1、根据实际代码生成定制化输入;

2、可选的覆盖范围指引,以便发现隐藏在更深层的错误;

3、自动最小化测试用例,以便实现快速分类;

4、与发开工作流无缝集成;

5、运行速度快,效率高;

6、强大的高级API支持;

7、Logo好看

工具安装

如果你需要在Linux设备上使用Echidna,我们提供了项目的静态链接代码v1.1.0.0:【https://github.com/crytic/echidna/releases/tag/1.1.0.0】。

当然了,用户也可以自行下载最新版本的Echidna,我们建议大家使用Docker:

$docker build -t echidna .

使用样例:

$docker run -t -v `pwd`:/src echidna echidna-test/src/examples/solidity/basic/flags.sol

工具使用

执行测试任务

Echidna的核心功能通过一个名叫echidna-test的可执行文件实现,echidna-test接受一份智能合约和一份固定属性值列表作为输入数据。对于每一个固定值,它将生成一套针对智能合约的随机调用序列,并检查固定值是否保持不变。如果它能够找到某种方法来伪造出固定值,它就会打印出整个过程的调用序列。如果不能找到,则判断为该智能合约是安全的。

编写固定值

固定值的参数名以echidna_开头,并且返回的是带有布尔值的Solidity函数。比如说,你想要某个余额变量永远不低于20,那你就可以在智能合约中编写一个额外的函数,具体如下所示:

function echidna_check_balance() {     return(balance >= 20); }

运行下列命令,检测该固定值:

$echidna -test myContract.sol
 
   

如需测试样本合约,请单击【这里】。运行下列命令即可使用样本合约:

$echidna -test examples/solidity/basic/flags.sol
 
   

Echidna还可以找出一个调用序列,并让echidna_sometimesfalse的值为False。

Truffle整合

Echidna还可以使用crytic-comile并结合Truffle来对智能合约进行测试。比如说,我们可以使用下列方式来进行测试:

  
  
    
$ cd examples/solidity/truffle/metacoin$echidna-test . TEST...echidna_convert:failed!

*本文作者:Alpha_h4ck,转载须注明来自FreeBuf.COM

精彩推荐


登录查看更多
1

相关内容

FPGA加速系统开发工具设计:综述与实践
专知会员服务
65+阅读 · 2020年6月24日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
125+阅读 · 2020年5月22日
【CVPR2020】MSG-GAN:用于稳定图像合成的多尺度梯度GAN
专知会员服务
27+阅读 · 2020年4月6日
和积网络综述论文,Sum-product networks: A survey,24页pdf
专知会员服务
23+阅读 · 2020年4月3日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
29+阅读 · 2020年3月5日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
CALDERA 一款对手自动模拟工具
黑白之道
20+阅读 · 2019年9月17日
分享8个强大的黑客技术学习网站
黑客技术与网络安全
88+阅读 · 2019年8月29日
ISeeYou一款强大的社工工具
黑白之道
30+阅读 · 2019年5月17日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
.NET Core 环境下构建强大且易用的规则引擎
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
深度学习 | 免费使用Google Colab的GPU云计算平台
沈浩老师
12+阅读 · 2018年2月4日
稀疏&集成的卷积神经网络学习(续)
计算机视觉战队
4+阅读 · 2017年11月18日
TResNet: High Performance GPU-Dedicated Architecture
Arxiv
8+阅读 · 2020年3月30日
Feature Denoising for Improving Adversarial Robustness
Arxiv
15+阅读 · 2018年12月9日
Arxiv
3+阅读 · 2018年5月11日
VIP会员
相关VIP内容
FPGA加速系统开发工具设计:综述与实践
专知会员服务
65+阅读 · 2020年6月24日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
125+阅读 · 2020年5月22日
【CVPR2020】MSG-GAN:用于稳定图像合成的多尺度梯度GAN
专知会员服务
27+阅读 · 2020年4月6日
和积网络综述论文,Sum-product networks: A survey,24页pdf
专知会员服务
23+阅读 · 2020年4月3日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
29+阅读 · 2020年3月5日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
CALDERA 一款对手自动模拟工具
黑白之道
20+阅读 · 2019年9月17日
分享8个强大的黑客技术学习网站
黑客技术与网络安全
88+阅读 · 2019年8月29日
ISeeYou一款强大的社工工具
黑白之道
30+阅读 · 2019年5月17日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
.NET Core 环境下构建强大且易用的规则引擎
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
深度学习 | 免费使用Google Colab的GPU云计算平台
沈浩老师
12+阅读 · 2018年2月4日
稀疏&集成的卷积神经网络学习(续)
计算机视觉战队
4+阅读 · 2017年11月18日
Top
微信扫码咨询专知VIP会员