火星链 火星链
Ctrl+D收藏火星链
首页 > Gate.io > 正文

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

作者:

时间:1900/1/1 0:00:00

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

问:我们常提到的智能合约漏洞真的是实际中威胁最大、发生最频繁的安全漏洞吗?

答:完全不是那样。例如“溢出”、“外部调用”等常提到的智能合约安全漏洞并不是最常发生,威胁最大的。

到底哪些安全威胁从发生频率和危害性上能称为Top10的呢?SharkTeam合约安全系列课程之[十大智能合约安全威胁]和您一起讨论和深入。第十课[详解重放攻击]。

一、什么是重放攻击

重放攻击是把原链网络上的交易拿到目标链网络上使用,即一笔交易重复执行,我们根据类型可以分为交易重放和签名重放。

交易重放是将原链上的交易一成不变放到目标链上,重放过后交易在目标链上可以正常执行并完成交易验证。

21Shares与Ark Invest合作重新提交现货比特币ETF申请:金色财经报道,加密货币交易产品发行方 21Shares 与 Cathie Wood 的 ARK Investment Management(Ark Invest)合作,重新提交了现货比特币 ETF 申请。[2023/4/25 14:26:19]

签名重放利用私钥签名的消息进行重放,重放过程中无需像交易重放那样去重放整个交易,而是重放相应的签名信息。

在实施EIP 155后,交易签名带有chainid,即链与分叉链之间的标识符。由于chainid不同,交易重放无法完成,签名重放可以间接完成。在以太坊完成分叉后,ETHW主网出现数起重放攻击事件,让我们回顾一下这些攻击事件前因后果。

二、攻击事件分析

2.1 Optimism

2022年6月9日消息,据Optimism与加密货币做市商 Wintermute 透露,2000万个Optimism代币被黑客盗取。重放攻击过程如下:

微美全息宣布被纳入Proshares 元宇宙ETF:金色财经报道,微美全息软件有限公司宣布被纳入Proshares Metaverse ETF(VERS)。VERS旨在为投资者提供有助于元宇宙发展的数字交互前沿的领先公司,以实现长期资本增值。

ProShares的VERS ETF追踪Solactive Metaverse主题指数,该指数依靠最先进的算法,旨在捕捉metaverse发展中的投资机会。

微美全息创始人CEO石硕表示:“我们很高兴被选为新的ProShares’VERS ETF的核心成分。被纳入VERS显示了我们作为一家新兴产业科技的发展,并反映了我们在元宇宙和全息AR行业的竞争优势。随着元宇宙和相关应用的不断发展,我们处于理想的位置,可以抓住增长机会,改善我们的元宇宙产品矩阵,并扩大我们的元宇宙市场份额。”(金融界)[2022/3/28 14:21:40]

(1)5月27日,Optimism地址0x2501向Optimism/L2上的0x4f3a地址转账2000万OP,0x4f3a地址在Ethereum/L1上是Wintermute的多签合约地址,但此时在Optimism/L2上面并没有部署合约;

美国SEC对ARK 21Shares比特币ETF的审议推至4月3日:金色财经报道,根据美国证券交易委员会周二提交的文件,该监管机构将把批准或不批准ARK 21Shares比特币ETF的最后期限从2月2日再延长60天,至4月3日。美国证券交易委员会助理秘书J.Matthew DeLesDernier在文件中指出,为监管机构考虑拟议的规则变更 \"指定更长的时间是合适的\",允许该ETF在Cboe BZX交易所上市。该交易所最初于 2021 年 7 月提交了申请 ARK 21Shares 比特币 ETF 的文件,美国证券交易委员会能够推迟其决定并将此次发行最多 180 天公开征求意见,并可以选择最终延长 60 天2 月 2 日。 4 月 3 日之后,SEC 应该无法进一步延长审议窗口,并将批准或不批准加密 ETF。

在另一份文件中,美国证券交易委员会还延长了拟议规则变更的窗口,允许追踪农业基金提供商 Teucrium 的比特币期货的 ETF 股票在 NYSE Arca 上市。该公司于 2021 年 5 月申请投资发行,可能会在 4 月 8 日之前收到美国证券交易委员会的最终决定。(cointelegraph)[2022/1/27 9:16:05]

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

CoinShares:比特币的机构资金流入创下新纪录:11月16日消息,据CoinShares报告显示,机构交易员已将创纪录的资金锁定在比特币投资产品中,比特币ETF是重要贡献者。上周来自机构投资者的每周比特币流入总额为9750万美元,而整个加密市场则为1.509亿美元。尽管2021年下半年交易量有所下降,但资本流入仍创下纪录,2021年下半年迄今已流入7.5亿美元,而上半年为9.6亿美元。[2021/11/16 21:55:41]

(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如下:

CoinShares首席战略官加入Stacks基金会担任董事会成员:3月18日消息,CoinShares首席战略官Meltem Demirors宣布加入Stacks基金会,担任其董事会成员。Stacks基金会为促进分布式计算网络Stacks(前身为Blockstack)发展的非营利组织。Stacks网络致力于将以太坊应用和智能合约引入比特币链。Meltem Demirors谈到比特币时表示,和黄金不同,比特币不是一块石头。关于比特币还有很多工作要做。“比特币从未改变,也不创新,以太坊是真正创新的。”这种说法是错误的,Stacks将帮助比特币做到这一点。此前2020年12月,分布式计算网络Blockstack发布Stacks 2.0版本白皮书。(Decrypt)[2021/3/18 18:55:14]

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函数。

在正常的交易中,我们通过nonce来进行排序交易,避免重复交易。在跨链中,我们会根据chianid进行识别链的类型,比如以太坊主网的chainid是1,ETHW主网的chainid是10001。

我们查看一下Omni Bridge验证chainid的逻辑,发现chainid的来源于unitStorage中存储的值,而不是通过操作码 CHAINID(0x46)直接读取的链上chainid。

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和nonce两个参数值,chainid用于识别链ID的标识符,nonce是交易次数计数值。

(2)记录签名是否使用过,比如利用mapping进行签名中对应参数映射为bool值,这样做可以防止签名多次使用。

(3)项目上线前,需联系专业的第三方专业审计团队进行审计。

来源:tuoniaox

鸵鸟区块链

媒体专栏

阅读更多

金色早8点

比推 Bitpush News

Foresight News

PANews

Delphi Digital

区块链骑士

深潮TechFlow

链捕手

区块律动BlockBeats

DeFi之道

标签:AINHAICHAChainplugchain币是那国发行的rushAI3X Short TomoChain Tokenugchain币最新资讯

Gate.io热门资讯
BAN:Bankless:币安将会是 FTX 2.0?这种担忧从何而来

撰文:Donovan Choy来源:Bankless本周,许多人都在公开质疑币安(Binance)是否正在朝着自身崩溃的方向发展。对此,我们深入研究了引发这些担忧的原因.

1900/1/1 0:00:00
ORN:Tornado Cash社区走上了“自我救赎”道路

OFAC明确表示过,所有与 Tornado Cash 类似的应用程序都将会受到美国的制裁,这无疑浇灭了大多数工程师开发隐私协议的热情,也不免让人们对隐私应用的未来产生担忧.

1900/1/1 0:00:00
MET:巨头遇挫 热潮退去 元宇宙发展何去何从

2022年,是元宇宙在互联网语境里祛魅的一年,以Meta、微软为代表的头部公司在元宇宙发展方面纷纷陷入困境.

1900/1/1 0:00:00
GAM:解读 2022 GameFi 年度报告 Web3 游戏的潜力有待进一步发掘

近期,海外第二大游戏平台 Epic 推出一个不断增长的 Web3 编程语言列表,其中包括 Solidity 和 Rust 等开发语言,该开源产品将面向所有程序员、艺术家和设计师开放.

1900/1/1 0:00:00
NBS:NFT的2022:造神结束 细分开始

撰文:0xLaughing,律动 BlockBeats  2021 年是 NFT 开始走向大众的一年,「NFT」当选了《柯林斯词典》2021 年度词汇.

1900/1/1 0:00:00
LASH:重走 MEV 叙事史:从 5 年前说起

作者:James Prestwich编译:DeFi 之道5 年前,我写了一篇文章《矿工不是你的朋友?》,将 MEV 这个概念带到了以太坊世界。当时,我们并没有将这个概念称为 MEV.

1900/1/1 0:00:00