概述
近期,通付盾在OWASP在线沙龙上发布了2021年第一季度智能合约安全态势感知报告(https://mp.weixin.qq.com/s/cVnD_KrdFlOtd1D3pwaeyw),报告中基于41个项目,共发现2192个智能合约安全问题。那么,市场上的智能合约安全审计工具到底能不能有效发现智能合约安全漏洞,帮助开发者提高智能合约的安全性呢?此次,我们选取通付盾、成都链安和Mythril三个平台,从智能合约自动化审计的漏洞覆盖率、审计深度、审计准确性等方面进行实际使用与对比。
一、工具选择
(1)通付盾
-
工具:通付盾云服务平台(在线);
-
描述:通付盾智能合约安全审计服务为客户提供专业的智能合约自动化安全审计服务,全面覆盖高级语言层、虚拟机层、区块链层、业务层等近百类智能合约安全漏洞,并提供专业的安全修复建议,保障您的智能合约安全。
(2)成都链安
-
工具:VaaS智能合约自动形式化验证平台(在线);
-
描述:Beosin-VaaS“一键式”智能合约自动形式化验证工具,可精确定位到有风险的代码位置并指出风险原因,有效的检测智能合约常规安全漏洞、安全属性和功能正确性,精确度高达95%以上,为智能合约代码提供“军事级”的安全验证。
(3)Mythril
-
工具:Mythril检测工具;
-
描述:由以太坊开源社区所提供的安全分析工具,能够检测出Solidity智能合约中的安全漏洞并实现深入分析,是用以分析以太坊智能合约及区块链应用安全性的安全分析工具及引擎,支持常用IDE集成。
二、功能结构对比
(1)通付盾
(2)成都链安
(3)Mythril
使用docker安装,无具体交互页面,只提供检测引擎。
对比总结:
相同点:主要功能类似,都包含合约检测、查看概览结果、查看历史记录等。
不同点:通付盾支持下载完整审计报告,成都链安暂不支持报告下载;成都链安支持以图表形式查看审计结果,通付盾目前只展示结果数据(无图表)。
三、审计效果实测
(1)测试集
在SWC Registry(https://swcregistry.io/)选择了11个有问题的智能合约,具体如下:
(2)测试结果
1.通付盾-智能合约审计
粘贴源码/上传文件:
合约审计及结果展示:
报告下载:
漏洞发现:
序号 | 威胁层面 | 检测项 | 危险等级 | 个数 |
---|---|---|---|---|
1 | 高级语言层 | Rtlo字符 | 高 | 1 |
2 | 高级语言层 | 任意地址发送以太币 | 高 | 1 |
3 | 高级语言层 | 数组长度配置 | 高 | 1 |
4 | 高级语言层 | 误用相等表达式 | 中 | 2 |
5 | 高级语言层 | 资产冻结 | 中 | 1 |
6 | 高级语言层 | 汇编命令 | 中 | 2 |
7 | 高级语言层 | 布尔常量等号 | 消息 | 1 |
8 | 高级语言层 | 低级别调用 | 消息 | 3 |
9 | 高级语言层 | 命名不规范 | 消息 | 12 |
10 | 高级语言层 | 缺少constant声明 | 消息 | 7 |
11 | 高级语言层 | 缺少external声明 | 消息 | 20 |
12 | 高级语言层 | Solidity版本过时 | 消息 | 11 |
13 | 虚拟机层 | 重入-盗取资产 | 高 | 1 |
14 | 虚拟机层 | 重入-二次调用引起 | 低 | 1 |
15 | 虚拟机层 | 重入-基于transfer和send | 消息 | 1 |
16 | 区块链层 | 时间戳依赖 | 低 | 1 |
审计结果总结:
定位问题基本准确,覆盖率较高;
基本没有漏报和误报;
有详细报告可供下载查看,并提供修改建议,有一定的参考性;
支持zip/sol文件上传。
2.成都链安-Beosin-VaaS
粘贴源码/上传文件:
合约检测及结果展示:
报告查看:
【在个人中心查询,目前该入口点击后无响应。】
漏洞发现:
序号 | 威胁层面 | 检测项 | 危险等级 | 个数 |
---|---|---|---|---|
1 | Sensitive Function Call(敏感函数调用) | Invoke Low Level Calls(低级别调用) | 中 | 4 |
2 | Sensitive Function Call(敏感函数调用) | BlockMembers Manipulation | 中 | 10 |
3 | Sensitive Function Call(敏感函数调用) | Unchecked Call Or Send Return value(未检查发送的返回值类型) | 中 | 2 |
4 | Solidity Coding Conventions (Solidity 编程规范) | No Return (没有返回) | 中 | 1 |
5 | Deprecated Usage(不推荐用法) | Unused Variables (变量未使用) | 中 | 6 |
审计结果总结:
目前检测项不够全面,有一些安全漏洞没能检测出来;
有少量误报:如上表中Unchecked Call Or Send Return value中部分代码定义返回类型,属于误报;
不支持zip文件上传,对于包含多个sol文件的项目操作不方便,需要一个个上传。
3.Mythril检测工具
测试流程及图示:【无】
漏洞发现:
序号 | 威胁层面 | 检测项 | 危险等级 | 个数 |
---|---|---|---|---|
1 | 高级语言层 | 任意跳转函数类型变量 | 高 | 1 |
2 | 高级语言层 | 整数溢出 | 高 | 3 |
3 | 高级语言层 | 不满足assert条件 | 中 | 1 |
4 | 高级语言层 | 未校验返回值send函数 | 高 | 1 |
5 | 高级语言层 | 未校验返回值 | 中 | 2 |
6 | 区块链层 | 随机性不足 | 低 | 1 |
7 | 区块链层 | 时间戳依赖 | 低 | 6 |
8 | 虚拟机层 | 重入-二次调用引起 | 低 | 12 |
审计结果总结:
检测结果定位问题准确,但覆盖漏洞较少,检测项不够全面。
四、横向对比
通付盾-智能合约审计 | 成都链安-Beosin-VaaS | Mythril | |
---|---|---|---|
界面布局 | 简洁,功能布局完整。 | 风格统一,布局清晰。 | 无 |
检测准确度 | 漏洞覆盖较全面,存在少量漏报,基本无误报。 | 存在少量误报;漏洞覆盖率不够高,有多项漏洞未检出。 | 漏报较多,漏洞覆盖率低;准确度高。 |
结果显示 | 结果显示表达清晰,可下载详细报告,报告中有修复建议。 | 可直接定位漏洞位置;有图表支持,可直观的看出漏洞分布;没有具体报告,对漏洞信息没有具体描述和修改建议。 | 无 |
可操作性 | 支持源码和文件(zip、sol)上传。 | 支持源码和sol文件,不支持zip包上传。 | 无 |
来源:freebuf.com 2021-04-14 16:47:31 by: A码尚搬砖啊
请登录后发表评论
注册