SharkTeam:BNO攻擊事件原理分析
北京時間2023年7月18日,Ocean BNO遭受閃電貸攻擊,攻擊者已獲利約50萬美元。
SharkTeam對此事件第一時間進行了技術分析,並總結了安全防範手段,希望後續項目可以引以為戒,共築區塊鏈行業的安全防线。
一、 事件分析
攻擊者地址:
0xa6566574edc60d7b2adbacedb71d5142cf2677fb
攻擊合約:
0xd138b9a58d3e5f4be1cd5ec90b66310e241c13cd
被攻擊合約:
0xdCA503449899d5649D32175a255A8835A03E4006
攻擊交易:
0x33fed54de490797b99b2fc7a159e43af57e9e6bdefc2c2d052dc814cfe0096b9
攻擊流程:
(1)攻擊者(0xa6566574)通過pancakeSwap閃電貸借取286449 枚BNO。
(2)隨後調用被攻擊合約(0xdCA50344)的stakeNft函數質押兩個nft。
(3)接着調用被攻擊合約(0xdCA50344)的pledge函數質押277856枚BNO幣。
(4)調用被攻擊合約(0xdCA50344)的emergencyWithdraw函數提取回全部的BNO
(5)然後調用被攻擊合約(0xdCA50344)的unstakeNft函數,取回兩個質押的nft並收到額外的BNO代幣。
(6)循環上述過程,持續獲得額外的BNO代幣
(7)最後歸還閃電貸後將所有的BNO代幣換成50.5W個BUSD後獲利離場。
二、漏洞分析
本次攻擊的根本原因是:被攻擊合約(0xdCA50344)中的獎勵計算機制和緊急提取函數的交互邏輯出現問題,導致用戶在提取本金後可以得到一筆額外的獎勵代幣。
合約提供emergencyWithdraw函數用於緊急提取代幣,並清除了攻擊者的allstake總抵押量和rewardDebt總債務量,但並沒有清除攻擊者的nftAddtion變量,而nftAddition變量也是通過allstake變量計算得到。
而在unstakeNft函數中仍然會計算出用戶當前獎勵,而在nftAddition變量沒有被歸零的情況下,pendingFit函數仍然會返回一個額外的BNO獎勵值,導致攻擊者獲得額外的BNO代幣。
三、安全建議
針對本次攻擊事件,我們在开發過程中應遵循以下注意事項:
(1)在進行獎勵計算時,校驗用戶是否提取本金。
(2)項目上线前,需要向第三方專業的審計團隊尋求技術幫助。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
XRP 漲至 7.5 美元?分析師告訴 XRP 大軍為純粹的煙火做好准備!
加密貨幣分析師 EGRAG 表示,XRP 即將迎來關鍵時刻,價格可能大幅上漲,這取決於能否突破關鍵...
今晚ETH迎來暴漲時代 op、arb、metis等以太坊二層項目能否跑出百倍幣?
北京時間7月23日晚上美股开盤後 ETH 的ETF开始交易。ETH的裏程碑啊,新的時代开啓。突破前...
Mt Gox 轉移 28 億美元比特幣 加密貨幣下跌 ETH ETF 提前發行
2014 年倒閉的臭名昭著的比特幣交易所 Mt Gox 已向債權人轉移了大量比特幣 (BTC),作...
SharkTeam
文章數量
37粉絲數
0