慢雾认为,攻击主要在于EthCrossChainData合约的keeper被修改,而非私钥泄漏导致。目前,黑客已开始陆续归还资金。
撰文:慢雾安全团队
2021年08月10日,据慢雾区消息,跨链互操作协议PolyNetwork遭受黑客攻击,慢雾安全团队第一时间介入分析,并将分析结果分享如下。
攻击背景
PolyNetwork是由Neo、Ontology、Switcheo基金会共同作为创始成员,分布科技作为技术提供方共同发起的跨链组织。
如下图,通过官方的介绍我们可以清楚的看出PolyNetwork的架构设计:用户可以在源链上发起跨链交易,交易确认后由源链Relayer将区块头信息同步至PolyChain,之后由PolyChain将区块头信息同步至目标链Relayer,目标链Relayer将验证信息转至目标链上,随后在目标链进行区块头验证,并执行用户预期的交易。
以下是本次攻击涉及的具体地址:
攻击核心
源链未对发起的跨链操作的数据进行检查。目标链未对解析出的目标调用合约以及调用参数进行检查。EthCrossChainData合约的owner为EthCrossChainManager。bytes4(keccak256(abi.encodePacked(_method,"(bytes,bytes,uint64)")))可以被hash碰撞。攻击细节
PolyNetwork会在各个链上部署智能合约以便进行跨链互操作,其中EthCrossChainManager合约用于验证PolyChain同步来的区块头以确认跨链信息的真实。EthCrossChainData合约用于存储跨链数据,中继链验证人(即Keeper)的公钥也存储在这个合约中。LockProxy则用于资产管理。
ZigZag:Discord已被黑客入侵,请勿点击网络钓鱼链接:6月27日消息,ZK Rollup订单簿DEX协议ZigZag在推特上表示,我们的Discord已被黑客入侵,请注意,ZigZag目前没有空投活动,请勿点击网络钓鱼链接。我们正在努力解决这个问题,当重新获得控制权时将提供更新。[2023/6/27 22:02:29]
本次攻击中,攻击者分两步来完成这次攻击,我们接下来进行详细分析:
首先攻击者通过在其他链调用crossChain函数构造数据发起跨链交易。
我们切入此函数进行分析:
EthCrossChainManager.crossChain
从上图我们可以清晰的看出,此函数只是用于帮助用户构造makeTxParam并存储了构造后的哈希以便后续验证,其并未对用户传入的跨链操作参数进行任何限制,因此攻击者完全可以通过构造任意想构造的数据而让Relayer毫无防备的将其同步至PolyChain,通过PolyChain将其同步至以太坊Relayer。
随后在以太坊上的Relayer通过调用EthCrossChainManager合约中
的verifyHeaderAndExecuteTx函数提交区块头信息来验证这笔跨链信息的真实性。
我们切入此函数进行分析:
EthCrossChainManager.verifyHeaderAndExecuteTx
通过上图代码我们可以看出其先对区块头进行反序列化,以解出所需要验证的具体信息。随后调用getCurEpochConPubKeyBytes函数从EthCrossChainData合约中获取Keeper公钥,并通过deserializeKeepers函数得到Keeper地址。
拥有1300万粉丝的社交媒体网红Scuba Jake账号被黑客窃取,粉丝被盗金额已超1.01 BTC:金色财经报道,拥有1300万粉丝的社交媒体网红Scuba Jake的视频账号被黑客窃取,而且播放了BTC和ETH欺诈信息的虚假赠品活动,数据显示已有粉丝上当,目前黑客已非法获得了1.01 BTC,约合2.1万美元,同时还将其视频频道名称改为“MicroStargey US”,冒充对加密货币友好的美国商业情报公司 MicroStrategy。(Finbold)[2022/9/11 13:22:11]
接下来将通过ECCUtils.verifySig验证签名是否为Keeper,从以下代码中我们可以发现verifySig函数中会切出签名者的vrs,并通过ecrecover接口获取签名者地址,然后调用containMAddresses函数循环比较签名者是否为Keeper,只要Keeper签名数量符合要求即可通过检查,数量要求即为EthCrossChainManager合约传入的n-(n-1)/3)。
签名验证后会通过ECCUtils.merkleProve进行默克尔根验证,只要是正常跨链操作即可通过此项检查。随后会对交易是否重复发送进行检查并存储已验证后的数据。这里只需保证不重复提交即可。
最后,也是最关键的一步,其将通过内部调用_executeCrossChainTx函数执行构造的数据。
从上图我们可以看出_executeCrossChainTx函数未对传入的_toContract、_method等参数进行检查就直接以_toContract.call的方式执行交易。
安全公司:2016年Bitfinex被黑地址多为社区网友推演分析:北京链安链上数据分析专家SXWK表示,近期媒体多次提及的Bitfinex被盗BTC转移,其相关地址源头大都为事件发生后,比特币社区网友根据时间线的推演,大都在reddit进行讨论。如今天最新的一笔转账,其来源主要为当时Bifinex的热钱包地址之一的3NMkeWidzL7MQbrdMR9m7guANcNJofxyJD,它于当地时间2016年8月2日将416枚BTC归集到地址1Bf5aQqsd7gtjLysYQKtqQ3yBLDHZogouA,由于Bifinex于当地时间2016年8月3日宣布被盗,所以从时间线上被分析者认为这是黑客的转账交易之一。类似地址当时推演出很多,但是相关交易哪些是黑客盗币行为,哪些又可能是交易所发现问题后的紧急转账处理尚不明晰,同时网友分析出的被盗交易涉及的BTC总额度距离Bifinex公开的119,756枚被盗BTC还有相当距离
今天的交易实际上是这416枚BTC被拆分为20笔UTXO,最大的为33BTC,最小的为15BTC,目前部分BTC也正在进行进一步小额的拆分转账。[2020/6/11]
其中通过链上数据我们可以看出EthCrossChainData合约的owner即为EthCrossChainManager合约,而先前我们知道中继链验证人(即Keeper)的公钥存在EthCrossChainData合约中,且此合约存在putCurEpochConPubKeyBytes函数可以直接修改Keeper公钥。
经过以上分析,结果已经很明确了,攻击者只需在其他链通过crossChain正常发起跨链操作的交易,此交易目的是为了调用EthCrossChainData合约的putCurEpochConPubKeyBytes函数以修改Keeper角色。随后通过正常的跨链流程,Keeper会解析用户请求的目标合约以及调用参数,构造出一个新的交易提交到以太坊上。这本质上也只是一笔正常的跨链操作,因此可以直接通过Keeper检查与默克尔根检查。最后成功执行修改Keeper的操作。
动态 | Syscoin团队称未被黑客攻击,SYS24小时跌近30%:币安行情显示,SYS自昨日曝出异常交易后变转为回落,目前24小时跌幅近30%,现报0.22美元。Syscoin今日凌晨发布完整交易异常报告,Syscoin团队在Syscoin和Binance平台上发现了异常交易。 Syscoin非常重视安全性,因此要求所有交易所暂时停止交易SYS,直到能够确定交易异常的原因。SYS经过调查后确定:1. Syscoin没有被黑客入侵;2. Syscoin链未受到攻击;3. 根据设计,Syscoin链完全可操作。[2018/7/5]
但我们注意到putCurEpochConPubKeyBytes函数定义为
functionputCurEpochConPubKeyBytes(bytescalldatacurEpochPkBytes)externalreturns(bool);
而_executeCrossChainTx函数执行的定义为
abi.encodePacked(bytes4(keccak256(abi.encodePacked(_method,"(bytes,bytes,uint64)")))
我们可以知道这两个函数的函数签名在正常情况下传入的_method为putCurEpochConPubKeyBytes肯定是完全不同的,因此通过_toContract.call理论上是无法调用到putCurEpochConPubKeyBytes函数的。但_method是攻击者可以控制的,其完全可以通过枚举各个字符组合以获得与调用putCurEpochConPubKeyBytes函数相同的函数签名,这要求其只需枚举前4个字节符合即可。我们也可以自己尝试枚举验证,如下所示:
英美澳三国政府网站被黑客用于挖矿:据美国科技新闻网站The Register报道,包括美国和英国政府机构在内的数千家网站都在周日被一组代码感染了数小时,导致访问受感染网站的电脑秘密地挖掘数字加密货币。另据ambcrypto新闻报道,澳大利亚政府网站被黑客攻占开采加密货币,包括比特币和蒙罗。这几次攻击都是由第三方工具被恶意篡改导致的。[2018/2/12]
可以看出前四个字节与putCurEpochConPubKeyBytes函数是一致的
至此我们就已还原出攻击者的攻击细节。
通过解析链上数据,我们可以发现攻击者将Keeper替换为了0xA87fB85A93Ca072Cd4e5F0D4f178Bc831Df8a00B。
最后攻击者只需使用替换后的Keeper地址进行签名即可通过所有检查执行调用LockProxy合约将其管理的资产转出。
攻击流程
攻击者在源链精心构造一笔修改目标链Keeper的操作。
利用官方Relayer正常在目标链提交数据并执行替换Keeper操作。
攻击者通过替换后的Keeper地址对其转出资产的操作进行签名提交至EthCrossChainManager进行验证。
验证Keeper为攻击者已替换完的地址通过检查,执行将资产转移至攻击者指定地址。
获利走人。
MistTrack分析过程
慢雾AML团队分析统计,本次攻击损失共计超6.1亿美元!
具体如下:
资金流向分析
慢雾AML旗下?MistTrack反追踪系统分析发现,攻击者初始的资金来源是门罗币(XMR)。
然后在交易所里换成了BNB/ETH/MATIC等币种并分别提币到3个地址,不久后在3条链上发动攻击。
事件梳理
资金情况
BSC上:
黑客地址1,黑客将近1.2亿美元的流动性添加到Curve分叉项目EllipsisFinance中,目前仍在做市无异动。Polygon上:
资金无异动。
Ethereum上:
1)黑客地址3,只有一笔转出13.37ETH到地址0xf8b5c45c6388c9ee12546061786026aaeaa4b682的交易;
2)黑客在Curve上添加了超9706万美元的流动性。后又撤销流动性将9638万枚USDC和67万枚DAI换成9694万枚DAI,这笔资金仍停留在地址3。目前,3343万枚USDT已被Tether冻结。
疑难问答
注: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、PolyNetwork、火币Zlabs、链闻、WePiggy、TokenPocket钱包、Bibox、欧科云链等团队及许多个人伙伴在合规的前提下及时与慢雾安全团队同步相关攻击者信息,为追踪攻击者争取了宝贵的时间。
目前,在多方努力下,黑客开始陆续归还资金。
来源链接:mp.weixin.qq.com
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
慢雾
慢雾
慢雾科技是一家专注区块链生态安全的国家高新技术企业,通过「威胁发现到威胁防御一体化因地制宜的安全解决方案」服务了全球许多头部或知名的项目。慢雾科技的安全解决方案包括:安全审计、威胁情报、漏洞赏金、防御部署、安全顾问等服务并配套有加密货币反、假充值漏洞扫描、漏洞监测、被黑档案库、智能合约防火墙、SafeStaking等SAAS型安全产品,已有商业客户上千家。慢雾慢雾科技慢雾AML慢雾安全Slowmist查看更多以太坊
标签:KEEPEPEAINKEEKeep3rPEPETParis Saint-Germainbitkeep交易所app下载
链闻消息,美国证券交易委员会主席GaryGensler在回应美国参议员ElizabethWarren关于要求确定加密监管的一封信中指出,「确实需要监管加密货币交易并保护投资者和金融体系.
1900/1/1 0:00:00第一次了解到MANA的时候是两个月之前,是因为我看到了一条资讯,Decentraland的一块数字地皮以91.3万美元出售给虚拟房地产开发商.
1900/1/1 0:00:00链闻消息,Solana生态去中心化跨保证金交易平台MangoMarket在关于MNGO代币的销售中筹集了逾7000万美元,且24小时的销售过程中最高有5亿美元左右的资金涌入.
1900/1/1 0:00:00链闻消息,美元稳定币USDC发行机构Circle宣布计划成为一家全国性的全储备商业银行和「数字货币银行」,将在美联储、美国财政部、OCC和FDIC的监督和风险管理要求下运营.
1900/1/1 0:00:00项目简介:Orion是一个DeFi平台,为流动性提供B2BB2C解决方案。它旨在通过将整个加密市场的流动性汇总到一个去中心化平台中来解决DeFi中最大的问题-从每个主要的集中化交易所,去中心化交.
1900/1/1 0:00:00巴比特讯,8月12日晚,BlockSecTeam发布DAOMaker攻击事件分析:攻击交易:0x26aa86261c834e837f6be93b2d589724ed5ae644bc8f4b8af.
1900/1/1 0:00:00