本文将成都链安科技有限公司开发的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
合约介绍:此合约为以太坊链上真实的发币合约
审计结果显示该合约存在下述问题:
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. 不存在漏报和误报。
审计结果显示该合约存在下述问题:
审计结果总结:大量的误报和无用信息,对于溢出等高风险漏洞,均未检出
审计结果显示该合约存在下述问题:
Contract fields that can be modified by any user must be inspected.(无限制写入存储器)
Method arguments must be sanitized before they are used in computations.(缺少输入验证)
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.(不安全的外部合约调用)
审计结果总结:测试总是显示未完成,几乎都是误报,提示混乱不堪,没有给出有效漏洞信息
进行了2次付款操作,使用的是官方要求的QSP,一直提示付款失败,无测试结果
其他用户的付款也显示失败,似乎都遇到了同样的问题,转账截图如下:
页面显示:
第三步页面没有响应, 无法查看结果
详细的审计结果附件:无
审计结果显示该合约存在下述问题:无
审计结果总结:付费后无法使用
合约名称:SimpleAuction
合约功能介绍:SimpleAuction 合约是一个简单的拍卖合约,功能:当前用户竞拍价比上一个用户的竞拍价高时会获得拍位,并返还上一个竞拍者的Ether
审计结果显示该合约存在下述问题:
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)风险,证明对代码逻辑功能进行了形式化验证。
审计结果显示该合约存在下述问题:
Compiler version not fixed 编译器版本未固定
Implicit visibility level可见声明不明确
Send instead of transfer 应使用transfer而不是Send
审计结果总结:提出了send有风险,未提示具体信息,溢出风险未检测出。
详细的审计结果附件:无
审计结果显示该合约存在下述问题:无
审计结果总结:等待良久,遗憾的是,一直未扫出结果
进行了1次付款,使用的是官方要求的QSP,仍然一直提示付款失败,无测试结果
其他用户的付款也显示失败,似乎都遇到了同样的问题,转账截图如下:
页面显示依然是这样:
第三步页面仍没有响应, 无法查看结果
网站上显示的付款记录一共3次
详细的审计结果附件:无 审计结果显示该合约存在下述问题:无
审计结果总结:付费后无法使用