网赚论坛
标题:
关于 Parity 多签钱包账户冻结解释
[打印本页]
作者:
gqw156
时间:
2017-11-20 14:00
标题:
关于 Parity 多签钱包账户冻结解释
Parity 多签钱包合约再次发现重大漏洞,这是继七月份黑客攻击后又一新事件。不过此次漏洞并没有发生黑客盗币事件,漏洞导致使用 Parity 多签钱包的用户账户被冻结,此次漏洞只涉及使用 Parity 多签钱包合约的用户,imToken 用户不受影响。
事件快速回顾
问题最开始从 GitHub 的一个 issue 问题开始,结果演变成一个区块链历史上的一个惨案。GitHub 用户 devops199 在 Parity 项目开启了一个 issue #6995说:“任何人都可以杀掉你的合约”,该用户声称,他不小心杀掉: 0x863df6bfa4469f3ead0be8f9f2aae51c91a907b4 合约 ( 调用合约的记录:https://etherscan.io/tx/0x47f7cf ... 3f1482f690#internal ) 。
该用户调用了合约的 initWallet 方法 ,使自己成为合约的所有者。获得所有权后,他就杀掉该合约。
账户冻结的具体原因
initWallet 方法的漏洞在今年 7 月份就被发现,攻击者利用该漏洞获取了多签钱包合约的控制权,盗走了约 153000 ETH。Parity 已经修复这个漏洞,为了保护 initWallet 方法,添加了一个修饰符,确保合约部署过程中只能调用一次,如果攻击者试图多次调用 initWallet 方法都会被拒绝。但是现在有人又发现了新漏洞,该用户不是在多签钱包的合约调用 initWallet 方法,而是调用了多签钱包引用 library 合约的 initWallet 方法。之所以可以调用 initWallet 方法,因为 library 合约没有被初始化过,变量 only_uninitialized 没有被设置过。
使用 Parity 客户端部署一个多签钱包合约时,会使用 Parity 提供的智能合约模板。这个智能合约模板使用 delegateCall 方法调用上面提到的 library 合约地址。由于这个合约被 devops199 杀掉,多签钱包合约就变得无法使用,因为他们所有的逻辑都依赖于这个 library 合约。基本上,使用 Parity 客户端部署多签钱包合约都将受到影响 ,账户被冻结无法转账。
社区反应和进展
Parity 官方公布多签钱包合约漏洞,2017 年 7 月 20 日之后部署多签钱包的用户将受到影响,并承诺会短期内发布更新
非官方的统计,151 个合约地址受影响,共计 513743 ETH 被冻结,PolkaDot、iconomi、musiconomi 都受到影响PolkaDot 官方承认,他们的多签钱包被冻结
localethereum 在 Twitter 发布一个非官方投票,社区 59% 的人认为没有必要分叉
最后
事件目前还没有定论,我们会继续关注事态的发展,但相信以太坊社区会找到解决方案来拯救被冻结的资金。
相关参考:
https://blog.springrole.com/pari ... lained-768ac072763c
https://blog.zeppelinos.org/parity-wallet-hack-reloaded/
原文:http://mp.weixin.qq.com/s/oEK4-OjxaacMWuYCeJlyyg
欢迎光临 网赚论坛 (http://www.caifuba.net/)
Powered by Discuz! X3.1