前言
8月17日,BSC鏈上的XSURGE協議遭到閃電貸攻擊,損失超過500萬美元。對此,知道創宇區塊鏈安全實驗室對攻擊流程和代碼細節進行了全盤梳理。
全盤梳理
基礎信息
-攻擊tx:0x7e2a6ec08464e8e0118368cb933dc64ed9ce36445ecf9c49cacb970ea78531d2-攻擊合約:
0x1514AAA4dCF56c4Aa90da6a4ed19118E6800dc46
Fxstreet分析師Piovano:美元指數在93下方尋找方向:Fxstreet分析師Piovano表示,美元指數在93.5的高點回撤,延續了看跌基調,并連續第三個交易日走低,因美國10年期國債收益率從近1.8%回落至1.67%。盡管最近失去了一些上行動能,但人們對美國經濟表現穩健的預期,以及基建計劃都對美元形成支撐。
接下來市場將關注非農報告,在疫苗接種行動的推動下,美國重啟經濟,預計非農就業人數新增65萬人。[2021/4/2 19:41:03]
-SurgeToken:
聲音 | FXStreet分析師:9000美元將成為比特幣主要支撐線:FXStreet分析師John Isige分析指出:近期上漲受到趨勢線阻力下降的限制,同時近期下跌受到200日均線的保護。在MACD處于正區域的情況下,買家處于相對控制之中,且MACD還出現看漲交叉。相對強度指數(RSI)水平移動到60日線,并且已經持續一個多星期。接下來,9000美元將成為BTC的主要支撐線,但8800美元也將在需要時提供支持。[2019/11/4]
0xE1E1Aa58983F6b8eE8E4eCD206ceA6578F036c21
動態 | NPXS持續活躍 在ERC20代幣活躍地址數中排名首位:據TokenGazer數據分析顯示,2月11日ERC20代幣中活躍地址數排名前五的代幣是:NPXS,BAT,ZRX,OMG,MKR;活躍地址數增長速度排名前五的代幣是:MED,FOTA,AUTO,STACS,QNTU。[2019/2/12]
攻擊流程
這里有個小細節,代幣轉移流程中的順序是按照事件先后順序來顯示的,而重入之后的買操作引起的事件會在賣操作引起的事件之前,所以在流程中看到的每一個單獨的重入攻擊中是SURGE的買入發生在賣出之前。
漏洞原理
漏洞點在于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代幣而獲利。
簡而言之,典型的重入漏洞場景,教科書級的案例。
9月28日,Conflux聯合Odaily星球日報舉辦線下活動《當Thinker遇上Artist》,希望以此活動連接藝術家市場與主流市場,共同探尋藝術與創新的結合.
1900/1/1 0:00:00巴比特訊,10月4日消息,抖音海外版TikTok于10月3日在《紐約時報》上買下整版廣告宣傳介紹TikTok將引入NFT以獎勵內容創作.
1900/1/1 0:00:00親愛的用戶: BitZ將于2021年10月21日正式停止運營,平臺將于2021年10月12日15:00?關閉以下幣種交易對.
1900/1/1 0:00:00鏈聞消息,門羅幣上線由匿名開發者SChernykh開發的點對點、去中心化門羅幣礦池P2Pool,它結合了礦池挖礦和個人挖礦的優勢,使得礦工在參與礦池集體挖礦時仍然可以完全控制自己的門羅幣節點.
1900/1/1 0:00:00尊敬的用戶: BKEXGlobalETP專區將于2021年10月12日15:00上線CELO3L、CELO3S.
1900/1/1 0:00:00親愛的ZT用戶: ZTETF板即將上線C98BULL,C98BEAR,並開啟C98BULL/USDT,C98BEAR/USDT交易對.
1900/1/1 0:00:00