UCO:可避天灾,难免人祸 —— Furucombo 被黑分析

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

攻击细节分析

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

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

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

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

芝商所首席经济学家:美国或可避免衰退:金色财经报道,芝商所首席经济学家兼总经理Bluford Putnam表示,所有推升通胀的原因都在慢慢得到解决,通胀正在回落,美国经济将会放缓,但或可避免陷入衰退。他表示:“我同意软着陆仍然很有可能实现,事实上这是最有可能的情况,但这个观点存在很大争议,因为美联储在尽可能地升高利率。要记住的是,从零开始加息时,前几次加息,事实上一直到九月,都可以想象为开车时将脚从油门上移开,但并未真正踩下刹车。美联储直到现在才开始加息至我们认为的限制性利率区间,即开始踩下刹车,因此经济将会放缓,但或许可以避免陷入衰退。”[2023/1/2 22:20:16]

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

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

ETHPoW团队:由矿工主导的以太坊分叉是“不可避免的”:金色财经报道,ETHPoW背后的团队今天发表了一封公开信,声称其以太坊的工作量证明分叉是“不可避免的”。ETHPoW是以太坊的计划分叉。它由一位名叫Chandler Guo的矿工领导,旨在脱离以太坊主网络。Guo声称,在以太坊在所谓的合并期间过渡到股权证明共识后,分叉将允许矿工继续他们的采矿作业。但这会产生两个区块链,每个区块链都有自己的协议版本和在链上运行的代币。

ETHPoW 向以太坊经典背后的开发团队ETC Cooperative发布了一封公开信。这是对ETC Cooperative之前写给Chandler Guo的信的回应,信中讨论了 ETHPoW 分叉不会成功的原因以及矿工应该简单地迁移到以太经典

在声明中,它认为以太坊经典不会容纳所有现有的以太坊矿工。因此它声称需要的不是一个而是多个 PoW 分叉。ETC 的小池子根本无法容纳 ETH 的整个算力池。这是一个艰难的事实。面对如此确凿的事实,这次硬分叉是不可避免的。[2022/8/12 12:21:53]

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

美国财政部长:衰退并非不可避免,美联储加息正在帮助遏制通胀:金色财经消息,美国财政部长Janet Yellen在接受NBC采访时称,美国经济增长正在放缓,但衰退并非不可避免。Yellen指出,强劲的美国招聘数据和消费者支出表明美国经济目前并未陷入衰退。

Yellen还表示,美国通胀“太高了”,而最近美联储加息正在帮助遏制物价飙升。(路透社)[2022/7/25 2:35:07]

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

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

俄罗斯外交部长:加密货币将在国际结算中占据重要地位的时刻会“不可避免地”到来:俄罗斯外交部长谢尔盖?拉夫罗夫表示,加密货币将在国际结算中占据重要地位的时刻会“不可避免地”到来。(卫星新闻)[2021/6/9 23:24:41]

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

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

声音 | 摩根溪数字资产创始人:采用数字货币是不可避免的:摩根溪数字资产创始人Apompliano在Twitter上表示,采用数字货币是不可避免的。更大的问题是,全球听众将选择哪种货币政策?[2019/9/2]

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

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

总结

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

建议

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

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

**参考链接:**

代币授权检查地址:https://approved.zone/

攻击交易:

__https://ethtx.info/mainnet/0x6a14869266a1dcf3f51b102f44b7af7d0a56f1766e5b1908ac80a6a23dbaf449

往期回顾

王者开局偶遇猪队友——简析AlphaFinance&Cream被黑

BitMart入驻慢雾区,发布「安全漏洞与威胁情报赏金计划」

引介|一种安全的LP价格的获取方法

千万美元损失背后的闪电贷攻击——yearnfinance被黑简析

如何通过恒定乘积黑掉SushiSwap?简析SushiSwap第二次被攻击始末

慢雾导航

慢雾科技官网

https://www.slowmist.com/

慢雾区官网

https://slowmist.io/

慢雾GitHub

https://github.com/slowmist

Telegram

https://t.me/slowmistteam

Twitter

https://twitter.com/@slowmist_team

Medium

https://medium.com/@slowmist

币乎

https://bihu.com/people/586104

知识星球

https://t.zsxq.com/Q3zNvvF

火星号

http://t.cn/AiRkv4Gz

链闻号

https://www.chainnews.com/u/958260692213.htm

免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。

本文来源于非小号媒体平台:

慢雾科技

现已在非小号资讯平台发布68篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/9726853.html

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

盘点零知识证明代表性项目:如何影响和塑造区块链生态系统?

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:15ms0-0:724ms