著名DeFi项目Furucombo被黑,损失超1500万美元。慢雾安全团队第一时间介入分析,并将攻击细节分享给大家。
攻击细节分析
本次发生问题的合约在Furucombo本身的代理合约当中。整个攻击流程很简单。攻击者通过设置了Furucombo的AaveV2Proxy的逻辑地址导致后续通过Furucombo代理合约调用的逻辑全部转发到攻击者自己的恶意合约上,导致任意资金被盗。
贾斯汀·比伯旗下NFT项目“inBetweeners”推出实物商品:金色财经报道,贾斯汀·比伯旗下NFT项目“inBetweeners”为庆祝创立一周年推出限量版 inBetweeners运动衫,该商品将在12月24日首发且前90分钟内仅对NFT持有人开放。inBetweeners由10,000只手绘熊组成,贾斯汀·比伯作为合作伙伴以为自己构建一个社区,近日该NFT项目还宣布与时尚品牌杜嘉班纳达成合作推出“drip”系列NFT。(highsnobiety)[2022/12/17 21:50:38]
但是如果事情那么简单,那么本次分析不值一提。问题远比想象的复杂得多。
如上图所示攻击者的入口在Furucombo的batchExec函数,我们先对batchExec函数进行分析:
阿根廷足球粉丝Token下跌,沙特NFT项目地板价上涨:11月22日消息,世界杯小组赛中 1:2 负于沙特阿拉伯后,行情数据显示,阿根廷足球粉丝 token ARG(Argentine Football Association Fan Token)短时下跌 23.2%,沙特 NFT 项目 The Saudis 地板价上涨。[2022/11/22 7:57:25]
以上是FurucomboProxy合约的batchExec函数的具体实现,其中_preProcess和_postProcess合约分别是对调用前后做一些数据上的处理,不涉及具体的调用逻辑,这边可以先忽略。我们主要观察核心的_execs函数:
福特公司提交包括NFT在内的多项元宇宙商标申请:金色财经报道,美国商标局商标注册律师Mike Kondoudis发推称,福特公司正在大举进军元宇宙,该公司已经为其所有的主要品牌提交了19项商标申请,计划包括: 虚拟汽车、卡车、面包车和服装以及NFT在线商店等。[2022/9/7 13:14:46]
通过对execs代码的分析不难发现,函数的主要逻辑是对configs数组的数据做检查,并根据configs数组的数据对data进行一些处理。但是回顾上文中攻击者的调用数据,不难发现攻击者的调用数据中,configs的数据是一个0地址:
虚拟鞋出行应用Aglet将于5月15日推出首款NFT运动鞋:5月12日消息,据虚拟鞋出行应用 Aglet 内公告显示,该应用将于洛杉矶时间 5 月 14 日 16 时(北京时间 5 月 15 日 7 时)推出首款 NFT 运动鞋。
Aglet由阿迪达斯数字创新的前负责人 Ryan Mullins 创立,将 Pokemon Go 的游戏方式用于运动鞋,在游戏中,玩家穿着虚拟鞋出行或到景点旅行从而获得积分,Aglet 提供了从 Air Force 1s 到 Yeezys 的一系列虚拟运动鞋,游戏将根据用户在出行中穿的虚拟鞋来确定积分,鞋子越贵或越稀有,出行获得积分就越高。同时,虚拟运动鞋的限量版会掉落在城市周围,玩家可以前往这些地点并将虚拟运动鞋添加到他们的收藏中。[2022/5/12 3:10:59]
分析 | 慢雾:攻击者拿下了DragonEx尽可能多的权限 攻击持续至少1天:据慢雾安全团队的链上情报分析,从DragonEx公布的“攻击者地址”的分析来看,20 个币种都被盗取(但还有一些DragonEx可交易的知名币种并没被公布),从链上行为来看攻击这些币种的攻击手法并不完全相同,攻击持续的时间至少有1天,但能造成这种大面积盗取结果的,至少可以推论出:攻击者拿下了DragonEx尽可能多的权限,更多细节请留意后续披露。[2019/3/26]
这里有一个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合约。如有授权,应及时撤销相关授权,避免进一步损失。
过去一年来,DeFi迎来飞速发展。为应对我们在去年10月发布的文章中提到的变化,我们已经决定对关键的架构限制和问题动手.
阳春三月,上海市北区块链生态谷樱花绽放,彭越浦河流经园区,注入人工湖。这个拥有一流环境的生态谷,正在打造区块链生态产业链,已集聚20余家区块链企业.
导读 在前面的文章「NFT的玩法指南」中,我们提到新手参与NFT投资,除了直接买入NFT资产之外,还有一种比较冷门的途径,那就是投资NFT的部分所有权代币.
原标题:《Tether与NYAG和解:提高透明度才是解决之道》一场长久的法律戏终于在2月23日找到了解决方案,纽约总检察长办公室宣布,在对加密货币交易所Bitfinex进行了22个月的调查后.
摘要: 自年初以来,Cardano的代币ADA的价格上涨了近600%。这是目前少数几个表现良好的头部代币之一。对于价格上涨,有两种看似合理的解释.
上海商场也能使用数字人民币了!就在“女神节”期间的新世界城和新世界大丸百货。这是数字人民币首次用于上海商场的大型营销活动中.