链资讯 链资讯
Ctrl+D收藏链资讯
首页 > Uniswap > 正文

慢雾:Furucombo被黑分析

作者:

时间:

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

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

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

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

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

笑果工厂发布“笑果脱口秀宝藏新星”系列数字头像:9月14日消息,笑果工厂发布“笑果脱口秀宝藏新星”系列数字头像,以10位潜力新秀艺人为原型,融合波普艺术与数字像素美学,通过AI随机自动生成,每个数字头像均可获取“笑果自营空间提前购票权益”1次,并有机会获得神秘礼品福袋。

此外,自9月13日起,每周二都将随着“脱口秀大会第五季”节目播出在笑果小程序释放1000枚,每周1次,共计9次抽取机会。[2022/9/14 13:28:03]

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

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

SEBA Bank研究主管:不确定加密行业去杠杆化是否已经结束:6月30日消息,针对比特币跌破19000美元关口,SEBA Bank研究主管Yves Longchamp在接受采访时表示:“与其他资产一样,比特币继续承受压力,高通胀、利率上升和经济衰退共同影响了加密货币。比特币与股票指数的走势密切相关,尤其是纳斯达克,证券市场一直承压,这也拖累了比特币的价格。在这种环境下,比特币和其他加密资产的压力依然存在,加密行业的去杠杆化是否已经结束存在不确定性。”(CNBC)[2022/6/30 1:42:14]

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

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

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

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

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

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

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

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

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

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

标签:ORGBCHRORLICFORGEbch币历史最高价Mirrored NetflixVitalick Neuterin

Uniswap热门资讯
金色DeFi周报 | DeFi平台Furucombo代理遭攻击

DeFi周刊是金色财经推出的一档每周DeFi领域的总结栏目,内容涵盖本周重要的DeFi数据、DeFi项目动态等。

万亿比特币的诗和远方

2018年8月2日,苹果公司夺得全球首家市值破万亿美元的桂冠。两年多时间过去后,加密市场上演了一场新的故事。2021年2月19日晚,比特币继续狂飙突进,市值成功迈过1万亿美元大关。 Asset Dash数据显示,截至2021年2月21日19时,比特币现价约为5.76万美元,市值达1.07万亿美元,升至全球资产市值排名第6位,位居腾讯之前。

案例:跨境代买加密币 被赖账咋办?

上周,飒姐团队通过一则案例介绍了BTC矿机丢失的民事救济途径(详见《案例|BTC矿机失窃,中国法律保护么?》),几位读者后台留言表示对比特币委托理财纠纷也很关注。今日,飒姐团队再分享一个案例,看看委托他人代买加密货币的法律风险。

金色观察 | 多个项目进入Layer 2 或将带领DEX爆发

据dYdX中文社区消息,经过7个月的研发,dYdX新的通用保证金永续合约现已在第二层主网上发布。 为了显著扩大交易量,dYdX和StarkWare在StarkWare的StarkEx可扩展引擎和dYdX的Perpetual智能合约基础上,为通用保证金永续合约建立了Layer 2协议。

ETH 质押者需要面对的残酷真相

编者注:本文的内容,某种意义上算是老生常谈。每周以太坊的作者收录这篇文章时还作了个评价 “those truths didn't seem that hard to me”,意思是,“我反正不觉得有什么难接受的”。其实,与验证者运营有关的风险不难接受,难接受的长期的不确定性。 如果你打算在信标链上质押 ETH,你得先搞明白这个事情的全貌。