北京時間2023年5月6日,DEUS的 穩定幣DEI合約存在burn邏輯漏洞,攻擊者已獲利約630萬美元。
SharkTeam對此事件第一時間進行了技術分析,并總結了安全防范手段,希望后續項目可以引以為戒,共筑區塊鏈行業的安全防線。
一、事件分析
(資料圖片)
攻擊者地址:
0x08e80ecb146dc0b835cf3d6c48da97556998f599
攻擊合約:0x2b1a7a457a2c55ba1e03c087cc3e4e5b05b6360f
漏洞合約:
0xDE1E704dae0B4051e80DAbB26ab6ad6c12262DA0
攻擊交易:
0xde2c8718a9efd8db0eaf9d8141089a22a89bca7d1415d04c05ba107dc1a190c3
該攻擊交易的執行流程:
1、首先,攻擊者(0x08e80ecb)先調用了攻擊合約(0x2b1a7a45)的攻擊函數。
2、在攻擊函數中,調用漏洞合約(0xDE1E704d)的approve->burnFrom->transferFrom函數
3、在transferFrom函數中將110萬個DEI轉移到自己的賬戶,最后調用交易對的swap將DEI換成USD轉移到攻擊者(0x08e80ecb)。
漏洞分析:
在burnFrom函數中,直接將sender對account的allowance與account對sender的allowance進行了復制。
攻擊者首先對漏洞合約(0xDE1E704d)進行最大值的approve,然后調用burnFrom函數輸入amount=0,即直接讓漏洞合約(0xDE1E704d)對攻擊合約進行了approve的最大值。
隨后直接調用tranferFrom函數將110萬的DEI轉移到自己的地址,最后通過pair交易對換成USD完成攻擊
漏洞總結:
本次事件根本原因是漏洞合約(RouteProcessor2)burnFrom的調用權限問題或者是_allowance傳參錯誤問題,具體需要結合項目方實際業務需求進行修改,可以通過對burnFrom設置合適的管理員權限或者將_allowance[_msgSender()][account] 改成 _allowance[account][_msgSender()]等方法進行修復。
二、安全建議
針對本次攻擊事件,我們在開發過程中應遵循以下注意事項:
1、在開發資產相關的邏輯函數時,應慎重考慮業務邏輯的嚴謹性。
2、本次產生漏洞的burnFrom函數是項目方在4月16日進行合約升級時引入的,所以項目在上線或升級合約前,需要通過第三方專業審計團隊的合約審計。
About Us
SharkTeam的愿景是全面保護Web3世界的安全。團隊由來自世界各地的經驗豐富的安全專業人士和高級研究人員組成,精通區塊鏈和智能合約的底層理論,提供包括智能合約審計、鏈上分析、應急響應等服務。已與區塊鏈生態系統各個領域的關鍵參與者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立長期合作關系。
官網:https://www.sharkteam.org
Twitter:https://twitter.com/sharkteamorg
Discord:https://discord.gg/jGH9xXCjDZ
Telegram:https://t.me/sharkteamorg