通付盾2021Q1智能合约安全态势感知报告?
“InMath,WeTrust!“
内容概要
智能合同的概念由计算机学家和法学家尼克萨博在1990年代提出,是块链的重要组成部分,块链的应用场景和现实意义大幅扩大,目前块链和智能合同技术广泛应用于股票筹措、游戏、保险、供应链、物联网等领域。
但随着块链和智能合同产业的发展,随之安全事件也在爆发。智能合同比普通程序更容易成为攻击者的目标。另一方面,智能合同通常用于管理块链平台的数字资产,对智能合同的攻击可能给攻击者带来更高的经济价值。更重要的是,引进智能合同的初衷是利用块链的特性保证合同的可靠性,智能合同的脆弱性使合同出现不可期待的行为,有可能成为不平等的合同,失去智能合同的根本意义。
仅2021年第一季度就发生了SushiSwap的第二次攻击,AlphaFinance被攻击,Yearn.finance闪电贷款被攻击,Furucombo被攻击,PAID上的Network被攻击,DODO资金池被盗,Roll被攻击,EasyFi密钥泄漏等一系列安全事件,不仅给用户带来了巨大的经济损失一次又一次的攻击事件表明,智能合同的安全形势非常严峻,研究和保障智能合同的相关安全漏洞非常迫切。
通付盾块链安全团队在第一季度选择了主流的41块链项目,复盖了高级语言层、虚拟机层、块链层、业务逻辑层的75项目的常见安全问题进行了安全扫描,共发现了安全问题2192项目。《通付盾2021Q1智能合同安全态势感知报告》(以下简称报告)从漏洞位置分布、危害等级分布和项目类型三个角度进行相关数据分析。
漏洞位置分布
智能合同的安全漏洞主要来自高级语言、虚拟机、块链和业务逻辑四个层面。
报告数据显示,目前智能合同安全问题集中在高级语言层,发现1500问题。具体分布如下:
高级语言层
高级语言是开发人员制作智能合同的工具。以太网智能合同的开发有很多高级语言,其中最常用的是Solidity语言。高级语言水平给智能合同带来的安全威胁主要有两个原因。一个是高级语言本身设计的缺陷引入的安全问题,另一个是开发者在制作高级语言时忽视代码质量引入的安全漏洞。报告数据显示,漏洞主要集中在命名不规范、编译器版本不一致、Solidity版本过时等方面,其中命名不规范漏洞数量最多,有517个。
虚拟机层
虚拟机是编译后的智能合同字节代码执行器。以太网坊虚拟机及其字节代码的设计规范定义在以太网坊技术黄皮书中,是各种以太网坊客户实现以太网坊虚拟机的标准指导手册。虚拟机水平的安全威胁主要有两个方面。一是以太网坊黄皮书设计智能合同字节代码规范和运行机制本身的缺陷,二是以太网坊客户在实现虚拟机的过程中,没有严格按照手册实现引进的问题。报告数据显示,问题主要集中在重新进入脆弱性,其中混乱引起的重新进入最多,有62个。
块链层
智能合同依过块链提供中心化、不可篡改、信赖等特性,块链平台对智能合同的运行也有很多影响。块链是智能合同安全可靠的基础,但块链本身的许多特性也给智能合同带来安全风险。报告数据显示,块链层的漏洞主要集中在随机性不足和时间戳的依赖上,其中时间戳的依赖最多,有17个。
业务逻辑层
区块链项目的业务逻辑现在越来越复杂,也面临越来越多的业务安全问题,以资产冻结、链条私有数据不加密、external声明不足等问题不仅仅是因为简单的代码编写错误,而且与业务逻辑设计密切相关报告数据显示,缺乏external声明的频率最高,有473个。
等级分布
脆弱性的本质是故意、非预期的安全缺陷和风险,基于国家块链脆弱性库块链脆弱性等级细则,结合业务特征和应用场景将威胁等级分为高、中、低、新闻4个等级。主要依据漏洞的危害程度、利用难度,辅以其他因素综合判定。危害程度主要根据机密性影响、完整性影响、可用性影响三个维度定义;利用难度主要根据攻击向量、攻击复杂度、认证三个维度定义。报告数据显示,智能合约安全问题主要集中在消息级,共发现1785项漏洞。具体分布如下:
报告对每个威胁等级的漏洞都进行了详细的分析,以高危漏洞为例:高危漏洞一般指中低利用难度且对智能合约的机密性、完整性、可用性或其经济模型产生恶劣影响,可对合约业务系统造成大量经济损失、局部功能不可用、大范围数据错乱、权限管理失控、关键功能失效、公信力下降,或间接影响与之关联的其他开发者_高级运维智能合约正确运行并造成大量损失等严重且多数不可逆的危害。报告数据显示,高风险的脆弱性主要集中在阴影状态变量、任何地址发布以太网硬币、修正器有外部变量、修正器修正状态变量等,其中修正器有外部变量最多、111个。
项目类型分布
此次选定的41个项目包括抵押贷款、现货交易、稳定货币交易、保险amp衍生品交易、支付amp的资产管理、锚定货币等类型。
报告数据显示,目前安全问题主要集中在现货交易项目中,发现1084项目漏洞。分布如下:
攻击原理
未知攻防结合41个项目的综合审计结果和第一季度实际发生的8起典型安全事件,报告了合同漏洞、钥匙泄露、经济攻击、流量攻击、计算力攻击的5个方面
合同漏洞
智能合同本质上是在块链上运行的代码,在大幅扩大块链业务范围的同时,块链也为智能合同提供了更好的运行环境。区块链配置的智能合同具有公开透明、自动独立执行、不可变更、自然具有经济属性、携带数字资产等特性,智能合同越来越受到黑客的关注和攻击。因为大部分智能合约都是开源的,黑客可以研究现有的合同漏洞,根据发现的合同漏洞开始攻击,给用户造成很大的经济损失。
密钥泄露:
块链账户地址是匿名账户,其账户安全性完全依赖于账户对应的密钥安全性。拥有账户的私钥相当于拥有对账户和账户资产的绝对控制权。
智能合同中的特殊账户,其安全性对合同整体和项目整体有很大影响,如owner账户、硬币账户、掌握私钥,可以利用这些账户进行合同不合法的操作。拥有owner账户的私钥可能会利用该owner账户直接调用owner地址的验证,重新开始合同,随意修改状态变量等非法操作的硬币账户的私钥可以利用该硬币账户无限制的硬币,盗取大量的数字资产Roll受到攻击是因为用户账户的私钥被黑客偷走,大量资金被盗的典型安全事件。
经济攻击:
DeFi项目业务逻辑设计复杂,利用闪电贷款这一新产品攻击的DeFi事件在过去的一年里陆续出现。这些安全问题的深层原因是,在设计业务逻辑时,没有考虑弹性供应机制、增发机制、清算机制设计不合理、链接价格和其他信息可以以低成本控制等重要因素,导致恶意套期保值、恶意增发等问题。攻击者通过操纵 AMM 资产池内的资产价格或者资产数量使关联协议蒙受损失,我们不妨称之为经济攻击。迄今为止出现的经济攻击通常分为提高套期保值和操纵预言机两种手法。
流量攻击:
块链网络中的流量攻击被称为DDoS(distributedonial-of-service)攻击。是指网络被大量的流量和特定的信息意淹没,系统崩溃。这种攻击的目标通常是着名企业(如各中心交易平台等)。这些攻击通常不是以获取个人信息或劫持系统为目的,而是为了制造巨大的混乱。本质上,发动这种攻击的黑客相当于网络恐怖分子。
为了避免DDOS攻击困难,通过允许更多用户参加分布式网络,可以更好地抵抗DDOS攻击,提高网络的安全性。不仅如此,块链技术还允许网民租借额外的带宽,支持流量过载的网络。这样,DDoS攻击的成功率也显着下降。
算力攻击:
当系统中有合作关系的恶意节点所控制的算力,超过诚实节点所控制的算力,系统就是有被攻击的风险。这种由恶意节点控制超过50%算力所发起的攻击,称为51%算力攻击。
通常基于PoW(工作量证明)共识机制的加密货币,存在51%算力攻击的威胁较大,比如比特币、比特现金和目前阶段的以太坊等;而非PoW共识算法的加密货币则能较好的避免51%算力攻击,如基于DPoS(委托权益证明)共识机制的EOS、TRON等。
安全建议
智能合约是部署和运行在区块链上的程序。借助区块链,智能合约可以实现各类去中心化应用(DApp)。与传统程序一样,智能合约中存在漏洞也在所难免。然而不同的是,智能合约运行在更为开放的环境中,并天生带有金融属性,且升级成本极高。这意味着其对安全的要求更高,任何一点瑕疵都可能带来无法预估的后果。构建智能合约安全体系,我们建议从以下几个方面着力。
技术安全
智能合同安全本身是一项系统性和专业性强的工程,需要综合考虑合同平台的基础安全、合同设计和安全、合同生态工具安全、合同交互和数据安全等各个方面,任何环节都存在细微问题作为去中心化应用的核心部分,智能合同也需要可靠的设计。不好的设计可能会入难以发现的深层次安全问题,这样的问题往往不能简单地通过扫描源代码来发现。智能合同设计者需要综合考虑业务逻辑、多角色权限和游戏、块链共识等多个因素。合约业务逻辑设计与实现应不存在明显安全问题。
部分智能合约会受管理员控制,而部分管理员甚至拥有极高的特殊权限,特定场景下会威胁合约其他用户的资产安全。为了智能合约安全,我们一方面需要警惕超级管理员作恶,另一方面需要考虑管理员身份被盗用所带来的后果。界面调用权限、管理员权限等需要明确区分。作为块链平台管理数字资产的重要组成部分,智能合同的安全性越来越受到关注。智能合同项目方应与具有专业安全能力的经营者合作,提高智能合同的安全性。
通付盾块链安全团队为客户提供高级块链安全服务,块链安全专家团队7*24小时为智能合同提供全生命周期安全保障,服务包括VIP安全审计服务、VIP合规审计服务、安全事故应急响应等项目可以参考通付盾块链安全团队的安全建议,完善合同开发和发布流程,从设计、开发、测试、审计到部署、监视、应急响应,保护智能合同的全生命周期安全。
获取通付盾智能合约安全态势感知季报2021Q1
关注通付盾订阅号,后台回复关键词智能合约,下载报告全文。
精彩评论