只有不忘历史,我们才能展望未来。在接下来的时间里,我们将一起回顾区块链安全事件的总结和区块链技术的展望。
Parity 多重签名钱包被盗事件详细回顾:
arity 多重签名钱包被盗事件解析
事件简介:
奇偶多签名钱包,是目前应用最广泛的以太坊钱包之一。它的创始人和首席技术官是加文伍德,邰方的前首席技术官,黄皮书的作者。
7月19日,Parity发布安全警报,警告其钱包软件版本1。5及更高版本有一个漏洞。根据该公司的报告,确认有15.3万ETH(约3000万美元)被盗。
根据奇偶校验,该漏洞是由一个名为wallet.sol的多重签名合同中的bug引起的,后来白帽黑客恢复了大约37.7万个受影响的ETH。
这次攻击导致以太坊价格波动。Coindesk的数据显示,事件曝光后,以太坊的价格一度从235美元跌至196美元左右。这一事件主要是由不精确的合同代码引起的。我们可以从块浏览器看到黑客的钱地址:
从
可以看出,总共有153037个ETH被盗,受影响的合同代码都是奇偶校验创始人Gavin Wood写的多Sig库代码:
事件原因:
Github用户devops199打开#6995――任何人都可以删除合同。然后用户声称自己不小心删了合同。
漏洞原因:
由于initWallet函数是一个公共函数,攻击者调用initWallet,重新初始化钱包会覆盖之前契约的钱包所有者,即改变钱包所有者。
漏洞代码:
攻击过程的技术分析与还原:
第一步:成为合同的所有者
通过将value=0,msg.data.length 0的事务转移到这个契约地址,执行到_ Walletlibrary.delegatecall的分支,这个函数可以无条件调用契约中的任意函数,黑客调用一个名为initWallet的函数:
该函数再次调用initMultiowned函数:
不幸的是,initWallet没有进行检查来防止攻击者在契约初始化后调用initMultiowned。这个函数使得这个契约的所有者变成了攻击者,相当于从unix获得了root权限。
第二步3360转账,剩下的就清楚了。通过调用execute函数将钱转移到黑客的地址:
第一个参数3360 address to=0xb 3764761 e 297 d6f 121 e 79 c 32 a 65829 CD 1 DDB 4d 32,转账金额116779808c03e4140000是以卫为单位的eth,即82189000000000000。
总结:
通过对代码的分析,可以确定核心问题在于超越权限的函数调用。契约接口必须精心设计,访问权限必须明确定义,或者说,契约的设计必须符合一些成熟的模式或标准。部署前最好将合同代码提交给专业机构审核。否则,一个晦涩难懂的代码会让你血本无归。
提示:以太坊被盗不是以太坊区块链技术本身的问题,而是项目合同的技术安全问题。因此,一般公众误解为区块链安全有问题,这是不客观的。其次,安全是整个互联网金融的重要命题。智能合约的漏洞最近频频暴露,社区和公司一定要重视。目前智能合约还处于发展初期,没有像现有传统金融领域那样的审核机构和环节。智能合约的建设过程中迟早会加入这一缺失环节,有助于智能合约行业提高启动门槛和安全水平,促进其稳步推广应用。
(作者:WF翘曲未来;本文仅代表作者观点,不代表链家官方立场)
以上就是帮企客小编为大家带来的全部内容,希望可以帮助到大家。免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:bangqikeconnect@gmail.com