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

admin1年前签约新闻88

事件回顾:

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 等修饰器。

相关文章

三部门出手!住房公积金阶段性新政来了,企业可缓缴、个人不能正常还贷不算逾期…(2020住房公积金缓交规定)

继5月23日国常会部署稳经济一揽子措施后,住建部等三部门也出手抗疫纾困。 5月24日,住建部、财政部、人民银行发文,要求实施住房公积金阶段性支持政策,包括企业可缓...

电子招标与传统采购招标的八大区别!(电子招标采购是什么意思)

电子招标与传统采购招标的八大区别!(电子招标采购是什么意思)

政府采购电子化招标(以下简称“电子招标”),即采取数据电文形式,依托电子招标投标系统完成全部或者部分招标投标交易、公共服务和行政监督活动。与传统采购模式相比,在文件载体、操作过程等...

签约仪式_合作签约仪式要做的准备工作?电子签约操作步骤流程(签约仪式有哪些环节)

签约仪式_合作签约仪式要做的准备工作?电子签约操作步骤流程(签约仪式有哪些环节)

签约仪式是一项重要的社会活动,它为双方达成合同奠定了基础。签约仪式意义重大,它不仅仅是双方当事人达成协议的体现,也是一次双方合作达成新高度的体现。签约仪式有一定的礼仪流程,通过此仪式,可以充...

攻略 | 网上提取公积金咋操作?详细流程来了!(网上提取公积金怎么操作打到申请阈值)

攻略 | 网上提取公积金咋操作?详细流程来了!(网上提取公积金怎么操作打到申请阈值)

近日 天津市住房公积金管理中心推出  按揭贷款联网提取公积金服务  市民可通过 市公积金中心官网 手机APP 官方微信公众...

科特派“羊倌”的新品种 带东北乡亲们发了“羊财”(宁夏科特派)

刘玉峰在黑龙江省桦南县湖羊养殖场进行技术指导受访者供图 “是科技特派员当领头的‘羊倌’,带领我们发了‘羊财’。”4月14日,黑龙江省拜泉县永勤乡跃先村的村民告诉科技日报记者。...

莱西市水集街道:组织网格员签订市容和环境卫生责任区责任书(辖区网格员的职责)

为进一步落实市容环境卫生长效管理机制,提升城市文明程度和整体形象,增强临街商户、单位履行市容环境卫生的责任意识,共创“洁序净美”的城市环境。自6月份以来,在莱西市城市管理委员会办公室的指导下...

发表评论    

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