从The DAO,BEC,SocialChain,Hexagon,再到EOS漏洞,“智能合约”已经成为区块链安全的重灾区。
面对日益突出的区块链安全问题,及以太坊智能合约漏洞不断增多的现状,i春秋通过一期公开课《深入理解智能合约漏洞》,深度解析智能合约漏洞的几种形式,智能合约安全性问题,及应对措施。
讲师介绍
蒋劭捷,ID:Sherlock,360Aegis Team安全研究员,研究方向区块链安全、 web安全、攻击检测,为EOS超级节点提供安全解决方案,区块链安全态势感知项目负责人;
王伟波,ID:maldiohead,360Aegis Team安全研究,专注APT分析、追溯、漏洞挖掘等系统底层安全,曾发现数个Windows漏洞,曾在Freebuf2017安全大会做主题演讲,对区块链安全有深入的研究。
本期重点
1、智能合约概述;
2、智能合约漏洞分析;
3、如何应对智能合约安全问题。
什么是智能合约?
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。
智能合约可以提供没有第三方情况下进行可信交易的环境,并且这些交易可追踪且不可逆转。
智能合约程序不只是一个可以自动执行的计算机程序,它自己就是一个系统参与者,它对接收到的信息进行回应,可以接收和存储信息,也可以向外发送信息。这个程序就像一个可以被信任的人,可以临时保管资产,按照事先的规则执行操作。
常见漏洞形式
1、整数溢出漏洞;
2、可重入漏洞;
3、权限控制不严;
4、伪随机数问题;
5、组合利用底层安全缺陷。
应对措施
在一些联盟链中,智能合约的设计是可以在部署之后更新的,当然这种更新需要一定的线下协商流程。要应对区块链智能合约的安全漏洞问题,需要普遍考虑设计相应的智能合约协商更新机制,降低漏洞修复成本。
但现在,我们需要面对现实,做出几乎唯一可行的、切实有效的努力——在智能合约上线之前,对其进行全面深入的代码安全审计,尽可能的消除漏洞,降低安全风险。
以下列举一些常见的区块链智能合约的漏洞类型及其可能造成的风险,这些漏洞在智能合约上线之前,都应该进行详细的排查。
1. 整数溢出
智能合约中危险的数值操作
可能导致合约失效、无限发币等风险
2. 越权访问
智能合约中对访问控制处理不当
可能导致越权发币风险
3. 信息泄露
硬编码地址等
可能导致重要信息的泄露
4. 逻辑错误
代理转账函数缺失必要校验
可能导致基于重入漏洞的恶意转账等风险
5. 拒绝服务
循环语句、递归函数、外部合约调用等处理不当
可能导致无限循环、递归栈耗尽等拒绝服务风险
6. 函数误用
伪随机函数调用和接口函数实现问题
可能导致可预测随机数、接口函数返回异常等风险
总结
漏洞永远都会存在,区块链行业也可能会出现更多的安全问题,之前传统互联网领域里面遇到的安全问题,区块链行业也会遇到。
区块链行业要能够与 网络安全行业做到协同开放,才能使行业更加健康、稳定、安全的发展。
|