北京时间2022年5月17日凌晨5:24:15,CertiK安全技术团队监测到FEG在BNB链和以太坊上遭受了再一次闪电贷攻击。
FEG在BNB链上遭受的闪电贷攻击损失资产价值约130万美元。随后于7:31:29,其在以太坊上遭受的闪电贷攻击造成了约59万美元的损失,共计资产损失约190万美元。而昨日凌晨4时,FEG已在以太坊和BNB链上遭遇了一次大规模闪电贷攻击,导致了价值约130万美元的资产损失。
漏洞交易
漏洞交易样本(BNBChain):https://bscscan.com/tx/0xe956da324e16cb84acec1a43445fc2adbcdeb0e5635af6e40234179857858f82
漏洞交易样本(Ethereum):https://etherscan.io/tx/0xc0031514e222bf2f9f1a57a4af652494f08ec6e401b6ae5b4761d3b41e266a59
相关地址
攻击者地址:https://bscscan.com/address/0xf99e5f80486426e7d3e3921269ffee9c2da258e2
R0X(未验证): https://bscscan.com/address/0xa3d522c151ad654b36bdfe7a69d0c405193a22f9
fBNB(受攻击合约): https://bscscan.com/address/0x87b1acce6a1958e522233a737313c086551a5c76
攻击步骤
本文分析均基于交易层面。由于R0X合约在bscscan上未被验证,因此并没有攻击逻辑的决定性证据。
① 攻击者借贷了57,790WBNB并将其中30WBNB存入fBNB。
② 攻击者创建了一个新地址:0x3985aa71315a7aa4df3cb19602d61465a8850f61。
③ 攻击者在未验证的R0X合约中调用`depositInternal()`函数,将56,705 fBNB存入R0X合约中。
④ 攻击者创建了一个新地址0x23a5bfa77cccf71f1015fe5f97c8c9c43706fec4。
⑤ 攻击者调用了15次 "BUY() "函数来进一步存入R0X合约地址的fBNB。
⑥ 攻击者调用`swapToSwap()`函数来批准`path`(0x23a5bfa77cccf71f1015fe5f97c8c43706fec4)使用56138 fBNB。
⑦ 攻击者调用了30次`SELL()`函数来提取存入的fBNB(至地址0x3985aa71315a7aa4df3cb19602d61465a8850f61)。
⑧ 此外,地址0x23a5bfa77cccf71f1015fe5f97c8c9c43706fec4调用`0xe6916552`方法,将批准的fBNB转移到地址0x3985aa71315a7aa4df3cb19602d61465a8850f61。
⑨ 最后,攻击者提取了所有的fBNB并偿还了闪存贷款后离场,获取了其余资产作为利润。
漏洞分析
本次攻击与昨日的攻击类似,是由“swapToSwap()”函数中的一个漏洞造成的。
该函数在未对传入参数进行筛查验证的情况下,直接将用户输入的 "path "作为受信任方,允许未经验证的 "path "参数(地址)来使用当前合约的资产。因此,通过调用 "depositInternal() "和 "swapToSwap()",攻击者可获得使用当前合约资产的许可,从而盗取合约内的资产。
资产去向
被盗资金追踪:
https://debank.com/profile/0xf99e5f80486426e7d3e3921269ffee9c2da258e2/history
原始资金来自BNB链上的Tornado cash:
https://bscscan.com/tx/0x64b2995233677c6d21a389d58494de2f304dc13dda5a582c5177353e693f12a5
https://etherscan.io/tx/0x99fe2c5ab36ede9a6bb7da98360a7f08236755cdac066b118b840d8b9c00e307
https://etherscan.io/tx/0xc0031514e222bf2f9f1a57a4af652494f08ec6e401b6ae5b4761d3b41e266a59(290.97 ETH)
https://bscscan.com/tx/0xe956da324e16cb84acec1a43445fc2adbcdeb0e5635af6e40234179857858f82(4343.15 BNB)
截至2022年5月17日7:31:29,被盗资金仍存储在以太坊和BSC链上的攻击者钱包(0xf99e5f80486426e7d3e3921269ffee9c2da258e2)中。
写在最后
本次攻击事件可通过安全审计来有效地避免。
CertiK安全专家认为审计过程中可以检查出该风险——不受信任的 "path "参数被传递到协议中,并获取合约资产支出的权限。审计专家会将该风险归类于主要风险级别,此外,如果进行更深层次的挖掘,还可列明被利用的多种可能。