Furucombo此次事故并不在安全漏洞的范畴内,主要的原因在于官方将未启用的AaveV2Proxy合约添加进了自己的白名单中,并且未对AaveV2Proxy合约进行初始化,导致攻击者有机可乘。与Furucombo交互过的用户应及时撤销相关授权,避免进一步损失。
据链闻消息,著名DeFi项目Furucombo被黑,损失约1500万美元。慢雾安全团队第一时间介入分析,并将攻击细节分享给大家。
攻击细节分析
本次发生问题的合约在Furucombo本身的代理合约当中。整个攻击流程很简单。攻击者通过设置了Furucombo的AaveV2Proxy的逻辑地址导致后续通过Furucombo代理合约调用的逻辑全部转发到攻击者自己的恶意合约上,导致任意资金被盗。
美国上市矿企Cipher Mining已与Bitfury签署协议,计划购买2.8万至5.6万台比特币矿机:10月13日消息,据Cipher Mining向美国证交会提供的文件显示,Cipher Mining已与Bitfury签署了协议,以“具有吸引力的价格”购买2.8万至5.6万台比特币矿机,预计将于2022年6月至12月分7批交付。协议显示每台矿机的购买价为6250美元,预付款为1000万美元。该批矿机预计将产生约5.4EH/s至10.9EH/s的算力。
此前报道,BitFury此前通过特殊目的收购公司剥离了Cipher Mining部门,并将其与GoodWorks公司合并成立新公司Cipher MiningTechnologies,该公司以20亿美元估值在纳斯达克上市。[2021/10/14 20:27:12]
API服务供应商Infura支持Arbitrum:API服务供应商Infura发文宣布支持Arbitrum,Infura将提供所有的RPC模式,支持开发者在Arbitrum主网上创建并运行应用。[2021/7/13 0:48:06]
但是如果事情那么简单,那么本次分析不值一提。问题远比想象的复杂得多。
如上图所示攻击者的入口在Furucombo的batchExec函数,我们先对batchExec函数进行分析:
以上是FurucomboProxy合约的batchExec函数的具体实现,其中_preProcess和_postProcess合约分别是对调用前后做一些数据上的处理,不涉及具体的调用逻辑,这边可以先忽略。我们主要观察核心的_execs函数:
Infura推出的以太坊交易服务ITX已上线主网:2月17日消息,以太坊API服务供应商Infura推出的以太坊交易服务Infura Transactions(ITX)已在以太坊主网上线。此项功能可简化以太坊的交易流程,减少开发人员处理Gas费管理方面的复杂性。[2021/2/17 17:24:02]
通过对execs代码的分析不难发现,函数的主要逻辑是对configs数组的数据做检查,并根据configs数组的数据对data进行一些处理。但是回顾上文中攻击者的调用数据,不难发现攻击者的调用数据中,configs的数据是一个0地址:
动态 | Bitfury将比特币闪电网络支付集成给更多商家:据coindesk报道,Bitfury Group与商业支付处理商HadePay合作,为美国、加拿大和欧盟的商家提供基于闪电网络的比特币支付。Bitfury已将其基于网络的闪电网络Peach Merchant API与HadePay平台集成,允许企业通过闪电网络接受付款、提高比特币交易的效率并降低成本。Bitfury表示,付款完成后,商家可以通过HadePay的平台立即将比特币转换成另一种货币。[2019/3/15]
这里有一个trick,由于0地址是一个EOA地址,所有对EOA地址的函数调用都会成功,但是不会返回任何结果。结合这个trick,execs函数中的关于configs数据的部分可以先暂时忽略。直接看到最后的核心_exec函数:
区块链服务公司Bitfury推出Crystal平台,犯罪活动或远离比特币:比特币矿业公司Bitfury在转型为区块链服务公司之后,一直在和政府机构接触。今天,该公司推出了一款Crystal工具,目的是方便用户识别和调查最知名区块链上所发生的犯罪活动。该平台经过两年多发展,得到了前一级政府官员的反馈,最终目的是帮助比特币摆脱与黑市交易的关联性。(Coindesk)[2018/1/30]
_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合约。如有授权,应及时撤销相关授权,避免进一步损失。
市场概述:自上期报告所述,比特币、以太坊和UNI当时均处于结构打破的临界点,后同时放量突破结构的压制,市场情绪出现迅速反弹,后回踩仍然不改变结构打破短期看多的有效性.
1900/1/1 0:00:00介绍过去一年里,在加密货币行业出现的许多新趋势中,流动性挖矿无疑是最重要的趋势之一。在2019年,Synthetix成为首个成功启动流动性挖矿计划的大型加密协议.
1900/1/1 0:00:00文章系金色财经专栏作者币圈北冥供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别防上当.
1900/1/1 0:00:00来源:每日经济新闻,作者:张虹蕾比特币牛市热火朝天,“挖矿”带来的高耗能问题却再次给矿场主们“泼了一盆冷水”。近日,内蒙古宣布,拟4月底前全面关停虚拟币挖矿项目,引发行业热议.
1900/1/1 0:00:00本文由NewBloc原创,授权金色财经首发。本文作者为NewBloc策略分析师Barry,5年外汇黄金市场交易经历.
1900/1/1 0:00:00原标题:VitalikAMA,以太坊Rollup二层技术全解读第一时间分享昨晚咕噜和Vitalik就以太坊Rollup二层技术进行的AMA。欢迎大家转载、传播,但请注明该笔记版本由行走整理.
1900/1/1 0:00:00