一文詳解DAO Maker 700萬美元被盜事件

8 月 12 日,根據 DAO Maker 電報群用戶反饋,該項目疑似遭到黑客攻擊,價值 700 萬美元的 USDC 被黑客提取至未知地址。 BlockSec 團隊經過分析後發現,該事件的起因是私鑰洩露或者內部人士所為。

攻擊過程

根據我們的交易分析系統(https://tx.blocksecteam.com)我們發現,攻擊的過程非常簡單。

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的生態才能更健康有序發展。

Total
0
Shares
Related Posts