链周志 Vol.11|Electrum 让你替贼签了名,CoinDCX 先说是误报,Yapeswap 用 0.000055% 夺了权
一周三起事故,没有一起是密码学被攻破。Electrum 信了服务器,让你给贼的交易加手续费;CoinDCX 对着链上证据说了三天误报;Yapeswap 的治理法定人数是零,X100 的参议院席位能用闪电贷现买。被拿走的都是同一件东西:验证。
本页目录
这周三个故事,越看越不像黑客片。没有私钥被破解,没有曲线被攻破,没有零日漏洞被卖到黑市。Electrum 的问题写在它自己的文档里,CoinDCX 的问题写在它自己的博客里,Yapeswap 和 X100 的问题写在治理合约的参数里。三件事的共同点只有一个:本该由人做的最后一步验证,被外包给了界面、公关稿和投票规则。
一、Electrum:你加的是手续费,签的是贼的地址
10 月 24 日,Electrum 发布 4.8.3,同时公开安全公告 GHSA-6jp4-8v48-cc5v,评级 High,没有 CVE,受影响版本是 4.8.3 之前的全部。公告里有句话很直接:有服务器正在野利用这个手法,我们已经收到两份用户报告,其中一人丢了钱。
攻击的链条不复杂。Electrum 是轻钱包,余额、历史、手续费、内存池全部问服务器。已确认交易它自己做 SPV 验证,未确认交易只能信服务器,这是轻客户端的设计,文档里写了很多年。恶意服务器于是这样干:吞掉你刚广播的 tx1,不往网络转发;给你的钱包塞一笔 tx2,输出改成攻击者的地址;tx2 的签名是无效的,但旧版 Electrum 不校验未确认交易的签名,照样把它显示成待确认付款;你看到一笔卡住的交易,去点加手续费,钱包签的就是 tx2。
签名是真的,交易也真的上链,只是它不是你打算付的那笔。公告把两起报告的时间线列得很清楚:10 月 11 日,第一位用户发现交易被替换,但没意识到加手续费这条路;10 月 18 日,第二位用户 Raju-K12 在确认加费之后损失了资金;10 月 23 日修复进主干,10 月 24 日发版并公开。被盗金额没有披露。
两个细节让这套手法从理论变成可执行。第一,攻击者的收款地址被专门碰撞过,末四位和真实地址完全一致,付款急的时候人只看首尾,这一眼就废了。第二,第二位受害者看到的假交易手续费是 0,零手续费看起来就是卡住的样子,卡住才会让人去点加费。陷阱是围着你的下一个动作设计的。
修复提交 90fe308 做了一件事:未确认交易进入本地记录之前,先验证花用本钱包币的输入签名。父交易已知,假交易直接以 InvalidTxSignature 被拒;父交易晚到,那笔花钱的交易会被移除。但边界只是往里挪了一格,公告承认客户端仍然只验 is_mine 的输入,别人转进来的交易不验脚本,要覆盖那些输入就得沿着未确认父交易递归验证到已确认交易,那是全节点的活。
实用结论三条。升级到 4.8.3 并从 electrum.org 验证 GPG 签名;把每次加手续费都当成一次新的签名,逐字核对完整地址;金额不小就自建服务器,攻击的前提是服务器能对你说谎。硬件钱包在这里仍然有效,因为地址会显示在设备自己的屏幕上,那个末四位相同的仿冒地址必须过得了这一关。
完整拆解写在 OnchainDiary:Electrum 4.8.3:你加的那点手续费,替贼把名签了。
二、CoinDCX:链上时间线和一份否认声明
第二件事的看点在公关层,不在技术层。
10 月 21 日,CoinDCX 系统里发现异常活动。10 月 22 日,链上出现不寻常的资金移动。10 月 22 日凌晨,FlashRescue 联合创始人 Darcy 在 X 上点名:约 1599 万 USDT 和 5783.81 TRX 从 CoinDCX 热钱包和几个充值地址转出,全部汇到一个波场地址,最大单笔 1581.9 万 USDT,随后被拆分流向 Binance、OKX、Gate 的充值地址。
CoinDCX 的反应很快。CEO Sumit Gupta 三小时内回复:地址在 2025 年 7 月就被黑过,黑客似乎在重复使用旧地址,这听起来像一场误报。官方账号四分钟后跟进,说这些说法有误导性,那些地址自 2025 年 7 月后就没再用过。
然后 ZachXBT 把时间线摆了出来。其中一个被标为 TQKJQ 的地址,在 2025 年 7 月事故之后还被某家流动性提供商使用了 10 个月,直到 2026 年 4 月和 5 月仍在把用户充值扫进 CoinDCX 当前的热钱包。换句话说,这不是黑客在翻旧垃圾,这是一个仍在收用户存款的地址。
周日,CoinDCX 发博客改口。旧钱包属于 2025 年 7 月被攻破后废弃的基础设施,有未知漏洞;自动归集服务在一段时间内失效,充值因此堆在废弃地址上;损失 1599 万 USDT,由公司吸收;用户资金在隔离冷钱包里,交易提现没受影响。博客没有说是谁干的,也没解释资金具体怎么被拿走。
这里有两件事值得分开看。技术侧,问题不是「被黑」,是废弃地址还在收钱、归集服务停了没人发现、旧基础设施带着未知漏洞继续在线,三个运维失误叠在一起。公关侧,交易所在有链上证据的情况下先否认,等分析师拿出地址使用记录才改口。对用户来说,交易所的否认声明不是证据,链上时间线才是。CoinDesk 的报道里有一句 CoinDCX 自己的话:我们本可以更主动一些,但在掌握完整情况后第一时间分享了更新。翻译过来就是,我们先说了不知道,再说知道了。
背景补一笔。2025 年 7 月那次服务器入侵,CoinDCX 损失约 4400 万美元,这次是同一批地址的余波。一家交易所在 15 个月里被同一套废弃基础设施绊倒两次,第二次的损失由公司账面吸收,但信任不是账面能吸收的。
三、治理的两个零:零法定人数,零时间锁
第三件事分两半,一半是笑话,一半是教科书。
先说 Yapeswap。10 月 25 日,慢雾监测到它被攻击,损失约 2.19 万美元。金额很小,手法很干净:WorkersUnion 治理机制的法定人数要求是零,于是一项只拿到约 0.000055% 投票权支持的提案,就把 YapeFactory 的 feeToSetter 权限转给了攻击者。攻击者随后部署了一个恶意 Registry 合约,让 latestVault() 返回伪造的金库地址,而 vaults() 仍然列出真实金库。YapePair 把被转移的存款记成农场资产,却没收到可赎回的份额,钱就这样没了。
零法定人数的意思是,不需要任何人反对,也不需要任何人同意,只要有一个人投票,提案就成立。0.000055% 的投票权,在任何一个正常治理系统里连提案门槛都过不了,在这里足够接管一个关键权限。
再说 X100,金额大得多。10 月 24 日 14:11:47 UTC,一笔交易借出 1,942,457.64 USDT 的闪电贷,买入约 38,200 枚 X,拆成两份各约 19,100 枚,分别放进两个新部署的助手合约。每个助手把 19,000 枚 X 锁进 Freezer,再交 100 枚 X 的注册费,凭这点质押挤进 Senate。X100 的 Senate 只有三个席位,按冻结量排名,两个席位就是多数。
关键在于那 0.000001 枚 X。每个助手只比原席位多锁了百万分之一枚,刚好在排名上压过去。决定胜负的不是资金规模,是规则在「此刻」读余额。借钱、买币、锁仓、提案、投票、执行,全部在同一笔交易里完成,链上留不下任何反应时间。提案的链上描述写着 testnet flash governance proof,像一句嘲讽。
执行结果:Freezer 把 400,000 枚 X 卖进攻击者几分钟前刚建、流动性极薄的 PancakeSwap 池,换回 35.68 USDT。市价上这批币名义价值约 2000 万美元,但薄池子本来就卖不出那个价,攻击者也不需要卖出那个价。它从自己控制的池子把币拿回去,再到真实的 Uniswap X/USDT 池卖出,套走约 475 万 USDT。还掉闪电贷,约 474.97 万 USDT 转进攻击者地址。
Bitquery 的取证报告把两个缺失的控制点说得很清楚:投票权快照和时间锁。如果投票权按提案创建前的某个区块计算,闪电贷买来的币不算数;如果投票通过到执行之间有小时级延迟,社区至少有时间看见和反应。X100 两个都没有,所以买席位、投票、掏国库可以原子化成一笔交易。10 月 25 日 04:19 UTC 的检查点显示,三个席位里仍有两个握在攻击者的助手合约里,而且这些合约不限制调用者。好在 Freezer 给做市池的额度快用完了,用户被冻结的质押也在可动用资产之外,能再掏的空间有限。
把 Yapeswap 和 X100 放在一起看,结论是一样的:治理攻击不需要夺取多数,只需要找到规则里那个没人填的空格。一个是法定人数没设下限,一个是投票权没有快照,都是配置问题,不是代码漏洞。参数错误的杀伤力和漏洞同级,修复成本却常常更低,只是没人愿意在出事前审一遍。
尾声
这周还有几条值得记账的线索:
- Electrum 公告承认修复只覆盖钱包自己的输入,别人转进来的未确认交易仍不验脚本。轻钱包的信任边界不会消失,只会移动
- CoinDCX 说「用户资金安全」,技术上成立,因为损失由公司吸收。但用户充值到废弃地址这件事本身说明,地址轮换和归集监控没有形成闭环
- Yapeswap 截至发文没有公布修复方案。0.000055% 的投票权能改关键权限,这种治理合约不该继续持有任何有价值的东西
- X100 的攻击者在检查点仍占两席。治理被接管和资金被掏空是两件事,前者往往没人管
- 三起事件里,唯一需要用户主动做的动作是升级 Electrum 和核对地址。其余两件,用户什么都做不了,只能等运营方把话说清楚
三个故事,三种被外包的验证。Electrum 把验证外包给服务器,CoinDCX 把披露外包给公关节奏,Yapeswap 和 X100 把安全外包给治理参数。技术越轻,信任越重,而信任这东西,只有在被拿走的那天才会有人清点。
本文事实据 Electrum 安全公告 GHSA-6jp4-8v48-cc5v 与修复提交、CoinDCX 官方博客、CoinDesk、The Block、ZachXBT 与 Darcy 的链上记录、慢雾与 Bitquery 的取证报告,观点为作者个人判断,不构成投资建议。