木星链 木星链
Ctrl+D收藏木星链
首页 > 聚币 > 正文

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

作者:

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

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

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

攻击细节分析

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

Gate.io芝麻开门创始人韩林:未受Infura 宕机影,ETH 以及 ERC20 代币充提正常:11月11日,受 Ethereum 的API服务供应商 Infura 宕机影响,多家交易平台疑似暂停 ETH 以及 ERC20 代币充提服务。Gate.io芝麻开门创始人韩林表示:目前Gate.io区块链数据与Etherscan一致,ETH 以及 ERC20 代币充值提现正常,未受Infura 宕机影响。[2020/11/11 12:20:54]

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

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

BitMEX Research:交易所运行自己的以太坊节点,但无法与Infura等第三方协调则会暂停服务:推特网友Mr Cat刚刚向赵长鹏提问称,你不是在运行自己的ETH节点吗?赵长鹏回复道,是的,但不确定这是否会成为孤链。BitMEX Research对此回复称,交易所可能确实运行自己的以太坊节点,但如果本地链无法与Infura等第三方提供商协调,则会暂停一些服务,等待调查。

今日早前消息,Infura以太坊API服务中断,多家加交易所及钱包服务疑似受到影响。[2020/11/11 12:19:40]

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

声音 | Bitfury副董事长:成为区块链独角兽企业要具有坚持和诚实精神:首尔经济2月4日消息,比特币矿业巨头Bitfury副董事长George Kikvadze在接受记者表示时表示,要成为区块链独角兽企业要具有坚持和诚实精神,另外要有绝不害怕失败的姿态,不管如何要以灵活的姿态应对才能成长。此外,他还表示,区块链商用化时机也将到来。(尽管还没有实现区块链商用化)目前机构投资者的参与正在增加,从这一点来看,今后加密市场一定会进一步增长。”[2019/2/4]

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

美国科技公司Bitfury在格鲁吉亚采矿使用的电力引起争议:据btcmanager消息,美国科技公司Bitfury在格鲁吉亚首都第比利斯郊区开设了一个庞大的加密挖掘综合设施。除了加密挖掘之外,Bitfury还与该国政府合作开发区块链技术解决方案。Bitfury在格鲁吉亚的采矿规模已经引起了一些电力消费方面的争议。据报道,Bitfury的采矿作业每月平均消耗2800万千瓦小时的电力。据估计,该使用量相当于该国12万户家庭的平均消费量。大部分争议都源于,尽管这些数字很大,但该公司通常仅支付其电费的一小部分。某些反对派家认为,据称该公司有政府官员参与,因此Bitfury被允许支付较低的电费。 而Bitfury官员断然否认存在这种优惠待遇,称该公司是不良媒体的受害者。[2018/4/25]

Bitfury将在挪威投入3500万美元建立采矿数据中心:Bitfury今日宣布,将在挪威投入3500万美元开设一个新的采矿数据中心。据了解,与日本对数字货币征收重税的国家不同,挪威的税收政策相比之下相对宽松,数字货币的投资者需要缴纳25%的资本所得税,但投资损失部分则可以免税。[2018/3/21]

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

_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合约。如有授权,应及时撤销相关授权,避免进一步损失。

标签:FURCOMBUCOCOMBOFurioComBitkucoin官网下载ioscombo币怎么样

聚币热门资讯
以太坊:中币调研报告2月(下):以太坊最新动向解析 EIP-1559启动在即

从以太坊正式推出信标链至今已经过去了近三个月的时间,这三个月,以太坊2.0系统进展速度,信标链质押的ETH数量也与日俱增,V神也一直活跃在一线,宣传以太坊的最新进展和项目动态.

1900/1/1 0:00:00
以太坊:详解以太坊智能合约安全性漏洞 如何有效减少 DeFi 攻击?

详解以太坊智能合约安全性漏洞如何有效减少DeFi攻击?链闻ChainNews刚刚13原文标题:《关于去中心化金融区块链智能合约漏洞的探索》区块链是一种新型的分布式系统体系.

1900/1/1 0:00:00
比特币:美债收益率重拾升势,美股黄金跳水,BTC何去何从?

一夜之间,美债收益率又涨了,美股跌了,黄金也跌了。周三美债收益率再度大涨,令股市承压,10年期美债收益率涨逾10基点,日内一度逼近1.5%.

1900/1/1 0:00:00
比特币:北京商报:力挺比特币 华尔街杠上华盛顿

来源:北京商报记者:陶凤汤艺甜进入新一周,比特币仍然稳坐全球财经圈的C位,在华尔街的眼中也越来越“香”了:花旗发布100多页的报告为其铺路,富达直言其还有上涨空间.

1900/1/1 0:00:00
以太坊:谁还不是个「Layer2」?

谁还不是个「Layer2」?区块律动BlockBeats刚刚30这场关于迁移到Layer2的运动从去年9月就已经开启.

1900/1/1 0:00:00
NFT:7天内 NFT平台Rarible用户涨幅超过53%

原标题:7天内Rarible用户涨幅超过53%Rarible是一个领先的NFT平台,支持加密艺术品的销售和交易,在7天中,其用户增长了53%以上,达到近1.2万.

1900/1/1 0:00:00