慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因_区块链前沿

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

慢雾以为,报复首要在于 EthCrossChainData 合约的 keeper 被窜改,而非私钥暴露致使。方今,黑客已发端连接了偿资本。

撰文:慢雾平安团队

2021 年 08 月 10 日,据慢雾区动态,跨链互职掌合同 Poly Network 遭遇黑客报复,慢雾平安团队第短暂间参与理会,并将理会完毕瓜分以下。

报复后台

Poly Network 是由 Neo、Ontology、Switcheo 基金会共通动作开创成员,宣传科技动作岁月供应方共通提议的跨链构造。

以下图,经历官方的先容咱们也许了解的看出 Poly Network 的架构计算:用户也许在源链上提议跨链买卖,买卖确认后由源链 Relayer 将区块头讯息同步至 Poly Chain,以后由 Poly Chain 将区块头讯息同步至宗旨链 Relayer,宗旨链 Relayer 将考证讯息转至宗旨链上,随后在宗旨链施行区块头考证,并实行用户预期的买卖。

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

以下是本次报复触及的全部所在:

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

报复中心

  1. 源链未对提议的跨链职掌的数据施行查看。
  2. 宗旨链未对分化出的宗旨挪用合约和挪用参数施行查看。
  3. EthCrossChainData 合约的 owner 为 EthCrossChainManager。
  4. bytes4(keccak256(abi.encodePacked(_method, “(bytes,bytes,uint64)”))) 也许被 hash 碰撞。

报复细节

Poly Network 会在各个链上布置智能合约以便施行跨链互职掌(理会将以在以太坊布置的智能合约为例),个中 EthCrossChainManager 合约用于考证 Poly Chain 同步来的区块头以确认跨链讯息的可靠。EthCrossChainData 合约用于保存跨链数据,中继链考证人 (即 Keeper) 的公钥也保存在这个合约中。LockProxy 则用于财产治理。

本次报复中,报复者分两步来告竣此次报复,咱们接下来施行完全理会:

开始报复者经历在其余链挪用 crossChain 函数结构数据提议跨链买卖。

咱们切入此函数施行理会 :

EthCrossChainManager.crossChain

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

从上图咱们也许明显的看出,此函数不过用于搀扶用户结构 makeTxParam 共存储了结构后的哈希以便后续考证,其并未对用户传入的跨链职掌参数施行任何局部,是以报复者全面也许经历结构苟且想结构的数据而让 Relayer 毫无防范的将其同步至 Poly Chain,经历 Poly Chain 将其同步至以太坊 Relayer。

随后在以太坊上的 Relayer 经历挪用 EthCrossChainManager 合约中

的 verifyHeaderAndExecuteTx 函数提交区块头讯息来考证这笔跨链讯息的可靠性。

咱们切入此函数施行理会:

EthCrossChainManager.verifyHeaderAndExecuteTx

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

经历上图代码咱们也许看出其先对区块头施行反序列化,以解出所须要考证的全部讯息。随后挪用 getCurEpochConPubKeyBytes 函数从 EthCrossChainData 合约中获得 Keeper 公钥,并经历 deserializeKeepers 函数得回 Keeper 所在。

接下来将经历 ECCUtils.verifySig 考证签字能否为 Keeper,从以下代码中咱们也许浮现 verifySig 函数中会切出签字者的 v r s,并经历 ecrecover 接口获得签字者所在,尔后挪用 containMAddresses 函数轮回比拟签字者能否为 Keeper,唯有 Keeper 签字数目符合恳求便可经历查看,数目恳求即为 EthCrossChainManager 合约传入的 n – ( n – 1) / 3)。

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

签字考证后会经历 ECCUtils.merkleProve 施行默克尔根考证,唯有是平常跨链职掌便可经历此项查看。随后会对买卖能否反复发送施行查看共存储已考证后的数据。这边只需保险不反复提交便可。

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

结尾,也是最环节的一步,其将经历内部挪用 _executeCrossChainTx 函数实行结构的数据。

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

从上图咱们也许看出 _executeCrossChainTx 函数未对传入的 _toContract、_method 等参数施行查看就直接以 _toContract.call 的式样实行买卖。

个中经历链上数据咱们也许看出 EthCrossChainData 合约的 owner 即为 EthCrossChainManager 合约,而先前咱们显示中继链考证人 (即 Keeper) 的公钥保管 EthCrossChainData 合约中,且此合约保管 putCurEpochConPubKeyBytes 函数也许直接窜改 Keeper 公钥。

过程以上理会,完毕已很明晰了,报复者只需在其余链经历 crossChain 平常提议跨链职掌的买卖,此买卖手段是为了挪用 EthCrossChainData 合约的 putCurEpochConPubKeyBytes 函数以窜改 Keeper 脚色。随后经历平常的跨链过程,Keeper 会分化用户要求的宗旨合约和挪用参数,结构出一个新的买卖提交到以太坊上。这实质上也不过一笔平常的跨链职掌,是以也许直接经历 Keeper 查看与默克尔根查看。结尾胜利实行窜改 Keeper 的职掌。

但咱们注视到 putCurEpochConPubKeyBytes 函数界说为

    function putCurEpochConPubKeyBytes(bytes calldata curEpochPkBytes) external returns (bool);

而 _executeCrossChainTx 函数实行的界说为

    abi.encodePacked(bytes4(keccak256(abi.encodePacked(_method, "(bytes,bytes,uint64)")))

咱们也许显示这两个函数的函数签字在平常状况下传入的 _method 为 putCurEpochConPubKeyBytes 信任是全面分别的,是以经历 _toContract.call 表面上是没法挪用到 putCurEpochConPubKeyBytes 函数的。但 _method 是报复者也许上下的,其全面也许经历枚举各个字符配合以取得与挪用 putCurEpochConPubKeyBytes 函数类似的函数签字,这恳求其只需枚举前 4 个字节符合便可。咱们也能够本人试验枚举考证,以下所示:

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

也许看出前四个字节与 putCurEpochConPubKeyBytes 函数是普遍的

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

至此咱们就已光复出报复者的报复细节。

经历分化链上数据,咱们也许浮现报复者将 Keeper 转换为了
0xA87fB85A93Ca072Cd4e5F0D4f178Bc831Df8a00B。

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

结尾报复者只需运用转换后的 Keeper 所在施行签字便可经历一齐查看实行挪用 LockProxy 合约将其治理的财产转出。

报复过程

  1. 报复者在源链全心结构一笔窜改宗旨链 Keeper 的职掌。

  2. 运用官方 Relayer 平常在宗旨链提交数据并实行转换 Keeper 职掌。

  3. 报复者经历转换后的 Keeper 所在对其转出财产的职掌施行签字提交至 EthCrossChainManager 施行考证。

  4. 考证 Keeper 为报复者已转换完的所在经历查看,实行将财产迁徙至报复者指定所在。

  5. 收获走人。

MistTrack 理会进程

慢雾 AML 团队理会统计,本次报复丢失全部超 6.1 亿美元

全部以下:

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

资本流向理会

慢雾 AML 旗下 MistTrack 反洗钱追踪体例理会浮现,报复者初始的资本起源是门罗币 (XMR)。

尔后在买卖所里换成了 BNB/ETH/MATIC 等币种并区别提币到 3 个所在,不久后在 3 条链上提倡报复。

事情梳理

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

资本状况 (停止到北京光阴 08 月 11 日 13:00)

BSC 上

黑客所在 1,黑客快要 1.2 亿美元(囊括约 3210 万枚 BUSD 和约 8760 万枚 USDC)的震动性增加到 Curve 分叉名目 Ellipsis Finance 中,方今仍在做市无异动。
慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因Polygon 上

资本无异动。

Ethereum 上

1)黑客所在 3,惟有一笔转出 13.37 ETH 到所在
0xf8b5c45c6388c9ee12546061786026aaeaa4b682 的买卖;

2)黑客在 Curve 上增加了超 9706 万美元(囊括 67 万枚 DAI 和 9638 万枚 USDC)的震动性。后又取销震动性将 9638 万枚 USDC 和 67 万枚 DAI 换成 9694 万枚 DAI,这笔资本仍停息在所在 3。方今,3343 万枚 USDT 已被 Tether 停止。

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

疑问问答

注:eccm 为 EthCrossChainManager 合约的简称,eccd 为 EthCrossChainData 合约的简称。

:为何 keeper 能改换胜利,合约代码不施行鉴权吗?

:eccd 合约有施行鉴权,仅理睬 owner 挪用 putCurEpochConPubKeyBytes 刷新 keeper,由于 eccd 合约的 owner 是 eccm,以是经历 eccm 也许刷新 keeper 的值。

:为何能签字一笔改换 keeper 的买卖?

:由于跨链要实行的数据不决断好 toContract,以是能够本来的 keeper 感到是一笔平常的跨链买卖就签字了 , 不过他是一笔改换 keeper 的买卖。

:为何能绕过代码 bytes4(keccak256(abi.encodePacked(_method, “(bytes,bytes,uint64)”))) 的这个局部,尔后实行 putCurEpochConPubKeyBytes(bytes) 函数?

:函数签字用的是 keccak-256 施行哈希,尔后取前方的 4bytes,这类状况下是较轻便被 hash 碰撞的。

:黑客改换 keeper 的买卖何如被旧的 keepers 签字?

:keepers 是一个链中继器 (Replayer),会对一齐平常用户的跨链要求施行签字。当用户在 BSC 上提议跨链买卖时,keepers 会分化用户要求的宗旨合约和挪用参数,结构出一个新的买卖提交到以太坊上,并在以太坊上用 eccm 合约挪用用户买卖里蕴含的宗旨合约。黑客转换 keeper 的买卖实质上也是一笔平常的跨链买卖,只然而挪用的宗旨合约是 eccd 合约,挪用的参数是改换 keeper,以是能被平常签字。

归纳

本次报复首要在于 EthCrossChainData 合约的 keeper 可由 EthCrossChainManager 合约施行窜改,而 EthCrossChainManager 合约的 verifyHeaderAndExecuteTx 函数又也许经历 _executeCrossChainTx 函数实行用户传入的数据。是以报复者经历此函数传入全心结构的数据窜改了 EthCrossChainData 合约的 keeper 为报复者指定的所在,并不是网传的是因为 keeper 私钥暴露致使这一事情的产生。

慢雾 AML 旗下 MistTrack 反洗钱追踪体例将延续监控被盗资本的迁徙,拉黑报复者上下的一齐钱包所在,显示买卖所、钱包注视巩固所在监控,制止关系歹意资本流入平台。别的, 独特报酬虎符 Hoo、Poly Network、火币 Zlabs、链闻、WePiggy、TokenPocket 钱包、Bibox、欧科云链等团队及很多一面火伴在合规的条件下准时与慢雾平安团队同步关系报复者讯息,为追踪报复者篡夺了宝贵的光阴。

方今,在多方勤奋下,黑客发端连接了偿资本。

起源链接:mp.weixin.qq.com

免责说明:动作区块链讯息平台,本站所宣告作品仅代表作家一面见解,与链闻 ChainNews 态度无关。作品内的讯息、见识等均仅供参考,并不是动作或被视为本质投资倡导。

以太坊

以太坊

以太坊

以太坊

怒放的宣传式区块链运用平台,经历其专属加密钱币 Ether 以太币供应去重心化的假造机,解决点对点合约。理睬任何人设立和运用经历区块链岁月运转的去重心化运用,不任何狡黠、审查、第三方禁锢。 以太坊的观念初次在 2013 至 2014 年由维塔利克·布特林 Vitalik Buterin 受比特币发掘后提议,旨在共通建立一个更寰球化、更自如、更切实的互联网。以太坊EthereumETHERC 20ERC-20ERC20ERC721ERC-721以太坊2.0以太坊 2.0察看更多Neo

Neo

Neo

Neo

过去叫小蚁股,此刻广为人知的称呼是 Neo,海内开拓的智能经济宣传式搜集。新的财产数字化程序、链上数字身份编制、智能合约生态。 非剩余的社区化的区块链名目 Neo,运用区块链岁月和数字身份施行财产数字化,运用智能合约对数字财产施行自动化治理,完结「智能经济」的一种宣传式搜集。Neo 于 2014 年正式立项,自 2015 年 6 月起在 GitHub 上及时开源。其特殊关心社区的滋长,具有巨大的寰球开拓者社区,以 CoZ、NEL 和 NeoResearch 为代表,长时间此后为 Neo 开拓供应援助。Neo 社区周围巨大,具有数百万社区成员,长时间伶俐在 Reddit、Discord、GitHub 与 Twitter 等频道。NEONEO生态基金Neo 寰球开拓团队察看更多币安智能链

币安智能链

币安智能链

币安智能链

币安智能链 Binance Smart Chain,动作币安链的平走运行链,可完结智能合约创造和 BNB 质押挖矿等机能。其于 2020 年 4 月创造,不只也许创造代币智能合约,还引入寰球顶级加密财产之一的 BNB 孕育质押挖矿机制。 BSC 是以太坊假造机兼容的区块链,是加密财产行业顶尖名目的尝试和前沿切磋。BSC的上线将大幅选拔币安链和BNB的运用效益与运用范畴。BSC 经历引入权力权势解释(PoSA)共鸣机制,创造了考证一个理睬节点、代币持有者、开拓者和用户都恐怕从区块链中获益的生态体例,享用更高的本能和更富裕的革新空间。币安链Binance Smart Chain币安智能链BSC币安链 BSC币安智能链 BSC察看更多Switcheo Network

Switcheo Network

Switcheo Network

Switcheo Network

Switcheo Network 号称全国首个跨链去重心化买卖平台,为 NEO 平台设立,最初进的 NEP-5 去重心化买卖平台,旨在神速完结跨链买卖。SwitcheoSWTHDemex察看更多本体

本质

本体

本质

新一代高本能原形国有链,囊括完好的宣传式帐本、智能合约编制援助。同时本质架构援助国有链网编制,除供应原形国有链工作,经历本质区块链框架援助分别运用的国有链定制,并经历分别合同群援助链网协调。在原形层之上,本质将延续供应各种宣传式运用中的通用性模块,如宣传式身份框架、宣传式数据交流合同等援助宣传式笃信协调组件,并会按照运用需要延续增添新的通用模块。 本质 Ontology 是华夏最有后劲的公链之一,岁月层面运用了更神速的共鸣机制,援助跨链通讯、身份考证、数据买卖等。 投资方囊括红杉华夏、经纬华夏、丹华本钱、Hashed、九鼎等。本质ONTOntologyOntology DEX察看更多Poly Network

Poly Network

Poly Network

Poly Network

Poly Network 是寰球超过的异构链跨链互职掌合同,其专有计算的异构链和跨链桥岁月将从合同层一举买通各个异构链之间以至各个干流公链之间的通讯和买卖。继 2020 年 8 月主网上线以后,已完结蕴含比特币、以太坊、Neo、Ontology、HECO、BSC、OKExChain、Elrond、Zilliqa、Cosmos-SDK 等在内的 10 条干流异构区块链互通。Poly Network察看更多以太坊 NEO 岁月 跨链 平安 智能合约 DeFi Ontology Switcheo BSC Poly Network

区块链前沿是一个专业的比特币价格查询&区块链数字货币资讯平台,我们为用户提供关于区块链企业、数字货币币种、数字货币交易平台及区块链人物的相关信息,我们整理发布全球主流比特币交易平台、虚拟数字货币交易平台、区块链应用企业的结构化信息,我们对区块链及数字资产充满热情,立志打造成一个区块链综合门户网站。
区块链前沿 » 慢雾:详细复盘 Poly Network 被黑 6.1 亿美元过程及原因

发表评论