Merlin Labs攻击事件复盘分析 | 零时科技

北京时间2021年6月29日,Merlin Labs官方Telegram称Merlin遭受了黑客攻击,并声明黑客将 0.1WBNB 存入vault,然后手动将1000BNB转入合约,以欺骗合约认为它收到了 1000BNB的奖励,从而导致铸币产生了 MERL 奖励,零时科技安全团队及时对该安全事件进行复盘分析。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701111216256.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NTk4NDM0,size_16,color_FFFFFF,t_70#pic_center) ## 事件背景 Merlin是一个能够自动组合的收益聚合工具,其生态系统经过优化,可以实现用户在追求安全和可持续为前提的最大收益回报。 零时科技区块链安全情报平台监控到消息,北京时间2021年6月29日,Merlin Labs官方Telegram称Merlin遭受了黑客攻击,并声明黑客将 0.1WBNB 存入vault,然后手动将1000BNB转入合约,以欺骗合约认为它收到了 1000BNB的奖励,从而导致铸币产生了 MERL 奖励,零时科技安全团队及时对该安全事件进行复盘分析。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021070111123665.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NTk4NDM0,size_16,color_FFFFFF,t_70#pic_center) ## 事件分析 **攻击信息** 通过初步追踪分析,这里梳理了一条攻击路线来进行具体分析,攻击信息如下: **攻击者钱包地址** https://bscscan.com/address/0x2bADa393e53D0373788d15fD98CB5Fb1441645BD **攻击者合约地址** https://bscscan.com/address/0xcc369faf26c0457ceea7a24bbfe158e106214147 **攻击者盗取资金交易** https://bscscan.com/tx/0x903ae34f48d4e00da8d7ca5dfad26f8f37e80cde2156907580cf551a63317f76 **MerlinToken合约地址** https://bscscan.com/address/0xDA360309C59CB8C434b28A91b823344a96444278#code **MerlinPool合约地址** https://bscscan.com/address/0x3b87475ac293eeed0e8bC25713Eb8242A9497C3F#contracts ## 攻击过程 目前攻击者创建的合约及交易较多,但每笔交易的攻击流程均类似,如以上攻击合约中,攻击者共进行了26笔交易,其中22笔为攻击者利用漏洞盗取资金交易,其余4笔为攻击者将盗取资金转至钱包地址交易,这里将以上攻击交易进行详细分析,方便读者更清晰的了解攻击过程。如下图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701111438835.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NTk4NDM0,size_16,color_FFFFFF,t_70#pic_center) 第一步:攻击者给vault合约转入0.1枚BNB。 第二步:攻击者直接给vault合约转入874枚BNB。 第三步:vault合约将转入的874枚BNB转至0xd7d0合约,并获取对应的846枚ibBNB。 第四步:0xd7d0合约将874枚BNB转出至WNativeRelayer合约,并随即销毁vault合约的846枚ibBNB。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701111602766.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NTk4NDM0,size_16,color_FFFFFF,t_70#pic_center) 第五步:vault合约将262枚BNB转至0x236f合约,之后转给0x913合约257枚BNB后,将该资金以1:1对半分为128枚BNB和3334枚Merlin添加PancakeSwap V2: MERL 5流动性,并获取对应的548枚Cake-LP Token。 第六步:将获取的548枚Cake-LP Token转至MerlinPool合约。 第七步:将0x236f合约剩余的5枚BNB兑换为135枚Merlin,并将资金转至0x436f地址。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701111614245.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NTk4NDM0,size_16,color_FFFFFF,t_70#pic_center) 第八步:给0x236f地址铸造了8996枚Merlin代币,并将生成的代币转至攻击者合约,此步也是攻击者获利最重要的步骤。 第九步:给MerlinPool合约地址也铸造了相应的Token。(此步应为添加Cake-LP Token获取的相应奖励)。 第十步:最终攻击者合约将获取的Merlin代币兑换成BNB获利离场。 **至此** 攻击者通过该笔攻击交易获取了332枚BNB,价值约10万美元,由于项目合约中奖励功能的代码逻辑问题,攻击者通过多笔攻击交易已获利超30万美元。 目前,Merlin官方已宣布关闭Merlin Lab,并已在网站上发布通知并停止所有存款,所涉及的Twitter及Telegram等账号均已停止运营。 ## 总结 通过此次攻击事件来看,攻击者通过多次获取奖励,并通过Merlin合约中的代码缺陷,最终获得了大量代币,对于合约功能缺陷问题,应在合约上线前进行严格审查及测试。对于此类攻击事件,零时科技安全团队给出以下建议: ## 安全建议 对于合约代码安全,可找多家安全审计公司进行审计。 对于铸币及转账问题,应根据业务逻辑进行严格审核演算,避免出现代币异常获取问题。 对敏感性较强的代码,要做到及时更新完善。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701111831173.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3NTk4NDM0,size_16,color_FFFFFF,t_70#pic_center)

事件背景

Merlin是一个能够自动组合的收益聚合工具,其生态系统经过优化,可以实现用户在追求安全和可持续为前提的最大收益回报。

零时科技区块链安全情报平台监控到消息,北京时间2021年6月29日,Merlin Labs官方Telegram称Merlin遭受了黑客攻击,并声明黑客将 0.1WBNB 存入vault,然后手动将1000BNB转入合约,以欺骗合约认为它收到了 1000BNB的奖励,从而导致铸币产生了 MERL 奖励,零时科技安全团队及时对该安全事件进行复盘分析。

事件分析

攻击信息 通过初步追踪分析,这里梳理了一条攻击路线来进行具体分析,攻击信息如下:

攻击者钱包地址

https://bscscan.com/address/0x2bADa393e53D0373788d15fD98CB5Fb1441645BD

攻击者合约地址

https://bscscan.com/address/0xcc369faf26c0457ceea7a24bbfe158e106214147

攻击者盗取资金交易

https://bscscan.com/tx/0x903ae34f48d4e00da8d7ca5dfad26f8f37e80cde2156907580cf551a63317f76

MerlinToken合约地址

https://bscscan.com/address/0xDA360309C59CB8C434b28A91b823344a96444278#code

MerlinPool合约地址

https://bscscan.com/address/0x3b87475ac293eeed0e8bC25713Eb8242A9497C3F#contracts

攻击过程

目前攻击者创建的合约及交易较多,但每笔交易的攻击流程均类似,如以上攻击合约中,攻击者共进行了26笔交易,其中22笔为攻击者利用漏洞盗取资金交易,其余4笔为攻击者将盗取资金转至钱包地址交易,这里将以上攻击交易进行详细分析,方便读者更清晰的了解攻击过程。如下图:

第一步:攻击者给vault合约转入0.1枚BNB。

第二步:攻击者直接给vault合约转入874枚BNB。

第三步:vault合约将转入的874枚BNB转至0xd7d0合约,并获取对应的846枚ibBNB。

第四步:0xd7d0合约将874枚BNB转出至WNativeRelayer合约,并随即销毁vault合约的846枚ibBNB。

第五步:vault合约将262枚BNB转至0x236f合约,之后转给0x913合约257枚BNB后,将该资金以1:1对半分为128枚BNB和3334枚Merlin添加PancakeSwap V2: MERL 5流动性,并获取对应的548枚Cake-LP Token。

第六步:将获取的548枚Cake-LP Token转至MerlinPool合约。

第七步:将0x236f合约剩余的5枚BNB兑换为135枚Merlin,并将资金转至0x436f地址。

第八步:给0x236f地址铸造了8996枚Merlin代币,并将生成的代币转至攻击者合约,此步也是攻击者获利最重要的步骤。

第九步:给MerlinPool合约地址也铸造了相应的Token。(此步应为添加Cake-LP Token获取的相应奖励)。

第十步:最终攻击者合约将获取的Merlin代币兑换成BNB获利离场。

至此

攻击者通过该笔攻击交易获取了332枚BNB,价值约10万美元,由于项目合约中奖励功能的代码逻辑问题,攻击者通过多笔攻击交易已获利超30万美元。

目前,Merlin官方已宣布关闭Merlin Lab,并已在网站上发布通知并停止所有存款,所涉及的Twitter及Telegram等账号均已停止运营。

总结

通过此次攻击事件来看,攻击者通过多次获取奖励,并通过Merlin合约中的代码缺陷,最终获得了大量代币,对于合约功能缺陷问题,应在合约上线前进行严格审查及测试。对于此类攻击事件,零时科技安全团队给出以下建议:

安全建议

对于合约代码安全,可找多家安全审计公司进行审计。

对于铸币及转账问题,应根据业务逻辑进行严格审核演算,避免出现代币异常获取问题。

对敏感性较强的代码,要做到及时更新完善。

区块链技术网。

  • 发表于 2021-07-01 12:11
  • 阅读 ( 482 )
  • 学分 ( 11 )
  • 分类:资讯

评论