前言
8月17日,BSC鏈上的XSURGE協議遭到閃電貸攻擊,損失超過500萬美元。對此,知道創宇區塊鏈安全實驗室對攻擊流程和代碼細節進行了全盤梳理。
全盤梳理
基礎信息
-攻擊tx:0x7e2a6ec08464e8e0118368cb933dc64ed9ce36445ecf9c49cacb970ea78531d2-攻擊合約:
0x1514AAA4dCF56c4Aa90da6a4ed19118E6800dc46
0xScope:持有近8萬枚比特幣的巨鯨已沉睡12年,并未轉出資金:金色財經報道,據0xScope監測顯示,擁有79957枚比特幣的巨鯨已經沉睡12年,并沒有比特幣轉出。據推測,該地址屬于Mt.Gox黑客,一直無比特幣轉出,但這些年里有若干筆隨機收到的小于0.00001枚BTC的資金轉入。[2023/4/25 14:25:26]
-SurgeToken:
0xE1E1Aa58983F6b8eE8E4eCD206ceA6578F036c21
攻擊流程
一白帽黑客從0xSifu處獲得100ETH,計劃返還資金:4月9日消息,推特用戶Trust發推表示,剛才以白帽黑客形式從Frog Nation前CFO 0xSifu處獲得100ETH,計劃返還這些資金。此前報道,SushiSwap的Router Process 2合約似乎存在一個與approve有關的漏洞,導致FrogNation前CFO 0xSifu損失約1900枚ETH(超330萬美元)。[2023/4/9 13:52:50]
這里有個小細節,代幣轉移流程中的順序是按照事件先后順序來顯示的,而重入之后的買操作引起的事件會在賣操作引起的事件之前,所以在流程中看到的每一個單獨的重入攻擊中是SURGE的買入發生在賣出之前。
AXS突破12美元,24小時漲幅37.45%:1月23日消息,據OKX行情數據顯示,AXS(Axie Infinity)突破12美元,現報價12.59美元,24小時漲幅37.45%。行情波動較大,請做好風險控制。[2023/1/23 11:26:33]
漏洞原理
漏洞點在于SurgeToken合約中的sell()函數,其中對調用者msg.sender的BNB轉賬采用的call()函數,并且在轉賬之后才更新代幣總量_totalSupply,是典型的重入漏洞場景。
雖然sell()函數使用了nonReentrant修飾防止了重入,但purchase()函數并沒有。重入轉回BNB給合約,觸發fallback函數調用purchase(),由于_totalSupply尚未減去賣出量,而導致可買入相較正常更多的SURGE代幣。
復現
價格分析
sell()函數賣出過程中,輸入tokenAmount與輸出amountBNB的關系:
purchase()函數買入過程中,輸入bnbAmount與輸出tokensToSend的關系:
在重入過程中,sell()函數賣出后獲得的BNB通過重入打回SurgeToken合約傳入purchase()函數故令sell()函數的輸出amountBNB與purchase()函數的輸入bnbAmount相等,可得到整個利用流程中輸入與輸出的關系:
若要實現套利,需要輸出大于輸入,則有:
最后得到:
也就是說重入套利過程中調用sell()賣出的代幣量必須在代幣總量的12.383%以上
模擬演示
為方便調試,將SurgeToken合約中的mint()函數可見性改為public,并為構造函數增加payable修飾,在部署時傳入10^15wei。
SurgeToken合約初始化的代幣總量為10^9,根據前面推導出的結論,為攻擊合約鑄幣200000000,則攻擊合約擁有大約SURGE代幣總量16%的代幣。
攻擊合約調用Attack()函數攻擊,查看攻擊合約的代幣余額已變為209549307,獲利9549307。
總結
XSURGE協議被攻擊的本質原因在于sell()函數中存在重入漏洞,導致可通過purchase函數買入較多的SURGE代幣而獲利。
簡而言之,典型的重入漏洞場景,教科書級的案例。
Tags:URGSURSURGEBNBburger幣怎么樣Helmet.insure Governance TokenSURGE幣wbnb和bnb區別和聯系
尊敬的用戶:? 本著保護用戶的宗旨,BKEXGlobal為保證交易幣種的高標準,將定期對平臺內的代幣進行綜合性審查;如項目方出現對投資者不利因素,我們將采取對應措施,并下架對應項目.
1900/1/1 0:00:00Gate.io量化跟單Telegram交流群,參加信號新星培訓營,贏取9,000美金活動已圓滿結束,根據活動規則,我們已為符合規則的用戶發放了活動獎勵.
1900/1/1 0:00:00鏈聞消息,穩定幣協議Angle在博客中公開更多關于協議的細節,Angle將發行的穩定幣被稱為agToken,首個發行的穩定幣將是歐元穩定幣agEUR,之后將支持美元穩定幣agUSD.
1900/1/1 0:00:00Gate.ioMOVR、PUSH、CIRUS、EDEN、XYO、HID交易充值賽活動已圓滿結束,根據活動規則,我們已為符合規則的用戶發放了活動獎勵。用戶可進入“錢包—賬單明細”查詢獎勵發放情況.
1900/1/1 0:00:009月24日,央行數研所狄剛在“區塊鏈與數字經濟發展論壇”上表示,數字貨幣研究所近年來聚焦區塊鏈的具體實踐.
1900/1/1 0:00:00撰文:PaulVeradittakit,區塊鏈投資機構PanteraCapital合伙人編譯:PerryWang盡管多鏈項目僅僅在幾年前還屬于逆勢而上,但加密行業現在似乎已經在期待「多鏈未來」.
1900/1/1 0:00:00