事件背景
零時科技區塊鏈安全情報平台監控到消息,北京時間2022年10月12日,TempleDAO 項目遭受黑客攻擊。損失超237萬美元,零時科技安全團隊及時對此安全事件進行分析。
攻擊信息
攻擊者地址:
0x9c9Fb3100A2a521985F0c47DE3B4598dafD25B01
0xd3127a793dAF3AA9424525E893B494D17e798d39
攻擊者合約地址:
0x2Df9c154fe24D081cfE568645Fb4075d725431e0
被攻擊地址:
0xd2869042e12a3506100af1d192b5b04d65137941
攻擊交易:
0x8c3f442fc6d640a6ff3ea0b12be64f1d4609ea94edd2966f42c01cd9bdcf04b5
攻擊步驟
1. 攻擊者創建攻擊合約和oldStaking合約
2. 調用migrateStake()函數,將傳入參數設置為攻擊者控制的合約地址,將質押金額同步至新合約
3. 調用withdrawAll函數將資金全部取出
4. 將獲得的321,154 StaxLP 代幣兌換為1,830 ETH
漏洞核心
在migrateStake()函數中傳遞的舊的質押地址是由用戶自己傳入的,在函數中沒有對於傳入地址的判斷,因此攻擊者將oldStaking的地址設置為自己控制的合約地址,調用自己合約中的migrateWithdraw()函數,繞過對於質押資金判斷,之後執行withdrawall操作成功取出所有資金。
由傳入參數可知地址oldStaking確實是由攻擊者創建的
資金來源及流向
初始資金由Binance交易所轉入用作手續費
攻擊者將獲利資金轉移至地址0x2B63d4A3b2DB8AcBb2671ea7B16993077F1DB5A0 後目前資金未移動
總結及建議
此次攻擊核心主要是新合約在與舊合約同步時沒有對於傳入的合約地址進行判斷。使得攻擊者能夠傳入自己控制的地址進而繞過舊合約中對於質押的判斷,直接在新的合約中獲得想要的質押數量,之後將質押取出獲利。
安全建議
- 建議對方法傳參地址進行嚴格判斷
- 建議項目方上線前進行多次審計,避免出現審計步驟缺失