回首Delegatecall漏洞下的Parity多重签名合约(回首过往是成语吗)

admin2年前签约新闻187

事件回顾:

2017年7月19日,Parity Multisig 电子钱包合约被爆出漏洞,攻击者从三个高安全的多重签名合约中窃取到超过15万以太坊(约3000万美元)。

首先我们先来简单了解一下Parity 钱包:

这个钱包的特点有几个:

第一个是它因为是重新写的代码,所以跑起来更快,占用系统的资源更少。

第二个特点是它的同步功能做得更好,所以其他钱包很久不能同步的的时候,它还是能够很快同步。

第三个特点,它虽然是一个全节点钱包,但是它把那些很早的区块只留下了区块头,其他内容删减了,所以同步好的区块的大小也就几个G,而如果是用以太坊的官方全节点钱包,光区块大概就得有40个G。

第四个特点,这个对ICO特别有用,就是它能够设置定时发送交易,能够在到达某个区块数的时候自动发送转账交易。

这个钱包不好的地方在于它对发送代币的支持不太好。不过这个问题可以通过把它的地址导入 imToken 来实现代币的方便发送。

二、漏洞缘由:

delegatecall的含义:

.delegatecall(...) returns (bool):issue low-level DELEGATECALL, returns false on failure, forwards all available gas, adjustable。 call与delegatecall的功能类似,区别仅在于后者仅使用给定地址的代码,其它信息则使用当前合约(如存储,余额等等),函数的设计目的是为了使用存储在另一个合约的库代码。

所以开发者在提供这样的库时,就要如何安排存储来达到这样的目的。

注意delegatecall是危险函数,他可以完全操作当前合约的状态。

黑客通过 delegatecall 调用 initWallet 函数, initWallet 没有检查以防止攻击者在合同初始化后调用到 initMultiowned ,可以将Parity Wallet库合约变为常规多sig钱包并成为它的所有者。意思就是漏洞使得黑客能通过 library 库函数,让自己成为多个 Parity 钱包的新主人,然后调用转账函数把钱转走。

访问控制问题在所有程序中都很常见,而不仅仅是智能合约。

事实上,人们经常通过其公共或外部功能访问合约的功能。

尽管不安全的可视性设置会给攻击者直接访问合约的私有价值或逻辑的方式,但访问控制旁路有时更加微妙。

这些漏洞可能发生在合约使用已弃用tx.origin的验证调用者时,长时间处理大型授权逻辑require并delegatecall在代理库或代理合约中鲁莽使用。

三、具体分析:

1、 initWallet 函数可以改变合约的 owner 。

2、 代码里使用了 delegatecall() 函数,导致所有 public 函数对所有人可见。包括 initWallet 函数。而且 initWallet 函数也没有作任何防护措施。

3、 攻击者先获取owner权限,将调用函数的指令放在Data中。

4、 然后执行execute获取所有 funds:

四、防范方法

1、谨慎使用 delegatecall() 函数。

2、明确函数可见性,默认情况下为public类型,为防止外部调用函数被内部调用应使用 external。

3、加强权限控制。敏感函数应设置 onlyOwner 等修饰器。

相关文章

一年“游山玩水”200多天,字节跳动神仙岗位了解一下(字节跳动做啥的)

字节跳动有一个神仙岗位,主要工作内容是探访祖国风光秘境,白天是“旅游博主”游山玩水,晚上回宾馆是“社会学家”写考察报告——这是我们扶贫团队的A面。 一年出差离家200多天,一周7*2...

茂名移动“5G+工业互联网”,提速工业经济数字化转型(茂名移动总部地址)

9月27日下午,广东省石油炼化行业工业互联网标识解析二级节点建设项目启动会暨建设运营合作签约仪式在茂名国信监理集团会议中心举行。广东核创网络科技有限公司与茂名移动现场签订了项目应用接入战略合...

沈阳:全面优化公积金楼盘签约流程,大力压缩楼盘备案时限

5月20日,据“沈阳发布”消息,沈阳出台住房公积金阶段性支持政策,全面优化公积金楼盘签约流程,大力压缩楼盘备案时限。 其中明确,商品住房下销许,楼盘签约即受理。开发企业取得《商品房预...

全国高校毕业生网签平台开通 毕业生:这些就业帮助别错过(高校毕业生网签流程需要多久完成)

全国高校毕业生网签平台开通 毕业生:这些就业帮助别错过(高校毕业生网签流程需要多久完成)

近日 全国高校毕业生毕业去向登记与网上签约平台开通 优化高校毕业生求职就业服务流程 方便用人单位与毕业生网上签约 用人单位在网签平台注册后,通过平台搜索已注册...

天津市公积金你需要了解的(天津市公积金中心官网)

一、异地转入 申请条件 职工在天津稳定就业并正常缴存住房公积金的,可将原就业地缴存的住房公积金转入本市。职工申请办理异地转入业务时应在天津市开立住房公积金账户6个月以上,且连...

各路媒体人热议王小平黄松被查:感觉无法无天了,这次书法怎么签

  虽然中国足协主席陈戌源已经被带走调查了,但是这并不意味着足球的反腐扫黑就会停下脚步,相反反腐扫黑的步伐还加快了,今天中国足坛又曝出了大瓜也是让外界非常的惊讶。纪委宣布足协纪律委员会主任小...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。