火星链 火星链
Ctrl+D收藏火星链
首页 > Pol币 > 正文

COM:Furucombo 究竟为何会遭受攻击?慢雾拆解攻击细节

作者:

时间:1900/1/1 0:00:00

Furucombo此次事故并不在安全漏洞的范畴内,主要的原因在于官方将未启用的AaveV2Proxy合约添加进了自己的白名单中,并且未对AaveV2Proxy合约进行初始化,导致攻击者有机可乘。与Furucombo交互过的用户应及时撤销相关授权,避免进一步损失。

据链闻消息,著名DeFi项目Furucombo被黑,损失约1500万美元。慢雾安全团队第一时间介入分析,并将攻击细节分享给大家。

攻击细节分析

本次发生问题的合约在Furucombo本身的代理合约当中。整个攻击流程很简单。攻击者通过设置了Furucombo的AaveV2Proxy的逻辑地址导致后续通过Furucombo代理合约调用的逻辑全部转发到攻击者自己的恶意合约上,导致任意资金被盗。

DeFi协议Furucombo宣布推出基金管理系统:6月3日消息,DeFi 协议 Furucombo 宣布推出基金管理系统,允许任何人成为基金经理,让专家管理投资者的存款,以利用 Furucombo 最大化他们的投资回报。此外,基金经理有机会通过从储户那里赚取利润来赚取业绩费。首批基金经理将被列入白名单,并由 Furucombo 团队审核,以确保系统的稳定性。[2022/6/3 4:00:31]

但是如果事情那么简单,那么本次分析不值一提。问题远比想象的复杂得多。

如上图所示攻击者的入口在Furucombo的batchExec函数,我们先对batchExec函数进行分析:

Infura、Truffle和MetaMask将支持Optimism主网:ConsenSys表示,Infura、Truffle和MetaMask将支持Optimism主网。Infura将作为Optimism的API,Truffle能够简化在Optimism主网部署应用的程序,MetaMask将为用户提供低摩擦确认。[2021/6/19 23:49:31]

以上是FurucomboProxy合约的batchExec函数的具体实现,其中_preProcess和_postProcess合约分别是对调用前后做一些数据上的处理,不涉及具体的调用逻辑,这边可以先忽略。我们主要观察核心的_execs函数:

卡巴斯基将利用Bitfury的软件为莫斯科构建区块链投票系统:金色财经报道,根据用于电子投票的官方页面,莫斯科信息技术部正在计划使用Bitfury的开源企业区块链Exonum构建用于投票的区块链。据熟悉电子投票项目的几位人士称,为莫斯科当局构建解决方案的公司是反病软件供应商卡巴斯基实验室。据此前报道,据莫斯科居民将能够使用基于区块链的系统对该国宪法的修正案进行投票。[2020/6/10]

通过对execs代码的分析不难发现,函数的主要逻辑是对configs数组的数据做检查,并根据configs数组的数据对data进行一些处理。但是回顾上文中攻击者的调用数据,不难发现攻击者的调用数据中,configs的数据是一个0地址:

动态 | Bitfury在其分析平台Crystal最新版本中推出三项更新:据Crypto Ninjas报道,比特币矿商Bitfury近期在其Crystal分析平台的2.2版本中推出了三项重要产品更新,分别是:活动通知、间接连接和针对以太坊交易的追踪。[2019/6/4]

这里有一个trick,由于0地址是一个EOA地址,所有对EOA地址的函数调用都会成功,但是不会返回任何结果。结合这个trick,execs函数中的关于configs数据的部分可以先暂时忽略。直接看到最后的核心_exec函数:

动态 | 佰仕通集团旗下科技公司与Bitfury合作,将区块链技术引入贸易融资领域:据Coindesk消息,佰仕通集团旗下科技公司Mphasis与Bitfury最近展开合作,计划将区块链技术引入贸易融资领域。双方表示,将会通过自动化和“新型代币化”为结算、外汇和自动融资流程带来新的透明度和效率。[2019/5/29]

_exec函数的逻辑也很简单,在校验了_to地址后,直接就将data转发到指定的_to地址上了。而通过对攻击交易的分析,我们能发现这个_to地址确实是官方指定的合法地址。

最后一步,便是调用_to地址,也就是官方指定的AaveV2Proxy合约的initialize函数,将攻击者自己的恶意地址设置成AaveV2Proxy合约的逻辑地址。通过对Furucombo合约的分析,可以发现整个调用流程上没有出现严重的安全点,对调用的地址也进行了白名单的检查。那么问题只能是出在了对应要调用的代理逻辑上,也就是AaveV2Proxy合约。

我们直接分析AaveV2Proxy合约的initialize函数的逻辑:

可以看到initialize函数是一个public函数,并在开头就检查了_implementation是否是0地址,如果是0地址,则抛出错误。这个检查的目的其实就是检查了_implementation是否被设置了,如果被设置了,就无法再次设置。根据这个设置,不难想出initialize这个函数只能调用一次。除非AaveV2Proxy从来没有设置过_implementation,否则这个调用是不会成功的。难道Furucombo真的没有设置过对应的_implementation吗?带着这样的疑问,我们检查了交易内的状态变化。如下:

可以看到,交易中改变了存储位置为0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc的内容,而写入的内容正是攻击者自己的恶意合约地址0x86765dde9304bea32f65330d266155c4fa0c4f04。

而0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc这个位置,正是_implementation数据的存储地址。

也就是说,官方从来没有设置过AaveV2Proxy合约的_implementation地址,导致攻击者钻了这个空子,造成了Furucombo资产损失。

总结

通过对整个事件的分析来看,Furucombo此次事故并不在安全漏洞的范畴内,主要的原因在于官方将未启用的AaveV2Proxy合约添加进了自己的白名单中,并且未对AaveV2Proxy合约进行初始化,导致攻击者有机可乘。

建议

目前,由于Furucombo遭受攻击,导致任何将代币授权过给Furucombo合约(0x17e8ca1b4798b97602895f63206afcd1fc90ca5f)的用户都将面临资金损失的风险。

慢雾安全团队建议与Furucombo交互过的用户检查是否有将相关代币授权给Furucombo合约。如有授权,应及时撤销相关授权,避免进一步损失。

标签:FURCOMUCOCOMBOFURYX币Compound Etherkucoin交易所返佣设置多少combo币最新消息

Pol币热门资讯
NFT:NFT巨鲸玩家WhaleShark科普:影响力人士的NFT使用指南

最近加密货币市场对NFT的关注度越来越高,越来越多人觉得这一新兴事物不可避免地会带来一场数字内容革命,并在如今全新的去中心化时代发挥领导作用.

1900/1/1 0:00:00
以太坊:以太坊1559提案:矿工、持币人和社区利益的再平衡

摘要以太坊EIP-1559提案引发过半矿池反对,如何推进降费提速是以太坊最紧迫的任务。随着DeFi等生态的崛起,以太坊链上转账费用持续高企.

1900/1/1 0:00:00
ASK:觅新|Mask Network:一个帮助用户从Web 2.0无缝过渡到Web 3.0的门户

觅新|MaskNetwork:一个帮助用户从Web2.0无缝过渡到Web3.0的门户 金色财经meio刚刚26《觅新》是金色财经推出的一档区块链项目观察类项目,覆盖行业各领域项目发展情况.

1900/1/1 0:00:00
DEFI:金色DeFi日报 | SUSHI区块奖励已降至40枚/区块

金色DeFi日报|SUSHI区块奖励已降至40枚/区块 金色财经月儿刚刚15DeFi数据1.DeFi总市值:686.

1900/1/1 0:00:00
ANT:QKL123 投研 | 多头情绪继续发酵,提防美股误杀风险

市场概述:继上期报告所述,回踩不改变结构打破短期看多的有效性,多头情绪持续发酵,当前币圈大多数标的均处于上涨结构中,可关注上涨结构的打破,此外.

1900/1/1 0:00:00
ETH:闪电贷的使用场景:什么时候需要使用闪电贷?

闪电贷是一个有效的工具,即使目前gas费高,大多数用户望而却步。不过相关的原理和应用场景还是需要知道的。未来闪电贷会变得更加便捷,会有更多的快速套利机会,我们今天讲一下闪电贷的基本应用场景.

1900/1/1 0:00:00