返回部落格

損失約 54.2 萬美元:MakerDaoBot 遭駭事件|BlockSec 週報

Code Auditing
2026年10月14日
閱讀約 6 分鐘
核心要點
  • 本報告涵蓋 Ethereum 上的 1 起安全事件,估計損失約為 54.2 萬美元。

  • MakerDaoBot 的某個函式缺乏存取控制,讓任何呼叫者都能將機器人內部餘額的控制權交給外部合約。

  • 授予資金控制權的函式必須驗證呼叫者及取得該控制權的合約。

過去一週(2026/10/05 - 2026/10/11),我們觀察到 1 起安全事件,估計總損失約為 $542K。

日期 事件 類型 估計損失
2026/10/06 MakerDaoBot 缺乏存取控制 ~$542K

免費安全掃描

使用我們內部的自動化分析引擎,快速進行安全檢查。

免費掃描

本週焦點:MakerDaoBot

2026 年 10 月 6 日,攻擊者利用以太坊上舊版 MakerDAO 清算機器人 MakerDaoBot 缺乏存取控制的漏洞,提取了 200 ETH,價值約 $542K。存在漏洞的函式允許任何呼叫者指定外部合約,授予該合約控制機器人餘額的權限,並執行其程式碼。攻擊者利用這個途徑,在單筆交易中結算了四場舊版抵押品拍賣,並轉走釋出的 ETH。

背景

MakerDaoBot 透過舊版清算系統使用的抵押品拍賣合約 Flipper,參與 MakerDAO 舊版 ETH-A 抵押品拍賣。該機器人管理 Vat 權限、存入及提取 ETH 和 DAI,並處理清算任務。

Vat 是 MakerDAO 的內部帳本。它在 gem[ilk][address] 中記錄各地址按抵押品類型劃分的可用抵押品,並在 dai[address] 中記錄其內部 DAI 餘額;不存在獨立的錢包或帳戶合約。因此,MakerDaoBot 的 Vat 餘額是記錄在機器人合約自身地址名下的帳本項目。

呼叫 hope(usr) 不會轉移這些餘額。它會將 can[msg.sender][usr] 設為 1,使 usr 能通過 Vat 的 wish() 權限檢查,並操作記錄在 msg.sender 名下的餘額。flux() 和 move() 等函式在轉移內部抵押品或 DAI 時會使用這項檢查。

mapping(address => mapping (address => uint)) public can;
function hope(address usr) external note { can[msg.sender][usr] = 1; }
function nope(address usr) external note { can[msg.sender][usr] = 0; }
function wish(address bit, address usr) internal view returns (bool) {
    return either(bit == usr, can[bit][usr] == 1);
}

mapping (bytes32 => mapping (address => uint)) public gem;  // [wad]
mapping (address => uint256)                   public dai;  // [rad]

function flux(bytes32 ilk, address src, address dst, uint256 wad) external note {
    require(wish(src, msg.sender), "Vat/not-allowed");
    gem[ilk][src] = sub(gem[ilk][src], wad);
    gem[ilk][dst] = add(gem[ilk][dst], wad);
}
function move(address src, address dst, uint256 rad) external note {
    require(wish(src, msg.sender), "Vat/not-allowed");
    dai[src] = sub(dai[src], rad);
    dai[dst] = add(dai[dst], rad);
}

漏洞分析

根本原因是位於 0x6839...5546 的 MakerDaoBot 合約中,函式 0x8804d1de() 缺乏存取控制。該函式將 varg0 視為外部合約地址(下文稱為適配器),並呼叫該地址上的 drip()、vat(),以及後續的 join()。透過 vat() 取得 Vat 地址後,機器人會檢查適配器是否有權操作其 Vat 餘額。如果沒有,機器人就會呼叫 hope(varg0) 授予權限,然後呼叫同一適配器的 join()。

同一合約中的其他特權入口點在執行操作前都會進行 ds-auth 檢查。下方對比顯示,兩個受到保護的入口點會將 bytes4 選擇器和 msg.sender 傳入授權輔助函式,並在檢查失敗時以 ds-auth-unauthorized 撤銷交易。函式 0x8804d1de() 則沒有同等的呼叫者檢查。

因此,函式 0x8804d1de() 允許任何呼叫者選擇接收 Vat 權限的地址。機器人透過 hope() 授予該地址權限,並立即呼叫其 join() 函式。在這次外部呼叫期間,授權仍然有效,因此所選地址上的程式碼可以操作機器人的內部抵押品和 DAI 餘額。

攻擊分析

以下分析以交易 0xbb6940...f3a88c 為依據。

  • 步驟 1:攻擊者的外部帳戶呼叫了其部署的攻擊合約。該合約部署一個惡意適配器,隨後以適配器地址呼叫 MakerDaoBot 的 0x8804d1de() 函式。機器人在 Vat 的 can 映射中未發現既有授權,於是呼叫 hope(),允許適配器操作記錄在機器人地址名下的餘額。
  • 步驟 2:MakerDaoBot 呼叫適配器的 join() 函式。在授權有效期間,惡意程式碼對已停用的 ETH-A Flipper 呼叫 deal(uint256 id),結算了編號 1457、1458、1459 和 1460 的拍賣。隨後,適配器利用其 Vat 權限,將 200 單位的 ETH-A 抵押品從 MakerDaoBot 轉移至自身,再透過 ETH Join 退出並取得 200 WETH,最後將代幣轉給攻擊合約。
  • 步驟 3:攻擊合約將 200 WETH 解除封裝,並向攻擊者的外部帳戶發送 200 ETH,當時價值約 $542K。

開始使用 Phalcon Explorer

深入分析交易,明智採取行動

立即免費試用

結論

根本原因是 MakerDaoBot 缺乏存取控制,而非 MakerDAO 的 Vat 權限系統存在缺陷。一個公開函式允許任何呼叫者選擇外部合約,授予其控制機器人內部餘額的權限,並執行其程式碼。攻擊者利用這個途徑結算了四場舊版拍賣,並提取 200 ETH。

任何授予資產控制權的函式,都必須限制誰能發起操作,以及哪些外部合約可以取得該權限。敏感的整合流程應採用與其他特權函式相同的授權控制,並且只接受明確核准的合約。

頂尖 Web3 安全審計團隊

上線前驗證設計、程式碼和業務邏輯

關於 BlockSec

BlockSec 是提供全方位服務的區塊鏈安全與加密資產合規服務商。我們打造的產品與服務,協助客戶在協議與平台的完整生命週期中,進行程式碼審計(包括智慧合約、區塊鏈和錢包)、即時攔截攻擊、分析事件、追蹤非法資金,以及履行反洗錢與打擊資恐(AML/CFT)義務。

BlockSec 已在頂尖會議發表多篇區塊鏈安全論文、通報多起 DeFi 應用程式的零日攻擊、阻止多起駭客攻擊並挽救超過 2,000 萬美元資產,也保障了價值數十億美元的加密資產安全。

訂閱最新動態
損失約4.18億美元:Bitget、NEAR Intents遭利用 | BlockSec Weekly
Security Insights

損失約4.18億美元:Bitget、NEAR Intents遭利用 | BlockSec Weekly

本雙週安全報告記錄2026年9月21日至10月4日的八起事件,涉及以太坊、BNB Chain、Solana、比特幣、TRON、XRP Ledger、Zcash、Avalanche、NEAR等網絡,損失約4.184億美元。詳細分析涵蓋Bitget因第三方安全產品漏洞損失3.875億美元,及NEAR Intents因退款驗證缺陷與狀態回滾缺失損失387萬美元。

Bitget 3.875億美元鏈下違規事件:超越金鑰與合約的範疇
Security Insights

Bitget 3.875億美元鏈下違規事件:超越金鑰與合約的範疇

2026年9月24日,攻擊者利用第三方安全產品漏洞,獲取內部憑證並偽造提款指令,導致約3.875億美元從Bitget部分營運錢包(涵蓋Ethereum、其他EVM網絡、XRP Ledger、Zcash及TRON)轉出;私鑰及冷錢包未受影響。本文深入梳理事件路徑與資金流向,分析快速轉換為原生資產及生態恢復應對,提出機構縱深防禦框架,並說明授權區塊鏈滲透測試如何驗證跨層假設。

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly
Security Insights

約1130萬美元損失:Multicall Router、Nostra|BlockSec Weekly

本報告涵蓋2026/09/14至2026/09/20期間,探討以太坊與Starknet上兩起合計損失約1130萬美元的安全事件。較大一起中,多重呼叫路由器將自身位址接受為分派目標,導致巢狀呼叫以路由器自身已授權身分而非外部呼叫者身分進入Safe錢包的Gateway模組,約2900枚`aEthrsETH`被轉出至攻擊者建立的Uniswap v4池。在Starknet上,Nostra預言機整合僅要求最少一個聚合來源,當三個設定價格來源中僅兩個達成聚合時,操縱的薄池報價與正常報價平均後將`NSTR`估值約49.52美元,支撐約350萬美元以高估抵押品借貸。

Web3 最佳安全審計方

在上線之前驗證設計、程式碼與業務邏輯,對標業內最高安全標準。

BlockSec 審計
損失約 54.2 萬美元:MakerDaoBot 遭駭事件|BlockSec 週報