ERC1155的重入攻擊又“現身”:Revest Finance被攻擊事件簡析

2022年3月27日,成都鏈安鏈必應-區塊鏈安全態勢感知平台輿情監測顯示,DeFi協議Revest Finance遭到黑客攻擊,損失約12萬美元。

據悉,Revest Finance是針對DeFi領域的staking的解決方案,用戶通過Revest Finance參與任何DeFi的staking,都可以直接創建生成一個NFT(該NFT包含了這個staking倉位的當前以及未來價值)。

在攻擊發生之後,項目方官方發推表示他們以太坊合約遭受了攻擊,目前已採取措施確保所有鏈中的剩餘資金安全。

成都鏈安技術團隊對此事件進行了相關簡析。

1 分析如下

地址列表

Token合約:

0x56de8BC61346321D4F2211e3aC3c0A7F00dB9b76

被攻擊合約:

0x2320a28f52334d62622cc2eafa15de55f9987ed9

攻擊合約:

0xb480Ac726528D1c195cD3bb32F19C92E8d928519

攻擊者:

0xef967ECE5322c0D7d26Dab41778ACb55CE5Bd58B

交易截圖

首先攻擊者通過uniswapV2call 2次調用受攻擊的目標合約中的mintAddressLock函數。

該mintAddressLock函數用於查詢並向目標鑄造NFT,並且nextid(FNFTHandler.fnftsCreated)會在鑄造NFT後進行更新。

攻擊者第一次調用mintAddressLock函數鑄造了2個ID為1027的Token為後續攻擊做準備,隨後再次調用mintAddressLock鑄造了3600個ID為1028的Token,在mint函數完成前攻擊者重入了depositAdditionalToFNFT函數【ERC1155 onERC1155Received 重入】,由於NFT nextId(FNFTHandler.fnftsCreated)在mint函數鑄造NFT完成並通知後進行更新,此時的nextId仍然為1028,並且合約並未驗證1028的Token數量是否為0,因此攻擊者再次成功地鑄造了1個ID 為1031的Token,完成了攻擊。

2 總結建議

此次攻擊中的鑄幣相關函數未嚴格按照檢查-生效-交互模式設計,且未考慮到ERC1155 token轉賬重入的可能性。

建議在合約設計時嚴格按照檢查-生效-交互模式設計,並在ERC1155 token相關DeFi項目中加入防重入的功能。

截止目前為止,攻擊者仍然未將資產進行轉移,成都鏈安將持續進行監控。

攻擊者地址:

https://etherscan.io/address/0xef967ece5322c0d7d26dab41778acb55ce5bd58

Total
0
Shares
Related Posts