主流自动化智能合约审计工具横向对比测试
本文将成都链安科技有限公司开发的VaaS-ETH自动智能合约形式化验证平台精简版与国际知名的类似产品,如SmartDec、Securify、QSP进行了横向对比测试。测试结果表明,VaaS-ETH在安全检测精确度、检测能力、结果分析、用户体验等方面均存在较大优势。
本文分为两个部分,使用两个功能不同的案例合约,分别为代币合约和竞拍合约。
智能合约安全检测项:包括10大类,27小项
1 . ERC20 Token Standard
2 . Race condition
3 . Sensitive Function Call
4 . Not Recommended
5 . Solidity Coding Conventions
6 . Security Items
7 . Integer Overflows
8 . Assert Fails
9 . Gas Limit
10 . Compiler warnings or errors
第一部分 代币合约安全审计对比测试
合约名称: BIGCAdvancedToken
合约地址链接: 0xa6768Ab9252e71cA6bBaDA32B21B91a1cB703C63
合约介绍:此合约为以太坊链上真实的发币合约
1、成都链安科技VaaS工具测试结果
审计结果显示该合约存在下述问题:
Solidity Coding Conventions (Solidity 编程规范)
1行:solidity版本未固定,
ERC20 Standard (ERC20 标准)
12行:transferOwnership函数中,没有检测新的owner是否是零
52行:transfer函数缺少返回值,不符合ERC20规范
63行:approve函数中未使用Approve事件,不符合ERC20规范
69行:approveAndCall函数中也未使用Approve事件,不符合ERC20规范
Integer Overflows (整型溢出)
125和126行:owner 权限过大,操作任意账户的代币,可以任意增发,以及totalsupply 可能溢出的风险
149行:sell函数中有溢出风险,导致用户受到损失
Security Items (安全项)
合约未使用SafeMath库
审计结果总结:
1. 工具定位准确,正确率达到95%以上
2. 界面清晰,采用分类菜单以及行号标识
3. 提示详细,根据以太坊出现的漏洞进行严格的技术分类,并说明可能导致的后果
4. 不存在漏报和误报。
2、Smartdec测试结果
审计结果显示该合约存在下述问题:
- Lines: 1,编译器版本未固定
- Lines: 17-17,Implicit visibility level (函数缺少可见性声明,这是误报)
- Lines: 63-67,Using the approve function of the ERC-20 standard (approveERC-20 的功能可能导致漏洞,提示不详细,不确定到底存在什么风险。)
- Lines: 136-139,Overpowered user (用户依赖owner用户设置价格,这是合约逻辑需要,为误报)
- Lines: 17-17
- Lines: 32-32
- Lines: 33-33
- Lines: 69-69
- Lines: 109-109
- Lines: 110-110,Upgrade code to Solidity 0.5.0. (不符合Solidity 0.5.0规范)
审计结果总结:大量的误报和无用信息,对于溢出等高风险漏洞,均未检出
3、Securify测试结果
审计结果显示该合约存在下述问题:
- 第46、47、82、90、92、119、120行:
Contract fields that can be modified by any user must be inspected.(无限制写入存储器)
- 第12、56、63、87、124、131、136、146行:
Method arguments must be sanitized before they are used in computations.(缺少输入验证)
- 第149行:
The amount of ether transferred must not be influenced by other transactions.(交易顺序影响ETH数量)
The execution of ether flows should be restricted to an authorized set of users.(ETH 资金流操作权限应限制在一组用户中)
The target of a call instruction can be manipulated by an attacker.(不安全的外部合约调用)
审计结果总结:测试总是显示未完成,几乎都是误报,提示混乱不堪,没有给出有效漏洞信息
4、QSP测试结果
进行了2次付款操作,使用的是官方要求的QSP,一直提示付款失败,无测试结果
其他用户的付款也显示失败,似乎都遇到了同样的问题,转账截图如下:
页面显示:
第三步页面没有响应, 无法查看结果
详细的审计结果附件:无
审计结果显示该合约存在下述问题:无
审计结果总结:付费后无法使用
5、横向对比测试总结
第二部分 竞拍合约测试
合约名称:SimpleAuction
合约功能介绍:SimpleAuction 合约是一个简单的拍卖合约,功能:当前用户竞拍价比上一个用户的竞拍价高时会获得拍位,并返还上一个竞拍者的Ether
1、成都链安科技VaaS工具测试结果
审计结果显示该合约存在下述问题:
Sensitive Function Call (敏感函数调用)
line:15 、18 、31 Block Members Manipulation 区块链参数依赖,合约逻辑设计需要,需要谨慎使用
line:24 Denial of service 存在拒绝服务风险,当上一个竞拍者拒绝返还的ether时,其他竞拍者永远无法成功竞拍
Solidity Coding Conventions (Solidity编程规范)
line:1 Compiler Version Declaration ,版本未固定
Security Items (安全项)
Safe Math Library 未使用SafeMath库
Integer Overflows (整型溢出)
line:22 Integer Overflow 由于未使用SafeMathku,此处存在溢出风险
审计结果总结:验证结果详细准确,而且能准确检测出拒绝服务(DoS)风险,证明对代码逻辑功能进行了形式化验证。
2、Smartdec测试结果
审计结果显示该合约存在下述问题:
- Lines: 1-1
Compiler version not fixed 编译器版本未固定
- Lines: 8-8
- Lines: 9-9
- Lines: 13-16
- Lines: 17-28
- Lines: 30-36
Implicit visibility level可见声明不明确
- Lines: 24-24
Send instead of transfer 应使用transfer而不是Send
审计结果总结:提出了send有风险,未提示具体信息,溢出风险未检测出。
3、Securify测试结果
详细的审计结果附件:无
审计结果显示该合约存在下述问题:无
审计结果总结:等待良久,遗憾的是,一直未扫出结果
4、QSP测试结果
进行了1次付款,使用的是官方要求的QSP,仍然一直提示付款失败,无测试结果
其他用户的付款也显示失败,似乎都遇到了同样的问题,转账截图如下:
页面显示依然是这样:
第三步页面仍没有响应, 无法查看结果
网站上显示的付款记录一共3次
详细的审计结果附件:无 审计结果显示该合约存在下述问题:无
审计结果总结:付费后无法使用
5、横向对比总结