事件概述
2026 年 8 月 28 日,Cosmos Labs 发布技术复盘报告,公开 GHSA-7g4w-cg88-2cq2 漏洞的完整时间线与影响范围:8 月 20 日至 8 月 25 日之间的五天里,攻击者利用 Cosmos EVM(社区共享的 EVM 执行层)余额校验模块的整数下溢缺陷,从 MANTRA、TAC、KiiChain 等六条 Cosmos 系公链合计盗走约 572 万美元的数字资产(约 287 万经 DEX 售出、约 285 万经 CEX 售出,多个 CEX 账户已被冻结)。事件根因不仅在于技术漏洞,更涉及维护方对漏洞严重性的评估偏差与补丁分发流程失当:4 月 25 日研究人员已通过 Cosmos Labs 漏洞赏金计划提交该缺陷,维护方测试人员当时无法在生产链的 18 位精度配置下复现攻击,将漏洞定性为”不威胁生产链资金”并按其内部的”静默补丁(silent patch)”流程下发修复,而该流程不发布漏洞专属公告、不主动推送紧急通知,直到 8 月 13 日才确认所有 Cosmos EVM 链均受影响,补丁于 8 月 19 日 19:01 ET 才公开。
技术细节
漏洞位于 Cosmos EVM 与 Cosmos SDK x/bank 模块对账时的胶水代码:
- 状态模型差异:EVM StateDB 仅追踪账户的”可支出(spendable)”余额;而 vesting 账户在 SDK 中同时持有 spendable 与 locked 两类余额,locked 部分也允许通过原生 staking 与 staking precompile 委托给验证人;
- 下溢触发:当 vesting 账户委托的金额超过其 spendable 余额,post-delegation 写回阶段将扣减 spanable 余额,且扣减动作完全无符号检查,结果回绕到 2^256-1(约 78 位数字);
- 资产转移:攻击者把回绕账户中的金额转到目标账户时,状态对账会在目标账户上根据差额触发
mint/burn,从而在没有真正创造代币的前提下把 burn 地址、多年未动用的多签钱包等”无人认领”的大额账户余额转移到攻击者控制的钱包; - 运行时分叉:在 0.6.x 上链会因短时间大额 mint 触发供应量溢出直接停链;0.7.x 把余额直接写入 x/bank,uint256/int256 转换后状态被接受,意味着 0.7.x 上不会”自然停摆”,损失更直接。
整个利用需要 (1) 链允许 permissionless 创建 vesting 账户,(2) 攻击者预先通过 CREATE2 把恶意合约部署到预先计算好的地址,(3) 把该合约账户转成 vesting 账户。这样一条交易内即可完成余额回绕 + 资产转移。
影响范围
- 受影响版本:Cosmos EVM 早于 v0.6.2 与 v0.7.2,影响跨越 6 条已确认被攻击的 Cosmos 链及另外 13 条被通知修补/停链/防护的链;
- 暂未登记在 Cosmos Labs 安全通讯录中的部署共 11 个,凸显 Cosmos 115+ 公开链维护方缺乏统一资产清单;
- 损失分布:MANTRA 因 burn 地址与沉寂多签被抽走约 720.9 亿 MANTRA(约 360 万美元);TAC 丢失近 30 亿代币,约 12 亿在 BNB Chain 上兑换为约 95 万美元;KiiChain 损失约 1.48 亿 KII;
- Cosmos Labs 披露其”silent patch”流程在过去 13 个月内已使用 37 次,本次事件是流程漏洞放大技术漏洞的典型例证。
修复建议
- 所有使用 Cosmos EVM 的链维护方立即升级到 v0.6.2 或 v0.7.2 及以上版本,升级是状态破坏型(state-breaking)变更,必须协调全网 38 个以上验证人统一执行;
- 短期内无法升级的链必须立即停块生产,不要尝试“边升级边治理”的折衷方案;
- 在 ante handler 中拒绝
MsgCreateVestingAccount、MsgCreatePermanentLockedAccount、MsgCreatePeriodicVestingAccount三类消息,关闭攻击前置;需要通过治理参数或紧急 patch 实施; - 独立检查锁定余额快照与 module-account guard 的修复是否已经被 cherry-pick,因为漏洞由三次提交(PR #1176、PR #1187、commit 3524ebc)完成,部分维护方可能只同步了第一个;
- 完成升级后立即在浏览器、RPC、签名服务等链下接口加入对 genesis vesting 账户的额外审计,并建立长期的”burn 地址 / 沉睡多签”余额变更告警;
- 在 CEX 端做好事件后的退款与用户沟通,避免在攻击者持有的 CEX 账户资产解冻后出现”黑名单流动性”的二次伤害。