主页 > 下载imtoken钱包20app > usdt地址可以被监控吗? usdt地址是什么?

usdt地址可以被监控吗? usdt地址是什么?

下载imtoken钱包20app 2023-02-28 05:42:19

摘要:慢雾认为此次攻击主要是由于EthCrossChainData合约的keeper修改,而非私钥泄露。 目前,黑客已经开始陆续返还资金。 作者:慢雾安全团队

2021年8月10日,据慢雾消息,跨链互操作协议聚网遭到黑客攻击。 慢雾安全团队第一时间介入分析,分享分析结果如下。

后台攻击 Poly Network(Poly Network)是由Neo、Ontology和Switcheo基金会共同发起,以分布式技术为技术提供方的跨链组织。

如下图所示,通过官方介绍,我们可以清楚的看到Julian.com的架构设计:用户可以在源链上发起跨链交易。 交易确认后,源链转发器会将区块头信息同步至聚链。 , 然后 polychain 将区块头信息同步到目标链中继器,目标链中继器将验证信息传递给目标链,然后在目标链中验证区块头,并执行目标链期望的交易用户。

okex里usdt怎么转成usdt_sitesina.com.cn 区块链跨链技术_usdt跨链

以下是本次攻击涉及的具体地址:

sitesina.com.cn 区块链跨链技术_okex里usdt怎么转成usdt_usdt跨链

攻击源链未检查发起的跨链操作的数据。 目标链没有检查解析的目标调用合约和调用参数。 EthCrossChainData 合约的所有者是 EthCrossChainManager。 byte 4(keccak 256(ABI.encode packed(_ method, '(bytes,bytes,uint64)')) 可以哈希命中。

攻击详情 Juchain会在各条链上部署智能合约进行跨链互操作(分析将以以太坊部署的智能合约为例),其中EthCrossChainManager合约用于验证Juchain同步的区块头以确认跨链-链信息真实性。 EthCrossChainData 合约用于存储跨链数据,中继链验证者(Keeper)的公钥也存储在合约中。 锁用于资产管理。

在这次攻击中,攻击者分两步完成了攻击。 接下来,我们将进行详细分析:

首先,攻击者通过调用跨链函数在其他链中构造数据来发起跨链交易。

我们切入这个函数来分析3360。

ethcross链经理。 跨链

okex里usdt怎么转成usdt_sitesina.com.cn 区块链跨链技术_usdt跨链

okex里usdt怎么转成usdt_sitesina.com.cn 区块链跨链技术_usdt跨链

从上图中我们可以清楚的看出,这个函数只是用来帮助用户构造makeTxParam,并将构造好的hash存储起来,以备后续验证之用。 对用户传入的跨链操作参数没有任何限制。 因此,攻击者完全可以让Relayer在没有防御的情况下,将自己想要构建的任何数据同步到Poly Chain,通过Poly Chain同步到以太坊Relayer。

然后以太坊上的 Relayer 调用 EthCrossChainManager 合约。

verifyHeaderAndExecuteTx 函数提交区块头信息来验证这个跨链信息的真实性。

我们切入这个函数进行分析:

ethcrossschainmanager.verifyheaderandexecutetx

sitesina.com.cn 区块链跨链技术_usdt跨链_okex里usdt怎么转成usdt

通过上面的代码我们可以看出,它首先反序列化区块头,找出需要验证的具体信息。 然后调用getCurEpochConPubKeyBytes函数从EthCrossChainData合约中获取Keeper公钥,通过deserializeKeepers函数获取Keeper地址。

接下来,我们将使用 ECCUtils.verifySig 来验证签名是否为托管人。 从下面的代码中我们可以发现,在verifySig函数中会切出签名者的vrs,通过ecrecover接口获取签名者的地址,然后调用containMAddresses函数进行循环比较。 签名者是否是保管人。 只要保管人签名的数量符合要求,就可以通过检查。 数量要求是从 EthCrossChainManager 合约导入的 n-(n-1)/3)。

okex里usdt怎么转成usdt_sitesina.com.cn 区块链跨链技术_usdt跨链

sitesina.com.cn 区块链跨链技术_okex里usdt怎么转成usdt_usdt跨链

签名验证后通过ECC。

Utils.merkleProve 进行Merkle根校验,只要是正常的跨链操作,都可以通过这个校验。 然后检查交易是否有重复,并存储经过验证的数据。 这里只需要保证不重复提交即可。

usdt跨链_sitesina.com.cn 区块链跨链技术_okex里usdt怎么转成usdt

最后也是最关键的一步是通过内部调用_executeCrossChainTx 函数来执行构建的数据。

sitesina.com.cn 区块链跨链技术_okex里usdt怎么转成usdt_usdt跨链

从上图中我们可以看出,_executeCrossChainTx函数直接执行了_toContract.call形式的交易,没有检查_toContract、_method等传入参数。

从链上数据可以看出EthCrossChainData合约的owner是EthCrossChainManager合约,而我们之前知道中继链验证者(Keeper)的公钥存在于EthCrossChainData合约中,而这个合约有一个putCurEpochConPubKeyBytes可以直接修改Keeper公钥的函数。 钥匙。

经过上面的分析,结果就很清楚了。 攻击者只需在其他链上通过crossChain发起一次跨链操作交易即可。 本次交易的目的是调用EthCrossChainData合约的putCurEpochConPubKeyBytes函数来修改Keeper角色。 然后,通过正常的跨链流程,Keeper会解析用户请求的目标合约和调用参数,构造新的交易并提交给以太坊。 这本质上只是一个正常的跨链操作,所以可以直接通过Keeper校验和Merkle根校验。 最后成功执行了修改Keeper的操作。

但是我们注意到 putCurEpochStartHeight 函数定义为

函数 putCurEpochConPubKeyBytes(bytes calldata curEpochPkBytes) 外部返回 (bool);

而_executeCrossChainTx函数执行的定义是

abi.encodePacked(bytes4(keccak256(abi.encodePacked(_method,“(字节,字节usdt跨链,uint64)”)))

我们可以知道,正常情况下传入的_method为putCurEpochStartHeight时,这两个函数的函数签名一定是完全不同的,所以理论上不能通过_toContract.call来调用putCurEpochStartHeight函数。 但是 _method 可由攻击者控制。 它可以通过枚举每个字符组合获得与调用putCurEpochConPubKeyBytes函数相同的函数签名,只需要枚举前4个字节。 我们也可以自己尝试枚举验证,如下所示:

okex里usdt怎么转成usdt_usdt跨链_sitesina.com.cn 区块链跨链技术

sitesina.com.cn 区块链跨链技术_usdt跨链_okex里usdt怎么转成usdt

usdt跨链_sitesina.com.cn 区块链跨链技术_okex里usdt怎么转成usdt

可以看出前四个字节与putCurEpochConPubKeyBytes函数一致

至此我们已经还原了攻击者的攻击细节。

通过分析链上数据可以发现,攻击者将Keeper替换为0xA87fB85A93Ca072Cd4e5F0D4f178Bc831Df8a00B。

okex里usdt怎么转成usdt_usdt跨链_sitesina.com.cn 区块链跨链技术

最后,攻击者只需使用替换后的 Keeper 地址进行签名,然后通过所有检查调用 LockProxy 合约即可转移其管理的资产。

攻击过程 攻击者精心构造一个操作,修改源链中目标链的Keeper。

使用官方Relayer在目标链上正常提交数据,并进行替换Keeper操作。

攻击者通过替换的Keeper地址对转移资产的操作进行签名,并提交给EthCrossChainManager进行验证。

验证 keeper 是否通过了攻击者替换地址的检查,并执行资产转移到攻击者指定的地址。

获利走人。

MistTrack分析过程 慢雾反洗钱团队分析统计显示,此次攻击总损失超过6.1亿美元!

详情如下:

usdt跨链_sitesina.com.cn 区块链跨链技术_okex里usdt怎么转成usdt

okex里usdt怎么转成usdt_sitesina.com.cn 区块链跨链技术_usdt跨链

资金流向分析慢雾AML下的MistTrack反洗钱追踪系统发现,攻击者的初始资金来源为门罗币(XMR)。

然后在交易所换成BNB/ETH/MATIC等币种,分别提币到3个地址,很快就对3条链发起了攻击。

事件排序

okex里usdt怎么转成usdt_usdt跨链_sitesina.com.cn 区块链跨链技术

在平衡计分卡上:

黑客地址1,黑客向Curve分叉项目Ellipsis Finance增加了近1.2亿美元的流动性(包括约3210万BUSD和约8760万USDC)usdt跨链,做市依然没有变化。

在多边形上:

资金保持不变。

在以太坊上:

1)黑客地址3,只有一笔交易向地址0xf8b5c45c6388c9ee12546061786026aaeaa4b682转账13.37 ETH;

2)黑客在Curve上增加了超过9706万美元的流动性(包括67万个DAI和9638万个USDC)。 随后,流动性被收回,将9638万个USDC和67万个DAI兑换成9694万个DAI,仍然留在地址3。目前Tether已经冻结了3343万个USDT。

okex里usdt怎么转成usdt_sitesina.com.cn 区块链跨链技术_usdt跨链

usdt跨链_sitesina.com.cn 区块链跨链技术_okex里usdt怎么转成usdt

注:eccm是EthCrossChainManager合约的缩写,eccd是EthCrossChainData合约的缩写。

Q:为什么能更换keeper成功,但是合约代码没有认证通过?

答:eccd合约是鉴权的,只有owner才可以调用putCurEpochConPubKeyBytes来改变keeper。 因为eccd合约的owner是eccm,可以通过eccm改变keeper的值。

Q:为什么我可以签署交易来更换守门员?

Answer:因为要跨链执行的数据没有判断toContract,原keeper可能是作为正常的跨链交易签的,但是是代替keeper的交易。

Q:为什么可以绕过代码bytes4(keccak256(abi.encodePacked(_method, "(bytes,bytes,uint64)")))的限制,然后执行putCurEpochConPubKeyBytes(bytes)函数?

答:函数签名使用keccak-256进行哈希,然后取前4bytes。 在这种情况下,它更容易被散列。

Q:黑客更换keeper的交易是如何被老keeper签名的?

答:Keepers是一个链中继器(Replayer),会对所有普通用户的跨链请求进行签名。 当用户在 BSC 上发起跨链交易时,Keeper 会分析用户请求的目标合约和调用参数,构造新的交易并提交给以太坊,并使用以太坊上的 eccm 合约调用包含在目标合约中的目标合约。用户交易合约。 黑客更换keeper的交易本质上是一个正常的跨链交易,但是调用的目标合约是eccd合约,调用的参数是更换keeper,所以可以正常签名。

总结 本次攻击的主要原因是EthCrossChainData合约的keeper可以被EthCrossChainManager合约修改,EthCrossChainManager合约的verifyHeaderAndExecuteTx函数可以执行用户通过_executeCrossChainTx函数传入的数据。 因此,攻击者通过该函数传入精心构造的数据,修改EthCrossChainData合约守护者为攻击者指定的地址。 网上并没有报道说这起事件是因为keeper的私钥泄露导致的。

慢雾反洗钱下的MistTrack反洗钱追踪系统将持续监控被盗资金的转移,封锁所有被攻击者控制的钱包地址,提醒交易所和钱包注意加强地址监控,防止相关恶意资金流入该平台。 另外特别感谢虎扑、保利网络、火币Zlabs、链闻、WePiggy、TokenPocket Wallet、Bibox、Okey云链等众多团队和众多个人小伙伴在前提下及时将相关攻击者与慢雾安全团队同步合规信息,为跟踪攻击者争取宝贵的时间。

目前,在多方努力下,黑客陆续开始返还资金。

链得得仅提供相关信息展示,不构成任何投资建议