BlockSec 認為,攻擊事件的起因可能是私鑰洩露或者內部人士所為。
撰文:BlockSec
8 月12 日,根據DAO Maker 電報群用戶反饋,該項目疑似遭到黑客攻擊,價值700 萬美元的USDC 被黑客提取至未知地址。團隊經過分析後,發現該事件的起因是私鑰洩露或者內部人士所為。
攻擊過程
通過我們的交易 分析系統 我們發現,攻擊的過程非常簡單。攻擊交易的hash 是:
0x26aa86261c834e837f6be93b2d589724ed5ae644bc8f4b8af2207e6bd70828f9
涉及到的地址:
- 0x41b856701bb8c24cece2af10651bfafebb57cf49: 受害者錢包
- 0x1c93290202424902a5e708b95f4ba23a3f2f3cee: XXX,攻擊者合約
- 0x0eba461d9829c4e464a68d4857350476cfb6f559:中間人
- 0x054e71d5f096a0761dba7dbe5cec5e2bf898971c:受害合約創建者(也是攻擊者)
攻擊者XXX (0x1c93290202424902a5e708b95f4ba23a3f2f3cee)調用受害者錢包合約(0x41b856701bb8c24cece2af10651bfafebb57cf49) 的函數查詢用戶餘額,然後調用withdrawFromUser 將錢轉到自己的賬戶。攻擊完成。由於轉賬的操作是一個特權操作,因此通常需要對調用者的身份做校驗。我們通過分析發現,攻擊者確實具有相應的權限來將受害者錢包中的餘額轉出。
這裡的問題就變成為什麼攻擊者能具有相應的權限?通過進一步分析我們發現另外一筆交易。這一筆交易將攻擊者賦予具有轉賬的權限。交易trace 如下:
0x2fba930502d27f9c9a2f2b9337a0149534dda7527029645752b2a6507ca6b0d6
0x0eba461d9829c4e464a68d4857350476cfb6f559 調用受害者合約的grantRole 函數將攻擊者0x1c93 賦予具有轉賬的權限。但是能調用grantRole 賦予其他賬戶權限,那麼0x0eba4 必須具有admin 的權限。那麼他的admin 權限是誰授予的呢?
繼續追踪,我們發現它的admin 權限是由另外一筆交易完成的。
0x41b856701bb8c24cece2af10651bfafebb57cf49
0x054e71d5f096a0761dba7dbe5cec5e2bf898971c 賬戶將0x0eba461d9829c4e464a68d4857350476cfb6f559 賬戶設置成受害合約的admin。
然而我們發現,受害合約是由0x054e71d5f096a0761dba7dbe5cec5e2bf898971c 創建的。
總結一下,整個的流程是:
那問題就來了,為什麼部署受害者合約的0x054e 最後間接賦予了攻擊者能轉賬的特殊權限呢?這裡有兩個可能性。第一個0x054e 是內鬼,第二個就是私鑰洩露。
其他
另外一個有趣的點就是攻擊者的合約是開源的,代碼簡單易懂,可以作為學習合約開發的啟蒙教程。
但是受害者的合約代碼是不開源的。這有點匪夷所思。不開源的錢包也有人敢用?
最後
最近區塊鏈安全接連出現大的安全事件,包括 [虚拟印钞机] Popsicle Finance 雙花攻擊分析 和 [阿喀琉斯之踵] Poly Network 攻擊關鍵步驟深度解析,損失都在幾百萬美金到數億美金之間。項目方如何提高安全意識,保護好代碼安全和資產安全,正是blocksec 團隊希望和社區一起能解決的問題。只有把安全做好,DeFi 的生態才能更健康有序發展。
免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews 立場無關。文章內的信息、意見等均僅供參考,並非作為或被視為實際投資建議。