Furucombo的事故不在安全漏洞的范围内。主要原因是政府将禁用的aavev2**合约添加到了其白名单中,并且没有初始化aavev2**合约,这导致了攻击者的机会。与FuruCombo进行过交互的用户应及时撤销相关授权,以免造成进一步损失。
原题:避天灾,避人祸——富鲁孔博遭黑客攻击分析
据《连锁新闻》报道,**的DeFi项目FuruCombo遭到黑客攻击,损失约1500万美元。慢雾安全小组**参与分析,并与您分享了攻击细节。
攻击细节分析
有关合同在FuruCombo的**合同中。整个攻击过程很简单。通过设置FuruCombo的aavev2**的逻辑地址,攻击者将FuruCombo的**合约调用的所有逻辑转移到攻击者自己的恶意合约中,从而导致任何资金被盗。
但如果事情这么简单,那么这个分析就不值一提了。这个问题比你想象的要复杂得多。
如上图所示,攻击者的条目位于FuruCombo的batchexec函数中。首先,我们分析batchexec函数
以上是FuruCombo**契约batchexec函数的具体实现,预处理和后处理契约处理调用前后的数据,不涉及具体的调用逻辑,可以先忽略。我们专注于核心执行功能:
通过对execs代码的分析不难发现,该函数的主要逻辑是检查configs数组的数据,并根据configs数组的数据进行处理。然而,回顾攻击者的上述呼叫数据,不难发现configs的数据是一个0地址:
这里有一个技巧。因为0地址是EOA地址,所以对EOA地址的所有函数调用都将成功,但不会返回任何结果。结合这个技巧,execs函数中关于configs数据的部分可以暂时忽略。直接转到**一个核心执行函数:
_exec函数的逻辑也是非常简单的地址,直接把数据转发到指定的地址上。而通过对攻击交易的分析,我们可以发现这个地址确实是官方的法定地址。
**一步是调用 to address,即政府指定的aaev2**合约的initialize函数,将攻击者自己的恶意地址设置为aaev2**合约的逻辑地址。通过对FuruCombo合同的分析,发现在整个呼叫过程中没有严重的安全隐患,并对呼叫地址白名单进行了检查。那么问题就只能在要调用的相应**逻辑中找到,即aavev2**契约。
直接分析了aaev2**契约初始化函数的逻辑
您可以看到initialize函数是一个公共函数,并在开头检查它的实现是否是0地址。如果是0地址,则抛出错误。检查的目的实际上是检查是否设置了执行。如果已设置,则不能再次设置。基于此设置,很容易想象initialize函数只能调用一次。除非从未设置过aavev2**,否则调用将不会成功。FuruCombo真的没有设置相应的实现吗?考虑到这一点,我们检查了事务中的状态变化。具体如下:
可以看出,0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc存储位置中的内容在事务中发生了更改,写入的内容是攻击者自己的恶意合约地址0x86765dde9304bea32f65330d266155c4fa0c4f04。
0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc的位置是实现数据的存储地址。
也就是说,政府从未设置过aavev2**合约的实现地址,导致攻击者利用这个漏洞,造成FuruCombo资产损失。
总结
通过对整个事件的分析,FuruCombo的事故不在安全漏洞的范围之内。主要原因是政府将禁用的aavev2**合约添加到了其白名单中,并且没有初始化aavev2**合约,这导致了攻击者的机会。
建议
目前,由于FuruCombo受到攻击,任何已将代币授权给FuruCombo合同(0x17e8ca1b4798b97602895f63206afcd1fc90ca5f)的用户都将面临资金损失的风险。
slow-fog安全团队建议与FuruCombo交互过的用户检查是否存在将相关代币授权给FuruCombo的合同。如有授权,应及时撤销相关授权,以免造成进一步损失。
文章链接:https://www.btchangqing.cn/201309.html
更新时间:2021年02月28日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。