主流自动化智能合约审计工具横向对比测试

本文将成都链安科技有限公司开发的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-17Implicit visibility level (函数缺少可见性声明,这是误报)
  • Lines: 63-67Using the approve function of the ERC-20 standard (approveERC-20 的功能可能导致漏洞,提示不详细,不确定到底存在什么风险。)
  • Lines: 136-139Overpowered user (用户依赖owner用户设置价格,这是合约逻辑需要,为误报)
  • Lines: 17-17
  • Lines: 32-32
  • Lines: 33-33
  • Lines: 69-69
  • Lines: 109-109
  • Lines: 110-110Upgrade 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、横向对比总结

 

你可能感兴趣的:(区块链,区块链,智能合约,审计,测试)