智能合约是促进区块链发展的核心要素之一,其应用范围广泛,有许多交易用例和各类应用程序。金融服务、供应链管理、物联网网络等各行各业中都能找到智能合约的具有前景的用例。
同时,智能合约不是绝对安全的。行业中所频频发生的智能合约安全事件中可以看出,智能合约的安全需要维护和保障。
什么是智能合约安全?
智能合约安全是指开发者、用户和交易所在创建智能合约或与智能合约交互时使用的安全原则和实践。计算机学报发布的《智能合约的合约安全和隐私安全研究综述》研究中定义了智能合约的安全有两个维度:合约安全和隐私安全;
-
合约安全主要针对合约设计文档、合约代码、合约运行状态等,要求智能合约不存在设计缺陷、代码漏洞等不足,涉及智能合约的设计、实现、测试、运维及部署等多个阶段;
-
隐私安全主要针对智能合约代码隐私及合约执行过程中涉及的相关数据隐私,要求保护程序代码以及程序执行过程中的交易数据不会被非授权节点获取,主要体现在区块链系统的合约代码和合约数据两方面。
智能合约安全事件
今年一个重大安全事件的案例是在 2022 年 11 月 2 日, Derbit Exchange 的热钱包漏洞事件。漏洞所导致的私钥泄露可能导致以太坊和比特币链上的 USDC、ETH 和 BTC 损失约 2800 万美元。Derbit Exchange 在事件发生后公开表示,损失将由公司储备金弥补。为了解决此类事件,Derbit Exchange 也提出“99% 的用户资金存放在冷藏库中,以限制此类事件的影响”。
安全漏洞和安全事故等在行业中并不少见,智能合约安全问题需要得到重视。以下是近期与智能合约安全相关的重大事故:
-
2022 年 8 月,由于与导入账户相关的问题,数千个 Solana 钱包损失了约 800 万美元。
-
2022 年 2 月,在虫洞跨链桥攻击中,以太坊和 Solana 损失了近 3.2 亿美元。
-
2021 年 8 月,黑客通过 Poly Network 的智能合约漏洞成功实施了价值 6.13 亿美元的加密货币抢劫。
-
早先的智能合约安全问题的例子,例如 Parity technologies 被盗 1.5 亿美元,Genesis DAO 被盗 5000 万美元。
-
······
智能合约技术的基础之一是其不变性。
部署后不可更改是一项出色的安全功能,但这也使得部署后出现的已知错误难以修补。常发生的一些安全事故往往出自几类重复的安全漏洞,这些安全漏洞主要有:
重入(Reentrancy Attack):
当利用者在第一次调用完成之前重复调用函数时,就会发生重入漏洞。利用此漏洞的攻击者可以在余额设置为 0 之前多次提取余额。
Over/Under Flows:
以太坊虚拟机对所有整数使用固定大小的数据。如果整数变量只能存储 0-255 之间的数字,则尝试存储高于或低于可接受值的整数将导致上溢或下溢。这些漏洞允许攻击者创建意想不到的逻辑流。
抢先交易:
抢先交易攻击利用了区块链技术处理交易的方式。由于交易被收集到区块中并作为各个区块的一部分添加到分类账中,不良行为者可以购买大量资产以响应将波动资产价格的大笔交易。通过增加比他们所针对的大笔交易更高的费用,他们可以保证他们的交易将被首先处理。在大笔交易使资产价格出现波动后,剥削者出售他们购买的资产。
计算不正确:
由于智能合约处理大量资金,偶尔还会处理各种类型的资产,因此所有数学计算都必须正确。不正确的小数处理和费用计算可能导致资金损失或资金被无限期锁定。
如何保障智能合约的安全?
以太坊在官网上展示了其定义的智能合约的最低安全限度,其中包括:
-
所有代码应该被存在于一个版本控制系统当中,例如 git
-
所有的代码修改都应该通过拉取请求来进行
-
所有的拉取请求都应该有至少一个审核员。如果这是一个个人项目,请考虑寻找另一位个人作者和一个交易代码审核员。
-
使用开发以太坊环境(请参阅:Truffle),只需一个命令就可以编译、部署和运行一套针对您的代码的测试
-
已经通过 Mythril 和 Sliter 等基本代码分析工具运行了代码,最好是在合并每个拉取请求之前,比较输出中的差异。
-
Solidity 代码编辑器不会发出任何警告
-
您的代码有据可查
这是从开发过程中能够定义的最低限度的安全标准,也是智能合约开发者行之有效的安全指南。然而,保障智能合约的安全的复杂度是远高于最低安全限度的。
除了在开发过程中遵守有效的安全标准之外,智能合约还需要有一个深思熟虑的错误修复升级路径。例如,添加速率限制和最大使用量功能是管理风险金额的绝佳方式;同时安全类工具也提供了一定帮助,智能合约审计环节也应该慎重对待;在测试网上发布智能合约并向用户和其他开发者提供漏洞奖励是另一种发现潜在漏洞的好方法。
区块链技术的未来取决于构建其中的开发人员。智能合约安全某种程度上被广泛认为是区块链安全,因此独立开发者的行为也会影响公众对区块链的认知。频发的安全事故势必会伤害到用户的信任和信心。
白话区块链|同步全球区块链资讯、区块链快讯、区块链新闻
本站所有文章数据来源:金色财经
本站不对内容真实性负责,如需转载请联系原作者
如需删除该文章,请发送本文链接至oem1012@qq.com