2021 年 08 月 10 日,据慢雾区消息,跨链互操作协议 Poly Network 遭受黑客攻击,慢雾安全团队第一时间介入分析,并将分析结果分享如下。 攻击背景Poly Network 是由 Neo、Ontology、Switcheo 基金会共同作为创始成员,分布科技作为技术提供方共同发起的跨链组织。 如下图,通过官方的介绍我们可以清楚的看出 Poly Network 的架构设计:用户可以在源链上发起跨链交易,交易确认后由源链 Relayer 将区块头信息同步至 Poly Chain,之后由 Poly Chain 将区块头信息同步至目标链 Relayer,目标链 Relayer 将验证信息转至目标链上,随后在目标链进行区块头验证,并执行用户预期的交易。 以下是本次攻击涉及的具体地址: 攻击核心
攻击细节Poly Network 会在各个链上部署智能合约以便进行跨链互操作(分析将以在以太坊部署的智能合约为例),其中 EthCrossChainManager 合约用于验证 Poly Chain 同步来的区块头以确认跨链信息的真实。EthCrossChainData 合约用于存储跨链数据,中继链验证人 (即 Keeper) 的公钥也存储在这个合约中。LockProxy 则用于资产管理。 本次攻击中,攻击者分两步来完成这次攻击,我们接下来进行详细分析: 首先攻击者通过在其他链调用 crossChain 函数构造数据发起跨链交易。 我们切入此函数进行分析 : EthCrossChainManager.crossChain 从上图我们可以清晰的看出,此函数只是用于帮助用户构造 makeTxParam 并存储了构造后的哈希以便后续验证,其并未对用户传入的跨链操作参数进行任何限制,因此攻击者完全可以通过构造任意想构造的数据而让 Relayer 毫无防备的将其同步至 Poly Chain,通过 Poly Chain 将其同步至以太坊 Relayer。 随后在以太坊上的 Relayer 通过调用 EthCrossChainManager 合约中 的 verifyHeaderAndExecuteTx 函数提交区块头信息来验证这笔跨链信息的真实性。 我们切入此函数进行分析: EthCrossChainManager.verifyHeaderAndExecuteTx (责任编辑:admin) |