四笔零出价拍卖遗留未结算
在MakerDAO“黑色星期四”清算期间,遗留Keeper以零出价赢得拍卖1457至1460,每笔对应50 ETH抵押品,但此后一直未执行结算,形成200 ETH遗留状态。
2026年10月6日,攻击者调用MakerDAO遗留Auction Keeper中缺少访问控制的函数,为恶意模块取得Vat账户完全授权,随后结算四笔2020年黑色星期四期间以零出价赢得但未结算的50 ETH拍卖,并提取共200 ETH,事发时价值约542,982美元。攻击者随后将资金分批存入Tornado Cash。
在MakerDAO“黑色星期四”清算期间,遗留Keeper以零出价赢得拍卖1457至1460,每笔对应50 ETH抵押品,但此后一直未执行结算,形成200 ETH遗留状态。
攻击者EOA从Tornado Cash 0.1 ETH池提取0.1 ETH;这是该账户唯一的启动资金来源。
攻击者部署用于调用遗留Keeper并创建恶意适配器模块的攻击合约。
攻击合约创建恶意适配器并调用Keeper函数0x8804d1de。该函数缺少访问控制,调用Vat.hope授予模块对Keeper Vat账户的完整权限,再调用模块join回调;交易结束后权限也未通过nope撤销。
恶意模块对退役ETH-A Flipper的拍卖1457至1460调用deal,将200 ETH抵押品记入Keeper Vat账户;随后利用授权执行flux,经ETH-A GemJoin退出为200 WETH并转给攻击合约,最终发送至攻击者EOA。当时估值约542,982美元。
利用交易约6分钟后,攻击者通过Tornado Cash路由器发起首批九笔10 ETH存款中的第一笔。
攻击所得最终按每笔10 ETH拆分为20笔存入Tornado Cash,覆盖全部200 ETH;公开分析未逐笔给出后续时刻。
攻击者利用 MakerDAO 遗留 Auction Keeper 合约未受保护的授权路径,在 4 个历史拍卖实例中取得 Vat 权限并转走 200 ETH,随后分 20 笔各 10 ETH 存入 Tornado Cash。影响集中于遗留 Keeper 合约及其仍存续的授权状态,不代表 MakerDAO 核心协议整体失守。
事件初期因 200 ETH 被转走并进入 Tornado Cash 而引发安全担忧;根因明确为遗留 Keeper 的访问控制缺陷后,讨论重点从“核心协议是否失守”转向旧合约下线、残留授权清理与长期治理责任。
2026-10-06 CertiK 安全研究 (安全分析机构):安全分析将根因归纳为遗留 Auction Keeper 合约中未受访问控制保护的授权函数,使攻击者能够取得 Vat 权限。
任何可修改 Vat 或同类核心账本授权的函数都必须限制调用者,并配合不可绕过的权限测试。 重点:无保护的授权函数就是资产出口
拍卖、清算或迁移流程结束后应自动撤销代理权限,避免历史授权长期留存在链上。 重点:权限生命周期必须短于业务生命周期
停止使用不等于风险消失;仍持有资金、授权或治理能力的旧合约必须持续监控、审计并明确负责人。 重点:遗留状态仍是生产风险
退役应包括清空余额、撤销授权、冻结入口、链上公告和复核,不能只停止前端或停止日常调用。 重点:下线必须在链上完成闭环
本节基于已公开的技术根因与处置过程,提炼可验证、可执行的安全改进项。
评论
暂无评论