POLY NETWORK - 翻车



翻车;超大的那种。

6.11亿美元被盗。

这金额比Mt Gox事件还要多。也比几个小国家的国内生产总值多。甚至比整个rekt.news排行榜的总和还要多。

有史以来最大的加密货币黑客攻击...

Poly Network = rekt。

但究竟如何做到的呢?

来源:breadcrumbs.app, slowmist, blocksec

攻击者的ETH地址: 0xc8a65fadf0e0ddaf421f28feab69bf6e2e589963 攻击者的BSC地址: 0x0D6e286A7cfD25E0c01fEe9756765D8033B32C71

这不是一般的智能合约闪电贷/套利事件。

黑客在三个不同的链上利用了Poly Network的代理锁定合约。

以太坊:0x250e76987d838a75310c34bf422ea9f1ac4cc906

BSC:0x05f0fDD0E49A5225011fff92aD85cC68e1D1F08e

Polygon:0x28FF66a1B95d7CAcf8eDED2e658f768F44841212

来源:@kelvinfichter

"Poly有一个名为 "EthCrossChainManager "的合约。它是一个有特权的合约,有权从另一个链上触发消息。这是一个跨链项目的标准配置。

它有一个名为verifyHeaderAndExecuteTx的函数,任何人都可以调用它来执行一个跨链交易。

它(1)通过检查签名来验证区块头是否正确(似乎另一条链是一个poa侧链),然后(2)通过Merkle证明来检查交易是否包含在该区块中。代码在这里

该函数做的最后一件事是调用executeCrossChainTx,它对目标合约进行了调用。这就是关键的缺陷所在。Poly检查目标是一个合约,但他们忘记了防止用户调用一个非常重要的目标......EthCrossChainData合约

通过发送这个跨链信息,用户可以调用EthCrossChainData合约欺骗EthCrossChainManager,通过onlyOwner检查。现在,用户只需要制作正确的数据,就可以触发改变公钥的函数......

唯一剩下的挑战是如何让EthCrossChainData调用正确的函数。现在,围绕着Solidity如何选择你要调用的函数,出现了一点点的复杂性。

交易输入数据的前四个字节被称为 "签名哈希",或简称为 "sighash"。它是一个简短的信息,告诉Solidity合约你要做什么。

一个函数的sighash是通过取"<function name>(<function input types>) "的哈希值的前四个字节来计算的。例如,ERC20传输函数的sighash是 "transfer(address,uint256) "的哈希值的前四个字节。

Poly的合约愿意调用任何合约。然而,它只会调用与以下sighash相对应的合约函数:

呃......但是等等......。这里的"_method"是用户的输入。攻击者为调用正确的函数所要做的就是找出"_method"的某个值,当它与其他的值结合在一起并经过哈希处理时,它的前四个字节与我们目标函数的sighash相同。

只要稍加琢磨,你就能轻易地找到一些能产生正确sighash的输入。你不需要找到一个完整的哈希碰撞,你只需要检查前四个字节。那么这个理论是否正确呢?

嗯......这里是目标函数的实际sighash:

http://ethers.utils.id ('putCurEpochConPubKeyBytes(bytes)').slice(0, 10)

'0x41973cd9'

而攻击者精心制作的sighash...

http://ethers.utils.id ('f1121318093(bytes,bytes,uint64)').slice(0, 10)

'0x41973cd9'

太棒了。不需要泄露私钥! 只要制作正确的数据,然后......合约就会自己黑掉了!

人们需要从中吸取的最大的设计教训之一是:如果你有像这样的跨链中继合约,确保它们不能被用来调用特殊的合约EthCrossDomainManager不应该拥有EthCrossDomainData合约。

分别关注。如果你的合约绝对需要有这样的特殊权限,请确保用户不能使用跨链消息来调用这些特殊合约。"

在以太坊链上,黑客偷走了:

USDC - 96,389,444

WBTC - 1,032

DAI - 673,227

UNI - 43,023

SHIBA - 259,737,345,149

renBTC- 14.47

USDT - 33,431,197

wETH - 26,109

FEI USD - 616,082

在BSC链上,黑客偷走了:

BNB - 6,613.44

USDC - 87,603,373

ETH - 299

BTCB - 26,629

BUSD - 1,023

在Polygon链上,黑客偷走了:

USDC - 85,089,610

一共损失611,000,000美元。

在撰写本报告时,被盗资金位于以下钱包中:

ETH: 0xC8a65Fadf0e0dDAf421F28FEAb69Bf6E2E589963

BSC: 0x0D6e286A7cfD25E0c01fEe9756765D8033B32C71

Polygon: 0x5dc3603C9D42Ff184153a8a9094a73d461663214

DeFi的故事情节很少是直截了当的,这一次也不例外。

即使是匿名的演员也很喜欢受到关注。

漏洞发生后不久,一个意想不到的主角出现了,他的名字是hanashiro.eth

hanashiro.eth首先获得了关注,他向黑客发送关于如何处理USDT的提示,为此他从黑客那里收到了13.37个ETH作为奖励。

之后还有很多人向黑客发送消息,但都没有像hanashiro.eth这样成功。

hanashiro.eth以一种真正的加密货币本土的慈善表演水平,接着把他们偷来的钱捐给了一些支持我们行业的基础设施,如Infura、Etherscan和rekt.news

但是,并不是所有的资金都可以如此自由地获取。

Tether冻结了所有在以太坊链上被盗的3300万美元的资金。

他们的币--他们的选择......如果你使用USDT,一个值得记住的事实。

到了这一步,情况真的很糟糕;所有的目光都集中在Poly Network上,他们不得不发布一封给攻击者的公开信,乞求他们归还资金。

一条要求罪犯归还六亿美元的推特...... 当Gensler说我们正处于加密货币的 "狂野西部"阶段时,也许他是对的。

考虑一下故事中这时攻击者的心态。你认为他们感受到的更多是什么;兴奋,还是恐惧?

坐在电脑前窃取6亿美元,一定是一种超现实的体验。

然后试图洗掉这笔钱的经历一定也很激烈。

除了JPEGS之外,tornado.cash将是一个明显的起点,而这正是我们的黑客去的地方。

他给自己发送了一个包含以下信息的交易

想知道为什么是Tornado?矿工们会阻止我吗?请教教我

这是心理战术还是愚蠢的行为?在加密货币中,它永远不会很清楚......

带着6亿的资金在逃,并向成千上万的听众广播信息。

这名黑客越来越自信。

@WardBradt在推特上发布以下内容:

PolyNetwork黑客是不是不小心为这笔交易 0xb12681d9e使用了错误的发送者地址?该发送者地址与FTX、Binance、Okex账户相联系。

突然间,攻击者的态度变了。

当然,一个觉得有足够信心尝试这种规模的攻击的黑客不会犯这样一个基本的OPSEC错误?或者,他们使用了假的KYC证件......

无论怎样,我们开始看到攻击者的恐惧迹象。

黑客开始暗示他们可能会退回 "一些代币",甚至放弃代币,说他们 "对钱不太感兴趣"。

然后,黑客考虑创建一个DAO来分配被盗资金的想法

最后,压力变得太大了,黑客宣布他们 "准备投降"

在一个出乎意料和前所未有的举动中,攻击者现在正在将资金返还给Poly Network。

他们在一笔以太坊交易中宣布,他们 "准备好归还资金!"该交易是从用于攻击的同一个钱包中发送的。

在发送第一笔返还交易之前,黑客创建了一个名为 "黑客准备投降 "的代币,并将此代币发送给Poly Network,后者宣布他们已经建立了一个由多签控制的''已知的Poly地址''

黑客与Poly Network的谈话摘要可以在这里找到

在写这篇文章的时候,黑客已经返回了以下代币:

在以太坊上:260万美元

在BSC上:110万美元

在Polygon区块链上:100万美元

黑客是否会继续归还资金,或者这只是另一个噱头?

他们真的可以只归还资金而得到宽恕吗?

Poly Network。6.11亿。

你以为你知道DeFi中所有的高TVL协议。

这个行业的发展已经超过了我们的回声室所能处理的范围。

这可能是第一次,但它不会是我们在未来几年内看到的最后一次如此规模的黑客攻击。然而,市场似乎没有受到影响,而且确实如此。

无论,加密货币都会成为新闻,随着我们的行业成为常态,世界将不得不注意到

这只是进程中另一个不可避免的部分。


分享本文

REKT作为匿名作者的公共平台,我们对REKT上托管的观点或内容不承担任何责任。

捐赠 (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

声明:

REKT对我们网站上发布的或与我们的服务相关的任何内容不承担任何责任,无论是由我们网站的匿名作者,还是由 REKT发布或引起的。虽然我们为匿名作者的行为和发文设置规则,我们不控制也不对匿名作者在我们的网站或服务上发布、传输或分享的内容负责,也不对您在我们的网站或服务上可能遇到的任何冒犯性、不适当、淫秽、非法或其他令人反感的内容负责。REKT不对我们网站或服务的任何用户的线上或线下行为负责。