老調重彈,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專案中加入防重入的功能。

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


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;