返回博客

损失约54.2万美元:MakerDaoBot 漏洞利用事件|BlockSec 周报

Code Auditing
2026年10月14日
阅读约 6 分钟
核心要点
  • 本报告涵盖以太坊上的 1 起安全事件,估计损失约为 54.2 万美元。

  • MakerDaoBot 的某个函数缺乏访问控制,允许任何调用者将该机器人内部余额的控制权授予外部合约。

  • 授予资金控制权的函数必须验证调用者和获得该控制权的合约的身份。

过去一周(2026/10/05 - 2026/10/11),我们观察到 1 起安全事件,估计损失总额约为 54.2 万美元。

日期 事件 类型 估计损失
2026/10/06 MakerDaoBot 缺乏访问控制 约 54.2 万美元

免费安全扫描

使用我们的内部自动化分析引擎,快速完成安全检查。

免费扫描

本周焦点:MakerDaoBot

2026 年 10 月 6 日,攻击者利用以太坊上 MakerDAO 旧版清算机器人 MakerDaoBot 缺乏访问控制的漏洞,提取了 200 ETH,价值约 54.2 万美元。该漏洞函数允许任何调用者指定一个外部合约、授予其控制机器人余额的权限,并执行其代码。攻击者通过这一路径,在一笔交易中结算了四场旧的抵押品拍卖,并转走了释放的 ETH。

背景

MakerDaoBot 通过 Flipper 参与 MakerDAO 旧版 ETH-A 抵押品拍卖。Flipper 是旧版清算系统使用的抵押品拍卖合约。该机器人管理 Vat 权限、存取 ETH 和 DAI,并处理清算任务。

Vat 是 MakerDAO 的内部账本。它按抵押品类型将每个地址的可用抵押品记录在 gem[ilk][address] 中,并将其内部 DAI 余额记录在 dai[address] 中;不存在单独的钱包或账户合约。因此,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);
}

漏洞分析

根本原因是 MakerDaoBot 合约 0x6839...5546 中的 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:攻击者的 EOA 调用了其部署的攻击合约。该合约部署了一个恶意适配器,然后以适配器地址为参数调用 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 解包,并向攻击者的 EOA 发送了 200 ETH,当时价值约 54.2 万美元。

开始使用 Phalcon Explorer

深入分析交易,明智采取行动

立即免费试用

结论

根本原因是 MakerDaoBot 缺乏访问控制,而不是 MakerDAO 的 Vat 权限系统存在缺陷。一个公开函数允许任何调用者选择外部合约、授予其控制机器人内部余额的权限,并执行其代码。攻击者通过这一路径结算了四场旧版拍卖,并提取了 200 ETH。

任何会授予资产控制权的函数,都必须限制谁可以发起操作,以及哪些外部合约可以获得该权限。敏感的集成路径应采用与其他特权函数相同的授权控制,并且只接受明确获批的合约。

Web3 领域卓越的安全审计机构

在上线前验证设计、代码和业务逻辑

关于 BlockSec

BlockSec 是一家提供全栈区块链安全与加密资产合规服务的机构。我们打造的产品和服务,帮助客户在协议和平台的整个生命周期内完成代码审计(包括智能合约、区块链和钱包)、实时拦截攻击、分析安全事件、追踪非法资金,并履行反洗钱和反恐怖融资(AML/CFT)义务。

BlockSec 已在知名会议上发表多篇区块链安全论文,报告了多起 DeFi 应用的零日攻击,拦截了多起黑客攻击并挽救了超过 2000 万美元的资产,还保护了价值数十亿美元的加密资产。

订阅最新动态
损失约4.18亿美元:Bitget、NEAR Intents遭利用攻击 | BlockSec Weekly
Security Insights

损失约4.18亿美元:Bitget、NEAR Intents遭利用攻击 | BlockSec Weekly

本双周安全报告记录了2026年9月21日至10月4日期间发生的八起事件,涉及以太坊、BNB Chain、Solana、比特币、波场、XRP Ledger、Zcash、Avalanche、NEAR等网络,损失约4.184亿美元。详细分析涵盖Bitget因第三方安全产品漏洞损失3.875亿美元,以及NEAR Intents因退款验证缺陷和状态回滚缺失损失387万美元。

Bitget 3.875亿美元链下漏洞事件:不止于密钥与合约
Security Insights

Bitget 3.875亿美元链下漏洞事件:不止于密钥与合约

2026年9月24日,攻击者利用第三方安全产品漏洞,获取内部凭证并伪造提现指令,导致Bitget部分运营钱包资金转出约3.875亿美元,涉及以太坊、其他EVM网络、XRP Ledger、Zcash和TRON,私钥及冷钱包未受影响。本文梳理事件路径与资金流向,分析资产快速转换及生态恢复应对,提出机构纵深防御体系,并说明授权区块链渗透测试如何验证跨层安全假设。

损失约1130万美元:Multicall Router、Nostra | BlockSec Weekly
Security Insights

损失约1130万美元:Multicall Router、Nostra | BlockSec Weekly

本报告覆盖2026/09/14至09/20,分析以太坊与Starknet上两起共约1130万美元损失的安全事件。较大一起中,多重调用路由器将自身地址当作调度目标,致嵌套调用以路由器已授权身份而非外部调用者身份进入Safe钱包的Gateway模块,约2900个aEthrsETH被转入攻击者创建的Uniswap v4池。Starknet上,Nostra预言机仅需一个聚合来源,三个价格源中仅两个参与聚合时,被操纵的浅池报价与正常报价平均,使NSTR估值约49.52美元,支持约350万美元超额抵押借贷。

Web3 最佳安全审计方

在上线之前验证设计、代码与业务逻辑,对标业内最高安全标准。

BlockSec 审计