台灣時間昨晚約 10 點鐘,加密孵化機構 DAO Maker 發布公告宣布遭受駭客攻擊,總計被盜走 700 萬美元,有 5,521 名用戶受影響。本次攻擊可能源於洩漏 DAO Maker 受害合約的管理員私鑰。轉換為攻擊合約,轉走了合約中的用戶資金。而由於合約部署者在設置完合約管理員後就放棄合約管理權限,因此目前項目方可能還無法有效的取回合約控制權。
(前情提要: 整理|Poly Network駭客12條問答:為了好玩、跨鏈攻擊很火、有責任揭露項目漏洞!)
2021 年 8 月 12 日,據慢霧消息,加密孵化機構 DAO Maker 疑似遭受駭客攻擊,導致大量 USDC 合約被轉出。慢霧安全團隊第一時間介入分析,並將經過流程與結果分析分享如下。
攻擊對象:
在本次攻擊中,攻擊者部署了一個攻擊合約(0x1c) 用於快速從 DAO Maker 批量受害合約(0x41) 中竊取資金。
- 攻擊者地址 1:0xd8428836ed2a36bd67cd5b157b50813b30208f50
- 攻擊者地址 2:0xef9427bf15783fb8e6885f9b5f5da1fba66ef931
- 攻擊合約:0x1c93290202424902a5e708b95f4ba23a3f2f3cee
- DAO Maker 受害合約:0x41B856701BB8c24CEcE2Af10651BfAfEbb57cf49
- DAO Maker 受害合約 deployer :0x054e71D5f096a0761dba7dBe5cEC5E2Bf898971c
- DAO Maker 受害合約 admin :0x0eba461d9829c4e464a68d4857350476cfb6f559
攻擊細節
本次攻擊有別於往常攻擊的是:DAO Maker 受害合約 (0x41) 未開源,而攻擊合約 (0x1c) 卻開源了。
從上圖開源的攻擊合約以及鏈上記錄我們可以看出:
1. 駭客調用攻擊合約 (0x1c) 中的 h 函數,h 函數會循環調用 f 函數,f 函數則透過 DAO Maker 受害合約的 0x4b4f892a 函數獲取受害用戶在合約 (0x41) 中的 USDC 存款數量。
2. 函數 h 接着調用 DAO Maker 受害合約 (0x41) 中的 withdrawFromUser(0x50b158e4) 函數,傳入用戶存款的用戶地址、USDC 地址與需要提款的數量。
延伸閱讀:Polygon DeFi|收益聚合器 PolyYeld 遭到攻擊,代幣 YELD「閃崩歸零」
3. 隨後 DAO Maker 受害合約 (0x41) 將合約中的 USDC 轉移至攻擊合約中 (0x1c)。
透過以上行爲分析我們可以發現:攻擊合約 (0x1c) 調用了受害合約 (0x41) 中的 withdrawFromUser 函數,受害合約 (0x41) 就將合約管理的資金直接轉給攻擊合約 (0x1c) 。我們直接反編譯受害合約 (0x41) 查看 withdrawFromUser 函數進行簡單分析:
透過反編譯的程式碼我們可以發現,此函數是有進行權限檢查的,只有 DAO contracts 才能調用此函數轉移用戶的資金。但攻擊合約 (0x1c) 明顯不是 DAO 合約,因此其 DAO 合約必然是被攻擊者替換過的。
通過鏈上分析我們可以清楚的看到:
1. 受害合約部署者 (0x05) 在部署受害合約 (0x41) 後於 UTC 4 月 12 日 08:33:45 將 0x0eba461d9829c4e464a68d4857350476cfb6f559 地址設置爲管理員:
Tx Hash : 0xa1b4fceb671bb70ce154a69c2f4bd6928c11d98cbcfbbff6e5cdab9961bf0e6d
2. 隨後受害合約部署者(0x05) 透過調用 revokeRole 函數放棄了受害合約(0x41) 管理權限:
Tx Hash:0x773613398f08ddce2cc9dcb6501adf4f5f159b4de4e9e2774a559bb1c588c1b8
3. 而管理員則在 UTC 8 月 12 日 01:27:39 將 DAO 合約設置為了攻擊合約(0x1c) :
Tx Hash:0x2fba930502d27f9c9a2f2b9337a0149534dda7527029645752b2a6507ca6b0d6
因此攻擊者才得以藉助此攻擊合約(0x1c) 將受害合約(0x41) 中用戶的資金盜走。目前被盜資金被兌換成 ETH 轉移至攻擊者地址 2 (0xef)。
總結
本次攻擊可能源於 DAO Maker 受害合約的管理員私鑰洩漏。攻擊者竊取私鑰後將受害合約的 DAO 合約替換為攻擊合約,攻擊者透過替換後的合約轉走了合約中的用戶資金。而由於合約部署者在設置完合約管理員後就放棄合約管理權限,因此目前項目方可能還無法有效的取回合約控制權。
📍相關報導📍
財富500強|埃森哲遭勒索攻擊!官方稱及時封鎖,但暗網洩2千份文件還下載大塞車
史上最大!Poly Network「遭駭6億美元」波及以太 幣安…群眾卻教駭客洗錢換打賞?
DeFi 安全|THORChain第二起駭客攻擊!4,000 ETH 損失官方承諾全額返還
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務