2025年3月14日,在幣安智慧鏈(BSC)上運營的WebKey Dao專案遭受了一次攻擊,導致金融損失約737,000美元。本分析深入探討了攻擊的機制,識別了根本原因,並概述了關鍵的安全啟示。
事件概述
日期: 2025年3月14日
平臺: 幣安智慧鏈(BSC)
攻擊者地址:0x3026c464d3bd6ef0ced0d49e80f171b58176ce32
受影響合約(代理): 0xd511096a73292a7419a94354d4c1c73e8a3cd851
實施合約(攻擊時):0xc39c54868a4f842b02a99339f4a57a44efc310b8
攻擊交易:0xf13d281d4aa95f1aca457bd17f2531581b0ce918c90905d65934c9e67f6ae0ec
攻擊機制
攻擊者透過利用WebKey Dao合約中配置錯誤的引數執行了有利可圖的套利策略。攻擊交易中重複的核心步驟如下:
購買: 呼叫
buy
函式,使用USDT以運營商設定的人為低價購買wkeyDao代幣。接收: 由於
immediateReleaseTokens
值為非零,立即接收購買的wkeyDao代幣。出售: 在去中心化交易所(如PancakeSwap)上將收到的wkeyDao代幣以當前較高的市場價格兌換為USDT或其他資產。
攻擊者重複了這個購買-接收-出售迴圈。例如,對主要攻擊交易(0xf13d...ae0ec)的分析顯示,攻擊者使用了約1,200 USDT的部分資金獲取了230個wkeyDao代幣,隨後以約13,000 USDT的價格出售。透過在交易中重複這種套利,攻擊者能夠耗盡大量價值,導致總損失約737,000美元。
技術深入:追蹤漏洞
我們的調查重點是攻擊者如何以明顯低於市場的價格獲取代幣。
分析
buy
函式:buy
函式根據currentSaleInfo
儲存變數中定義的引數促進代幣銷售。在攻擊時,這包括固定價格(購買捆綁包為1,200 USDT)和immediateReleaseTokens
的值。當immediateReleaseTokens
設定為非零值時,合約將在購買時立即將該數量的代幣轉移給買家。雖然這種機制使攻擊成為可能,但該函式根據現有銷售引數按其邏輯執行。根本原因並不在於buy
函式的程式碼邏輯本身。
調查currentSaleInfo: 我們追蹤了currentSaleInfo變數,特別是immediateReleaseTokens引數的設定方式。修改此資料的主要機制是setSaleInfo函式。
分析setSaleInfo函式: setSaleInfo函式的邏輯直接,幷包含一個重要的訪問控制檢查:只有指定的合約運營商可以呼叫它來更新銷售引數。該函式本身並不存在固有的漏洞。
識別前導交易: 對合約歷史互動的審查揭示了一個關鍵交易,由運營商地址在攻擊前約120天執行:
運營商交易: 0xda64c661c80739865c344d57415476c8a9cac4cee8ec51274dcb173939f976df 此交易呼叫setSaleInfo並配置了currentSaleInfo,使用了攻擊者後來利用的完全相同的引數。此交易的解碼輸入資料(如下所示)清楚地顯示了為_price和_immediateReleaseTokens設定的值,這些值創造了漏洞。
根本原因確定
這次攻擊的根本原因不是智慧合約程式碼邏輯中的缺陷,而是操作問題。指定的運營商在攻擊前很久就透過 setSaleInfo
函式設定了不正確的銷售引數(具體來說,是低價格和立即代幣釋放,如上面的交易資料所示)。這種錯誤配置創造了一個機會視窗,使攻擊者能夠以遠低於市場價值的價格購買代幣。這種錯誤配置的原因可能從設定期間的人為錯誤到運營商私鑰可能被入侵等不同。
經驗教訓
這一事件強調了除程式碼安全外,操作安全的關鍵重要性:
引數驗證: 在設定銷售價格和代幣釋放計劃等關鍵合約引數時,實施嚴格的檢查和多人驗證流程。
安全金鑰管理: 對合約運營商等特權角色採用強大的金鑰管理解決方案。考慮使用多方計算(MPC)錢包或安全儲存的硬體錢包,以防止單點故障和未經授權的訪問。
定期審計和監控: 儘管程式碼本身沒有缺陷,但定期審查合約狀態和引數,並監控運營商的異常行為,可能能夠更早地發現此類錯誤配置。
透過關注安全的操作程式並保護特權賬戶,去中心化金融專案可以顯著降低源於錯誤配置的攻擊風險。
感謝閱讀!免費訂閱以接收新帖子並支援我的工作。