首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保利网络黑客是如何工作的?

保利网络黑客是如何工作的?
EN

Ethereum用户
提问于 2021-08-11 09:36:21
回答 2查看 392关注 0票数 4

最近,PolyNetwork遭到黑客攻击,导致数百万美元被耗尽。

保利团队说:

黑客利用了合同呼叫之间的漏洞,攻击不是由传闻中的单一守门员造成的。

我想知道是怎么做的。稳固代码中的漏洞是什么。

=>之前是否有可靠的处理机制或某种批准机制来防止这一攻击?

相关:

保利网络遭到重大黑客攻击,总共有6.1亿美元的密码货币被盗。

EN

回答 2

Ethereum用户

回答已采纳

发布于 2021-08-16 07:46:47

以下摘自这两个来源:

  • 来自Kelvin (链接)的推特帖子
  • 佩克谢(链接)的报告

基本上,保利有一份合同,负责核实它是否通过正确的帐户与之沟通。这是一个白名单,一个地址列表,这些地址被批准向系统发送关于不同链上txs状态的消息。这个合同叫做EthCrossChainData,我们称之为Data。如果你能把你的地址添加到这个白名单中,那么你就可以告诉保利你喜欢什么,它就会相信你。例如,你可以告诉保利,保利的所有资产现在实际上都是你的,因为你做了相关的交易,把资金锁定在其他链上,网络就会相信你。

黑客就是这么做的。但是怎么做呢?

Data合同属于另一个合同:EthCrossChainManager合同,我们称之为Manager合同。Manager的部分目的是执行来自其他链的调用,这意味着它具有执行一些任意代码的功能,在这种情况下,它的开放度也比应该的高一些--特别是,来自另一个链的任何人都可以调用一个名为verifyHeaderAndExecuteTx的函数,该函数可以调用其他的Poly契约。还记得ManagerData的所有者吗?这意味着,如果黑客能够想出如何创建一个有效负载,而Manager契约将解释为它应该将黑客添加到Data合同的白名单中,那么它就会这样做。

我相信你知道,黑客就是这么做的。但事实要复杂得多。verifyHeaderAndExecuteTx只执行与_method, "(bytes,bytes,uint64)"的函数签名一致的代码--函数签名是函数名称和参数的keccak256哈希的前4个字节(您可以在称为“函数签名”一节的优秀文章中更多地了解这一点)。这可能有助于阻止函数调用任何其他函数,但由于_method是用户生成的,黑客所要做的就是想办法在其中放置一些任意值,从而使keccak256哈希的前4个字节符合他们想要的目标有效负载。(换句话说,它们不需要哈希冲突,因为函数选择器只使用前四个字节,而碰撞四个字节并不难。)

一旦他们能够构建一个与函数签名相冲突的有效载荷,以便将自己添加到白名单中,他们就会将自己添加到所有可能的链上,并耗尽所有的资金。

票数 7
EN

Ethereum用户

发布于 2021-08-18 09:09:06

契约执行桥接任意(用户定义的)调用,代表用户拥有锁定(桥接)令牌库智能合同。黑客桥接假电话,使这一智能合同,添加黑客的公钥到令牌库智能合同。

任意(用户定义的)调用功能应该被提取出来,以分离smart契约,后者既没有平衡,也没有所有权。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/106943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档