慢霧安全團隊建議在進行設計代幣分紅模式時應充分考慮代幣流動性與安全性之間的平衡。

作者:九九

2022 年 10 月 27 日,據慢霧安全團隊情報,Victor the Fortune (VTF) 代幣和 V8 protocol (V8) 代幣均存在嚴重漏洞遭到攻擊,攻擊者分別獲利約 5.8 萬美元和 5.3 萬美元。慢霧安全團隊第一時間介入分析,由於兩種代幣的被攻擊手法相同,故本文僅以 VTF 代幣的攻擊事件切入解析並將結果分享如下:

相關信息

Victor the Fortune (VTF) 是 BSC 鏈上的一個 ERC 20 代幣。以下是本次攻擊涉及的主要地址:

VTF 代幣地址

https://bscscan.com/address/0xc6548caF18e20F88cC437a52B6D388b0D54d830D

攻擊者地址 https://bscscan.com/address/0x57c112cf4f1e4e381158735b12aaf8384b60e1ce

主要攻擊合約地址:

https://bscscan.com/address/0x450595e4a42cc08c14091b08dbab654a68b0a877

攻擊交易:

https://bscscan.com/tx/0x74c63833219e751a38908860b9092b4acda3fb10fecefed3c480f7f85a346742
https://bscscan.com/tx/0xeeaf7e9662a7488ea724223c5156e209b630cdc21c961b85868fe45b64d9b086

攻擊核心點

在 VTF 合約中其會為代幣持有者進行獎勵分紅,分紅數額是由兩次分紅的時間差值和賬戶當前持有的代幣餘額決定的。因此攻擊者可以在請求分紅時利用閃電貸來放大持有的代幣餘額以獲得額外的分紅代幣獎勵。

具體細節分析

1、在交易 0x74c63833 我們可以看到攻擊者在發起攻擊的前兩天開始創建攻擊需要使用的合約,總共 400 個,並逐個調用了 updateUserBalance 函數設置這些合約的 userBalanceTime 值為兩天前的時間戳:

2、兩天后,攻擊者發起了正式的攻擊 0xeeaf7e96,攻擊者首先閃電貸借出大量的 USDT,接著通過 pancake 將 USDT 兌換成 VTF 代幣並調用 VTF 代幣合約的 updateUserBalance 函數獲得分紅獎勵:

3、將 VTF 代幣轉給第一步生成的攻擊合約 0x1dD557,之後用部分 VTF 代幣換回 USDT 後為池子添加流動性:

4、接下來攻擊者調用 VTF 代幣合約的 updateUserBalance 為攻擊合約 0x1dD557 分紅獎勵,由於正式攻擊與之前第一筆準備攻擊的交易相隔兩天,所以 userBalanceTime 與當前時間戳具有兩天的差值而不會為 0,從而通過了檢查並且計算獎勵的數值為賬戶中的 VTF 代幣餘額與時間差值相乘的結果,以此成功獲得分紅獎勵:

5、隨後,攻擊者將所有的 VTF 代幣轉移給下一個攻擊合約,並繼續調用 updateUserBalance 函數分紅獎勵,循環該過程直到所有的攻擊合約都獲得獎勵分紅並不斷累加 VTF 代幣,最後一個合約將所有的 VTF 匯集轉回給主攻擊合約 0x450595e4:

6、最後將獲得的 VTF 代幣通過 pancake 的池子兌換回 USDT 後獲利:

總結

本次攻擊事件是由於整個代幣的經濟模型設計過於簡單,代幣持有的獎勵分紅僅取決於 userBalanceTime 的時間差值與持有的代幣餘額進行計算,導致攻擊者利用創建多個合約以及閃電貸來積累獲取更多的代幣。慢霧安全團隊建議在進行設計代幣分紅模式時應充分考慮代幣流動性與安全性之間的平衡。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。