金色財經
本期周報收錄 1 起發生在 Ethereum 上的安全事件,估計損失約 $542K。
MakerDaoBot 有一個函數缺少訪問控制,任意調用者都能讓外部合約控制該 bot 的內部餘額。
凡是能授予資金控制權的函數,都必須同時驗證調用者和接收該權限的合約。
過去一周(2026/10/05 - 2026/10/11),我們共觀測到 1 起安全事件,估計總損失約 $542K。
圖 1:本期安全事件概覽
2026 年 10 月 6 日,攻擊者利用 Ethereum 上 MakerDAO 舊版清算 bot MakerDaoBot缺少訪問控制的問題,提走200 枚 ETH,價值約 $542K。
漏洞函數允許任意調用者傳入外部合約,授權其控制 bot 的餘額,並執行其中的代碼。攻擊者藉此結算了 4 場舊抵押品拍賣,並在一筆交易中轉走釋放的 ETH。
MakerDaoBot 通過 Flipper 參與 MakerDAO 舊版 ETH-A 抵押品拍賣;Flipper 是舊清算系統使用的抵押品拍賣合約。該 bot 負責管理 Vat 權限、存取 ETH 和 DAI,並處理清算任務。
Vat 是 MakerDAO 的內部賬本。它按抵押品類型把每個地址的可用抵押品記在 gem[ilk][address]中,並把內部 DAI 額度記在 dai[address]中;這裡不存在另一個錢包或帳戶合約。
因此,MakerDaoBot 的 Vat 餘額指的是記在 bot 合約自身地址名下的賬本條目。
調用 hope(usr)不會轉移這些餘額。該函數會把 can[msg.sender][usr]設為 1,讓 usr 通過 Vat 的 wish()權限校驗,從而操作記在 msg.sender 名下的餘額。
flux()和 move()等函數在轉移內部抵押品或 DAI 時都會執行這項校驗。
圖 2:Vat 的餘額記錄與轉移權限校驗
根因是 MakerDaoBot 合約0x6839...5546的 0x8804d1de()函數缺少訪問控制。
該函數把 varg0 當作外部合約地址(下文稱 adapter),依次對該地址調用 drip()、vat(),之後還會調用 join()。bot 通過 vat()取得 Vat 地址後,會檢查 adapter 能否操作自己的 Vat 餘額;
如果尚未授權,bot 便調用 hope(varg0)授予權限,隨後調用同一個 adapter 的 join()函數。
圖 3:漏洞函數向外部傳入的 adapter 授予 Vat 權限
同一合約中的其他特權入口會先執行 ds-auth 校驗,再繼續操作。下方對照圖展示了兩個受保護的入口:它們把一個 bytes4 selector 和 msg.sender 傳入鑒權邏輯;
校驗失敗時,函數會以 ds-auth-unauthorized 回退。0x8804d1de()沒有對應的調用者校驗。
圖 4:同一合約中其他特權入口的 ds-auth 校驗
因此,任意調用者都能通過 0x8804d1de()指定獲得 Vat 權限的地址。bot 會先通過 hope()授權該地址,隨後立即調用其 join()函數。
在這次外部調用期間,授權仍然有效,因此該地址中的代碼可以操作 bot 的內部抵押品和 DAI 餘額。
以下分析基於交易0xbb6940...f3a88c:
Step 1:攻擊者 EOA 調用其部署的攻擊合約。該攻擊合約部署惡意 adapter,隨後調用 MakerDaoBot 的 0x8804d1de()函數並傳入 adapter 地址。
bot 在 Vat 的 can 映射中沒有查到現有授權,於是調用 hope(),允許 adapter 操作記在 bot 地址名下的餘額。
圖 5:攻擊合約部署惡意 adapter 並取得 Vat 權限
Step 2:MakerDaoBot 調用 adapter 的 join()函數。
授權生效期間,惡意代碼對已停用的 ETH-A Flipper 調用 deal(uint256 id),結算編號 1457、1458、1459 和 1460 的 4 場拍賣。
隨後,adapter 利用 Vat 權限把 200 單位 ETH-A 抵押品從 MakerDaoBot 轉給自己,通過 ETH Join 的 exit()取得 200 枚 WETH,並把這些代幣轉入攻擊者創建的攻擊合約。
圖 6:結算四場舊拍賣並轉出 200 枚 WETH
Step 3:攻擊合約解包 200 枚 WETH,並向攻擊者 EOA 發送 200 枚 ETH,當時價值約 $542K。
圖 7:攻擊合約解包 WETH 並向攻擊者轉出 200 枚 ETH
根因是 MakerDaoBot 缺少訪問控制,而非 MakerDAO Vat 權限系統本身存在缺陷。一個公開函數允許任意調用者指定外部合約,把 bot 內部餘額的控制權交給該合約,並執行其中的代碼。
攻擊者藉此結算 4 場舊版拍賣,隨後提走 200 枚 ETH。
任何能夠授予資產控制權的函數,都必須同時限制操作發起者和權限接收方。敏感的外部集成路徑應採用與其他特權函數相同的授權控制,並且只接受明確批準的合約。
來源:金色財經
發佈者對本文章的內容承擔全部責任
在投資加密貨幣前,請務必深入研究,理解相關風險,並謹慎評估自己的風險承受能力。不要因為短期高回報的誘惑而忽視潛在的重大損失。
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與加密貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
上一篇
下一篇