Revest Finance - 翻车



Revest Finance被黑了大约200美元。

"为锁定资产提供即时流动性"的金融NFT平台,成为重入攻击的受害者。

Revest团队的快速反应使他们没有损失更多的资金,然而,他们仍然在排行榜上占有一席之地(第67位)。

这一切是如何发生的?

Revest团队从BLOCKS DAO开发团队得知 "在UTC时间2:24遭受漏洞攻击"

除了BLOCKS DAO之外,EcoFiRENA Finance也遭受了巨大的损失。

通过阻止RVST代币的转移,团队击退了黑客试图(70秒后)耗尽Uniswap上的RVST-ETH池的举动,避免了另外115万美元的损失。

攻击者对被盗代币的砸盘对BLOCKS(最初下跌>95%,目前下跌约80%)和ECO(下跌约98%)的价格产生了很大影响,然而RENA代币仍然留在攻击者的地址中。

来源:@BlockSecTeam

攻击的根本原因是ERC1155铸币合约中的一个重入漏洞(交易示例:RENA

用于创建新的智能合约金库的函数 mintAddressLock,包含两个关键参数:数量存款金额

Revest Vault调用FNFTHandler的 mint 函数,为接收者铸造一定数量的下一个 fnftId 的ERC1155 token,这些token随后可以被烧毁,以按比例获得锁定代币。函数每执行一次, fnftId 增加1。

额外的资金可以使用 depositAdditionalToFNFT 函数存入FNFT,存款必须与 数量 定义的比例相同,具体为:数量==FNFTHandler.getSupply(fnftId)

如果不满足上述声明,用户的份额将从仓位中提取并转移到一个新的FNFT中,余额等于现有仓位的 depositAmount 加上新存入的数额。

鉴于现有仓位的 depositAmount 被使用,但 fnftId (通过fnftsCreated告知)直到铸币流程结束才被更新,此时的重入允许额外的资金添加到现有仓位。

逐步分析:

1: 攻击者使用 mintAddressLock 函数开了一个新仓位,fnftId=1027, depositAmount=0, quantities=[2], asset=Rena, receiver=[恶意合约]。由于 depositAmount X quantities[0] = 0 X 2 = 0,攻击者转移的Rena为零。

2: 攻击者再次使用 mintAddressLock 函数建立一个新的仓位,fnftId=1028, depositAmount=0, quantities=360,000, asset=Rena, recipients=[恶意合约]。同样,攻击者转移了零Rena,并收到了 360,000 个代币(fnftId=1028)。注意,这些1028号代币现在没有价值。

**3:**在步骤2结束时,在FNFTHandler的铸币函数中,攻击者通过 onERC1155Received 接口重新进入 Revest 合约。调用depositAdditionalToFNFT 函数,amount = 1e18, quantities=1, fnftId=1027,这通常会打开fnftId=1029(新)仓位。然而,由于更新 fnftId 的延迟,1028号仓位被上述数据重写,为攻击者拥有的1028号代币赋予了价值。

4: 攻击者使用 withdrawFNFT 函数提取360,000 X 1e18 Rena代币,而在步骤3中他只存入了1 quantity X 1e18 Rena代币。

根据官方的事后报告,代币损失(大约共200万美元):

35万RENA (~12.5万美元,仍在攻击者的地址中)

715m blocks _ (~170万美元)_

770万ECO _ (~10万美元)_

少量(10-12万美元)的ConstitutionDAOLUKSO也被盗。

将大部分被盗代币换成ETH后,攻击者将资金存入Tornado Cash。

对于DeFi协议来说,安全漏洞绝不是什么好事,尤其是当它的产品是被其他项目代币信任的安全锁。

Revest说:"一次审计是永远不够的",因为他们发现这个漏洞在项目的审计中没有被发现(solidity.finance)。

团队的快速反应和彻底的事后调查是很好的表现,尽管Revest已经表示,"我们没有足够的财务赔付所需的资金",事后调查报告强调希望在未来将事情做好。

目前,尚不清楚后续进展。


分享本文

REKT作为匿名作者的公共平台,我们对REKT上托管的观点或内容不承担任何责任。

捐赠 (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

声明:

REKT对我们网站上发布的或与我们的服务相关的任何内容不承担任何责任,无论是由我们网站的匿名作者,还是由 REKT发布或引起的。虽然我们为匿名作者的行为和发文设置规则,我们不控制也不对匿名作者在我们的网站或服务上发布、传输或分享的内容负责,也不对您在我们的网站或服务上可能遇到的任何冒犯性、不适当、淫秽、非法或其他令人反感的内容负责。REKT不对我们网站或服务的任何用户的线上或线下行为负责。