原创 | Odaily 星球日报(@OdailyChina)
作者 | Asher(@Asher_0210)
10 月 24 日,以太坊 DeFi 项目 X100 遭遇治理攻击,约 485 万枚 USDT 被盗。据 GMGN 数据,X 代币市值从攻击前约 7.6 亿美元跌至约 2400 万美元, 单日跌幅超过 96% 。
原本由三个“参议院”席位共同管理的金库,被黑客用闪电贷借来的资金拿下了其中两席。 手握多数票后,黑客提交恶意提案,再用自己控制的席位投票通过,让金库批准了向自己输送资产的交易。 首轮攻击得手后,其他攻击者接连利用同一治理机制,继续转走项目资产。
下面,Odaily星球日报将梳理这场治理攻击的全过程,以及 X100 事件背后暴露出的 DAO 治理安全隐患。
借来 194 万美元,黑客如何拿下两席“参议院”?
X100 的金库由名为 Senate 的三席“参议院”管理,成员通过投票决定金库代币的出售、流动性投放等操作。 只要控制其中两席,就能通过提案,调动金库资产。 持有人将项目代币 X 存入 Freezer 合约,选择冻结一年、三年或五年,再支付 100 枚 X 报名费,即可参与竞选。三个席位按照参选地址的当前冻结余额实时排序,前三名获得治理权。
这套机制没有限制同一控制者通过多个地址取得席位,也没有设置治理权生效等待期。攻击者只需让两个受控地址的冻结余额同时进入前三,就能立即掌握多数票;通过的提案又可以立即执行,使夺取席位与转移资产能够在同一笔交易中完成。
攻击发生前,第二席地址冻结了约 19,000 枚 X。10 月 24 日 22 时 11 分,黑客通过 Aave 闪电贷借入约 194 万枚 USDT,购入 X 并分配给两个辅助合约,分别完成冻结与竞选。 每个合约冻结 19,000.000001 枚 X,仅比原第二席多出百万分之一枚代币,便同时占据第二、第三席,将原第二席挤出治理名单。
拿到多数票后,黑客如何让金库资产流入自己手中?
两张赞成票,让金库以 35.68 美元卖出 40 万枚 X
取得两席后,黑客随即提交恶意提案,要求金库将 40 万枚 X 卖入其自行创建的 PancakeSwap V3 X/USDT 池子,并将最低接收金额设为零,再通过另一个受控合约投票支持,使提案获得两票通过并立即执行。据 GoPlus 分析,X100 允许治理提案指定交易池,却缺乏有效的最低成交额保护。 黑客既能决定金库向哪里卖币,也能自行设定成交条件,再用自己控制的多数票批准交易。
上述池子由黑客在同一笔交易中创建,仅注入约 100 美元的流动性。当金库将 40 万枚 X 卖入其中时,池子只能支付少量 USDT,而最低接收金额为零,使交易没有因回报过低而失败。最终, 金库交出了 40 万枚 X,只换回约 35.68 美元。 黑客随后撤出自建池子的流动性,取回其中的 X,再将部分代币卖入已有的 Uniswap V3 X/USDT 交易池,换取 USDT。偿还闪电贷等支出后,首名黑客获利约 475 万枚 USDT。
从借款购币、夺取席位,到批准金库低价卖币、套现还款,全部在同一笔交易中完成。 金库交出的代币成为黑客套现的筹码,真实交易池中的 USDT 则被用于偿还借款,并转化为攻击收益。
后续攻击接连发生,被盗资金流向哪里?
首轮攻击发生约 24 分钟后,第二名黑客通过闪电贷再次夺取两个治理席位,移除 Freezer 持有的部分 Uniswap V3 流动性头寸,并利用自建交易池继续转走资产,取得约 9.64 万枚 USDT。约五分钟后,第三个钱包利用第二名黑客留下、未限制调用者的辅助合约,直接借用其治理席位通过提案,转走约 55 万枚 X。 前两轮攻击共造成约 485 万枚 USDT 损失,第三轮攻击另有约 55 万枚 X 被转走,三轮攻击发生在不到半小时内。
据 Bitquery 追踪,首名黑客在攻击后数分钟内将主要 USDT 收益兑换为 ETH,随后分散至五个钱包,合计约 2,022.86 ETH。第二名黑客则将 USDT 兑换为 ETH,经中转地址转向 ChangeNOW,整个转移过程约耗时 21 分钟。
治理权限一旦失守,资产转移便迅速从首名黑客的单笔攻击,演变为多个钱包接连参与的套取。后来的参与者甚至无须重新买币竞选,就能利用已有权限继续转走资产。
治理攻击成本越来越低的链上世界
X100 并非孤例,治理攻击也不一定需要黑客事先投入巨额资金。 攻击者既可以购买代币取得投票权,也可以利用较低的提案门槛寻找机会,而闪电贷更让借来的资金能够参与治理夺权。
今年以来,类似的治理攻击已多次造成大额损失。7 月,Bonk DAO 攻击者花费约 409 万美元购入占供应量 1.003% 的代币,刚刚超过治理批准门槛,随后通过恶意提案转走约 2,050 万美元资产,投票结束后还取回了质押代币。8 月,Term Finance 因治理攻击损失约 850 万美元。 即使需要投入数百万美元购买投票权,这笔资金也未必是攻击者最终承担的成本。
部分未遂攻击的门槛甚至只有几百美元。今年 3 月,Moonwell 攻击者仅花费约 1,808 美元购入 MFAM 并自我委托,便提交恶意提案,试图取得涉及约 108 万美元用户资金的七个借贷市场及核心合约管理权。9 月,Olas 攻击者仅花费约 135 美元锁定 5,100 枚 OLAS,便超过提案门槛。两次攻击虽然均被拦截,却说明 攻击者不一定需要掌握多数票,仅取得提案资格就可能创造攻击机会。
10 月 22 日,Arkadiko 也遭遇治理攻击。攻击者购入足够数量的 DIKO,独自投票通过引入恶意合约的提案,期间没有反对票,据估算损失约 109 万美元。
治理权可以借来,投票通过就能转走资产。当金库的控制权如此容易易手,所谓的去中心化治理,又能保护谁?

.jpg)