首页 > 热点新闻 > SharkTeam:十大智能合约安全威胁之重放攻击
SharkTeam  

SharkTeam:十大智能合约安全威胁之重放攻击

摘要:重放攻击是把原链网络上的交易拿到目标链网络上使用

问:我们常常提及智能合约系统漏洞可以说是实际操作中威协较大、产生最频繁地网络安全问题吗?

答:完全不是那般。比如“外溢”、“外界启用”等常提及智能合约网络安全问题并不是最经常产生,威协最大的一个。

究竟什么安全风险从产生次数和不良影响上可以称之为Top10的啊?SharkTeam合约安全性系列课程之【十大智能化合约安全风险】和你一起讨论和深层次。第十课【详细说明重放进攻】。

image.png

一、什么叫重放进攻

重放进攻就是将原链互联网上的交易取得总体目标链在网络上应用,即一笔交易重复执行,根据种类可分为交易重放和签名重放。

交易重放是将该链上的交易一成不变放进总体目标链上,重放之后交易在总体目标链上能正常实行并进行交易认证。

签名重放运用公钥签名消息开展重放,重放环节中不用像交易重放那般去重放全部交易,反而是重放对应的签名信息内容。

在执行EIP 155后,交易签名带有chainid,即链与分岔链间的标志符。因为chainid不一样,交易重放无法执行,签名重放能够间接性进行。在以太币进行分岔后,ETHW主网上线发生我排重放进攻事情,使我们回顾一下这种进攻事情来龙去脉。

二、进攻事件分析

2.1 Optimism

2022年6月9日信息,据Optimism与数字货币做市 Wintermute 表露,2000万只Optimism货币被黑客窃取。重放进攻全过程如下所示:

(1)5月27日,Optimism详细地址0x2501向Optimism/L2里的0x4f3a地址转帐2000万OP,0x4f3a地址在Ethereum/L1上有Wintermute的多签合约详细地址,但这时在Optimism/L2上边并没布署合约;

(2)6月1日,黑客详细地址0x8bcf布署合约0xe714。

(3)6月5日,黑客根据重放Ethereum/L1里的交易创立了Gnosis Safe: Proxy Factory 1.1.1合约,其地点与Ethereum/L1上一样;随后详细地址0x60b2根据合约0xe714启动了多签合约0x4f3a,合约使用权归黑客全部,因而5月27日转到的2000万OP被黑客窃取。在Gnosis Safe: Proxy Factory 1.1.1合约中,在其中建立代理商合约函数createProxy如下所示:

image.png

Gnosis Safe: Proxy Factory 1.1.1合约采用的是0.5版本Solidity,使用new来建立合约时使用的是create指令,且不是create2。使用create指令建立合约,合约详细地址是msg.sender及其nonce进行计算的。在Ethereum/L1上边,建立多签合约0x4f3a的msg.sender便是Gnosis Safe: Proxy Factory 1.1.1地址,黑客在Optimism/L2根据重放交易来创办于Gnosis Safe: Proxy Factory 1.1.1合约的重要其实就是为了确保在Optimism/L2上建立合约0x4f3a的msg.sender和在Ethereum/L1上一致,那样黑客能够非常方便根据智能化合约(合约0xe714)调用createProxy函数公式来构建出地址是0x4f3a的合约。

(4)6月5日,多签合约0x4f3a在接受到2000万OP后,将100万OP转帐给黑客详细地址0x60b2,再将100万OP换取变成720.7 Ether。

(5)6月9日,合约0x4f3a将这其中的100万OP转帐给帐户详细地址0xd8da, 其它的1800万OP仍在合约0x4f3a中。

此次进攻根源在于:交易重放、Solidity旧版系统漏洞及其碳链和主链交易签名认证等各项要素

2.2 Omni

2022年9月18日,以太币合拼结束后,PoW链遭受PoS链上交易的重放进攻,根源在于无线网桥未恰当载入并认证区块链的chainid。网络攻击最先根据Gnosis链的Omni跨链桥控制住了200 WETH,之后在PoW链上重放了同样的信息,赢得了额外200 ETHW。

(1)PoS链交易hash:0xbddb0cc8bc9949321e1748f03503ed1a20dd618fbf0a51dc5734c975b1f8bdf5

(2)PoW链交易hash:0x9c072551861ce384203516f4d705176a2d2e262d5b571d853467425f1a861fb4

大家比照发觉几笔交易浏览的合约同样,而且inputdata完全一致,即启用了同一个合约的同一个函数公式而且主要参数同样,依据同样的方式签名ID 0x23caab49得知,黑客调用safeExecuteSignaturesWithAutoGasLimit函数。

image.png

在正常交易中,我们可以通过nonce来进行筛选交易,防止反复交易。在跨链中,大家会依据chianid开展鉴别链的种类,例如以太币主网上线的chainid是1,ETHW主网上线的chainid是10001。

大家查看一下Omni Bridge认证chainid的逻辑性,发觉chainid的来源于unitStorage中存放数值,而非根据操作码 CHAINID(0x46)立即载入的链上chainid。

image.png

unitStorage是合约EternalStorage里的初始条件,sourceChainId()函数公式所属的合约BasicAMB继承BasicBridge和VersionableAMB。在其中,BasicBridge相继继承合约EternalStorage。这儿储存的chainid是事先存放好一点的,如果出现区块链的硬分叉而chainid又没重设或是chainid人为因素设定不正确,从合约角度上而言,因为没有根据操作码获得的chainid,不容易恰当认证跨链信息的具体chainid。

此次进攻根源在于:通常是Omni应用的solidity版原是0.4.24,使用的是手动式存放与更新chainid的方法,并没有根据EIP-1344所规定的CHAINID(0x46)操作码开展具体chainid获得。

三、防范措施

对于重放进攻关键有以下几点防止的办法:

(1)还可以在签名信息里加入chainid和nonce2个变量值,chainid用以鉴别链ID的标志符,nonce是交易频次计数值。

(2)纪录签名是不是用过,例如运用mapping开展签名中相匹配主要参数投射为bool值,这么做能够防止签名数次应用。

(3)项目上线前,需联络更专业的第三方技术专业财务审计精英团队开展财务审计。

公司介绍:SharkTeam的企业愿景是全方位维护Web3全球的安全性。团队人员遍布于北京、南京市、苏州市、美国硅谷,由全球各地资深的安全性专业人员高级科学研究人员构成,熟练区块链和智能合约的最底层基础理论,提供专业的智能化合约财务审计、链上剖析、应急处置等工作。已经与区块链生态体系各行各业的重要参加者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等创建合作关系关联。

image.png

Twitter:https://twitter.com/sharkteamorg

Discord:https://discord.gg/jGH9xXCjDZ  

Telegram:https://t.me/sharkteamorg 

大量区块链安全咨询和分析,点击进入连接查询

D查下|链上风险性审查 https://m.chainaegis.com

转载:驼鸟区块链

Tags:
免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:msy2134。