通付盾2021Q1智能合约安全态势感知报告

文章正文
发布时间:2024-08-11 11:17

  通付盾区块链安全团队(SharkTeam)专注于区块链和智能合约安全,由拥有多年一线网络安全及区块链实战经验的团队成员组成,精通区块链和智能合约底层原理,具备完善的漏洞挖掘和智能合约审计能力,可提供全面的威胁建模、合约审计、应急响应服务,已帮助多个知名区块链项目发现并修复安全漏洞,致力于保护用户数字资产安全与隐私安全。

  " In Math,We Trust !"

  内容概览

  智能合约这一概念由计算机学家和法学家尼克·萨博在20世纪90年代提出,是区块链至关重要的组成部分,极大地扩展了区块链的应用场景与现实意义,目前区块链与智能合约技术已被广泛地应用于股权众筹、游戏、保险、供应链、物联网等领域。

  但伴随着区块链和智能合约产业的不断发展,随之而来的安全事件也不断爆发。相比于普通的程序而言,智能合约更容易成为攻击者的目标。一方面,智能合约通常用于管理区块链平台上的数字资产,对智能合约的攻击可能会为攻击者带来更高的经济价值;而更为重要的是,引入智能合约的初衷在于借助区块链的特性来保证合约的可信赖,而智能合约漏洞会使合约出现非预期的行为,从而可能使其变为一份“不平等合约”,而失去了智能合约最根本的意义。

  仅2021年第一季度就已发生SushiSwap第二次被攻击、Alpha Finance 与 Cream被攻击、Yearn.finance闪电贷攻击、Furucombo被攻击、PAID Network被攻击、DODO资金池被盗、Roll被攻击、EasyFi密钥泄漏等一系列安全事件,不仅给用户造成了巨大的经济损失,同时也使得智能合约的公平、可信赖受到挑战和质疑。一次又一次的攻击事件表明,智能合约的安全形势已十分严峻,对智能合约的相关安全漏洞开展研究并保障其安全已十分迫切。

  通付盾区块链安全团队(SharkTeam)在第一季度选取了主流的41 个区块链项目,并对覆盖高级语言层、虚拟机层、区块链层、业务逻辑层的75 项常见安全问题进行了安全扫描,共计发现安全问题2192 项。《通付盾2021Q1智能合约安全态势感知报告》(以下简称为“报告”)从漏洞位置分布、危害等级分布和项目类型三个角度进行相关数据分析。

  漏洞位置分布

  智能合约的安全漏洞主要来自于高级语言、虚拟机、区块链和业务逻辑四个层面。

  报告数据显现,目前智能合约安全问题重点集中在高级语言层,共发现1500 项问题。具体分布如下:

  高级语言层

  高级语言是开发者进行智能合约编写的工具。以太坊智能合约开发有多种可以使用的高级语言,其中最为常用的是 Solidity语言。高级语言层面为智能合约带来的安全威胁主要有两个原因,一个是高级语言自身设计的缺陷所引入的安全问题,另一个则是开发者在编写高级语言过程中因为忽视代码质量而引入的安全漏洞。报告数据显示,漏洞主要集中在“命名不规范”、“编译器版本不一致”、“Solidity版本过时”等方面,其中“命名不规范”漏洞数量最多,有5 17 个。

  虚拟机层

  虚拟机是编译后的智能合约字节码执行器。以太坊的虚拟机及其字节码的设计规范被定义在以太坊技术黄皮书中,是各种以太坊客户端实现以太坊虚拟机的标准指导手册。虚拟机层面的安全威胁主要有两个方面,一是以太坊黄皮书设计智能合约字节码规范和运行机制本身的一些缺陷,二是不同的以太坊客户端在实现虚拟机的过程中,因没有严格按照手册实现而引入的问题。报告数据显示,问题主要集中在重入漏洞,其中“乱序引起的重入”最多,有6 2 个。

  区块链层

  智能合约依靠区块链来提供去中心化、不可篡改和信任等特性,区块链平台对智能合约的运行也有很多影响。区块链对于智能合约来说,虽然是其安全可信的根基,但区块链本身的很多特性也会给智能合约带来安全风险。报告数据显示,区块链层的漏洞主要集中在“随机性不足”和“时间戳依赖”,其中“时间戳依赖”最多,有1 7 个。

  业务逻辑层

  区块链项目的业务逻辑目前越来越复杂,也面临越来越多的业务安全问题,以DeFi为例,如资产冻结、链上私有数据未加密、缺少external声明等问题并非由单纯的代码编写错误导致,更多与业务逻辑设计紧密相关,因此在项目上线前要进行严格的业务流程测试,仔细分析设计中的薄弱环节,防止业务问题的发生。报告数据显示,“缺少external声明”出现的频率最高,有4 73 个。

  威胁 等级分布

  漏洞本质是非故意、非预期的安全缺陷或风险,基于国家区块链漏洞库《区块链漏洞定级细则》,并结合业务特点及应用场景将威胁等级分为高、中、低、消息四个等级。主要依据漏洞的危害程度、利用难度,辅以其他因素综合判定。危害程度主要根据机密性影响、完整性影响、可用性影响三个维度定义;利用难度主要根据攻击向量、攻击复杂度、认证三个维度定义。

  报告数据显示,智能合约安全问题主要集中在消息级,共发现1785 项漏洞。具体分布如下:

  报告对每个威胁等级的漏洞都进行了详细的分析,以“高危”漏洞为例:高危漏洞一般指中低利用难度且对智能合约的机密性、完整性、可用性或其经济模型产生恶劣影响,可对合约业务系统造成大量经济损失、局部功能不可用、大范围数据错乱、权限管理失控、关键功能失效、公信力下降,或间接影响与之关联的其他智能合约正确运行并造成大量损失等严重且多数不可逆的危害。报告数据显示,高危漏洞主要集中在“影子状态变量”、“任意地址发布以太币”、“修改器中有外部变量”、“修改器修改状态变量”等,其中“修改器中有外部变量”最多,有1 1 个。

  项目类型分布

  本次选取的41个项目包含:抵押借贷、现货交易、稳定币交易、保险&衍生品交易、支付&理财、锚定币等类型。

  报告数据显示,目前安全问题主要集中在现货交易项目中,发现1084 项漏洞。分布如下:

  攻击 原理 分析

  未知攻焉知防,结合41个项目的综合审计结果及第一季度实际发生的8起典型安全事件,报告从合约漏洞、密钥泄露、经济攻击、流量攻击、算力攻击5个方面分析了相关攻击原理并提出防范建议。

  合约漏洞

  智能合约本质上是一段运行在区块链上的代码,其极大地扩展了区块链的业务范围,同时区块链也为智能合约提供了更好的运行环境。部署在区块链上的智能合约具有公开透明、自动化独立执行、不可更改以及天然带有经济属性并携带数字资产等特性,因此智能合约越来越受到黑客的关注与攻击。因为大多数智能合约都是开源的,黑客可以研究现有的合约漏洞,并根据发现的合约漏洞发起攻击,给用户造成了极大的经济损失。

  密钥泄露:

  区块链账户地址属于匿名账户,其账户的安全性完全依赖于账户对应的私钥的安全性。持有账户的私钥,相当于拥有对账户以及账户资产的绝对控制权。

  智能合约中的一些特殊账户,其安全性对整个合约甚至整个项目有着极大的影响,例如owner账户、铸币账户,掌握了其私钥,就可以利用这些账户对合约进行某些不合法的操作。若拥有了owner账户的私钥,则可能利用该owner账户直接调用owner地址的验证,从而对合约进行重新初始化、随意修改状态变量等非法操作;若拥有的铸币账户的私钥,则可以利用该铸币账户无限制的铸币,然后盗取大量数字资产,从而引起账户的重大的损失。Roll被攻击就是因为用户账户的私钥被黑客盗取引起的大量资金被盗的典型安全事件。

  经济攻击:

  DeFi项目的业务逻辑设计复杂,利用闪电贷这种新型产品进行攻击的DeFi事件在过去的一年里层出不穷。这些安全问题的深层次原因在于,在设计业务逻辑时,未考虑到某些关键性因素,如:弹性供应机制、增发机制、清算机制设计不合理、链上价格及其他信息可被低成本操控等,导致了恶意套利、恶意增发等问题。攻击者通过操纵 AMM 资产池内的资产价格或者资产数量使关联协议蒙受损失,我们不妨称之为经济攻击。至今出现的经济攻击通常分为哄抬套利和操纵预言机两种手法。

  流量攻击:

  在区块链网络中的流量攻击被称之为DDoS(distributed denial-of-service)攻击。是指网络被大量的流量或特定信息蓄意淹没,从而引发系统崩溃。此类攻击的目标通常为知名企业(如各个中心化交易平台等)。这些攻击通常不以获取个人信息或劫持系统为目的,而是为了制造巨大的混乱。从本质上讲,发动此类攻击的黑客的相当于网络恐怖分子。

  想要避免DDoS攻击难度比较大,但也可以通过允许更多用户加入分布式网络,以更好地抵御DDoS攻击,进而增强网络的安全性。不仅如此,区块链技术也允许网络用户出租额外带宽,以支持那些流量过载的网络。这样一来,DDoS攻击的成功率也将显著降低。

  算力攻击:

  当系统中有合作关系的恶意节点所控制的算力,超过诚实节点所控制的算力,系统就是有被攻击的风险。这种由恶意节点控制超过50%算力所发起的攻击,称为51%算力攻击。

  通常基于PoW(工作量证明)共识机制的加密货币,存在51%算力攻击的威胁较大,比如比特币、比特现金和目前阶段的以太坊等;而非PoW共识算法的加密货币则能较好的避免51%算力攻击,如基于DPoS(委托权益证明)共识机制的EOS、TRON等。

  安全建议

  智能合约是部署和运行在区块链上的程序。借助区块链,智能合约可以实现各类去中心化应用(DApp)。与传统程序一样,智能合约中存在漏洞也在所难免。然而不同的是,智能合约运行在更为开放的环境中,并天生带有金融属性,且升级成本极高。这意味着其对安全的要求更高,任何一点瑕疵都可能带来无法预估的后果。构建智能合约安全体系,我们建议从以下几个方面着力。

  技术安全

  智能合约安全本身是一个系统性和专业性极强的工程,需要综合考虑合约平台底层安全、合约设计与实现安全、合约生态工具安全、合约交互与数据安全等各方面,任何一个环节出现细微问题都会留下极大的隐患。

  业务安全

  作为去中心化应用的核心部分,智能合约还需要可靠的设计。糟糕的设计可能会引入难以发现的深层次安全问题,这类问题往往无法简单通过扫描源代码发现。智能合约设计者需要综合考虑业务逻辑、多角色权限和博弈、区块链共识等多方面因素。合约业务逻辑设计与实现应不存在明显安全问题。

  部分智能合约会受管理员控制,而部分管理员甚至拥有极高的特殊权限,特定场景下会威胁合约其他用户的资产安全。为了智能合约安全,我们一方面需要警惕超级管理员作恶,另一方面需要考虑管理员身份被盗用所带来的后果。接口调用权限、管理员权限等需要划分清晰。

  安全服务

  作为区块链平台上管理数字资产的重要组成部分,智能合约的安全性必将受到越来越多的关注。智能合约项目方应与具有专业安全能力的服务商合作,提高智能合约的安全性。

  通付盾区块链安全团队为客户提供高级别的区块链安全服务,区块链安全专家团队7*24小时为智能合约提供全生命周期的安全保障,服务包括:VIP安全审计服务、VIP合规审计服务、安全事故应急响应等,帮助客户构建智能合约安全体系。项目方可参照通付盾区块链安全团队的安全建议,完善合约开发和发布流程,从设计、开发、测试、审计到部署、监控、应急响应,保护智能合约全生命周期安全。