免责声明:金色财经所有资讯仅代表作者个人观点,不构成任何投资理财建议。请确保访问网址为(jinse.com.cn) 举报

    任何人都能授权?MakerDaoBot 因此损失 200 枚 ETH

    核心要点

    本期周报收录 1 起发生在 Ethereum 上的安全事件,估计损失约 $542K。

    MakerDaoBot 有一个函数缺少访问控制,任意调用者都能让外部合约控制该 bot 的内部余额。

    凡是能授予资金控制权的函数,都必须同时验证调用者和接收该权限的合约。

    过去一周(2026/10/05 - 2026/10/11),我们共观测到 1 起安全事件,估计总损失约 $542K。

    图 1:本期安全事件概览

    本周看点:MakerDaoBot

    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。

    任何能够授予资产控制权的函数,都必须同时限制操作发起者和权限接收方。敏感的外部集成路径应采用与其他特权函数相同的授权控制,并且只接受明确批准的合约。

    jinse.com.cn 0
    好文章,需要你的鼓励
    jinse.com.cn 0
    好文章,需要你的鼓励
    参与评论
    0/140
    提交评论
    文章作者: / 责任编辑:

    声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。

    提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

    金色财经 > BlockSec > 任何人都能授权?MakerDaoBot 因此损失 200 枚 ETH
    • 寻求报道
    • 金色财经中国版App下载
      金色财经APP
      iOS & Android
    • 加入社群
      Telegram
    • 意见反馈
    • 返回顶部
    • 返回底部