加密安全公司 Blockaid 昨天披露,UNCX 的以太坊共享锁仓池被攻击,约 8.6 万美元代币被一笔交易抽走。数字不大,但攻击手法值得每一个使用锁仓服务的人看懂。
先说 UNCX 是做什么的。它前身叫 UniCrypt,提供代币锁仓和流动性锁定服务——项目方把新发行的代币锁进合约,分期释放给团队和投资人,避免一上交易所就被砸盘。听起来是个纯服务型工具,实际上它替很多人管着钱。
这次出问题的是它的 VestingManager 合约。按安全公司 ExVul 的分析,漏洞出在一个会计逻辑上:合约在释放(release)某个仓位的代币时,会把全局的份额总数减掉,但那些已经释放掉的份额,仍然记在这个仓位的“已存入份额”里。攻击者利用这个不一致,做了四步:创建一个锁仓仓位、大额释放、把代币捐回池子里、然后取消一个被“加过款”的仓位。取消时合约按原始记录扣减份额,已经释放过的部分被扣了第二次。
结果就是:全局份额总数被压低,池子里的账实不符,攻击者手里那个只剩一点残余的仓位,就能提取原本属于其他用户锁定的代币。
这次被涉及的代币包括 EDGEN、ZC、pepeCoin、LO0P、PAAL,ExVul 估算总额约 8.77 万美元,扣掉 0.5624 ETH 的手续费后,攻击者账面利润约 8.42 万美元。仍有约 325 万美元留在合约里。UNCX 之前在各条公链上的锁仓合约总规模约 1.797 亿美元,其中以太坊约 1.114 亿美元。
有三件事值得关注。
第一,这不是“私钥被偷”式的攻击,而是会计逻辑写错了。审计通常盯的是代码有没有被绕过,但更隐蔽的错误是“减错了地方”——总量减了,明细没减。这属于设计层面的问题,事后补一行代码就能堵上,但它能骗过所有照常运行的界面。
第二,共享池的风险会传染。UNCX 服务的是多个项目,锁在同一个共享合约里。一个逻辑缺陷,理论上可以波及所有用这个合约锁币的项目方和投资人——所以这次事件里“其他项目代币是否受影响”,成了所有人最关心的问题。
第三,UNCX 的处置值得看:立刻暂停新仓位进入合约,把各锁仓合约的固定费用提到 100 ETH,用很高的门槛阻止新的交互,同时声明已锁仓位和 LP 仓位安全,并承诺给出合并说明和补偿方案。这套流程比“沉默或删推”要专业,但最终的补偿方案还没出。
对普通人来说,这条新闻的实际提醒很简单:锁仓合约不是保险箱,它是别人写的代码+别人保管的账本。你锁进去的不只是代币,还有对一份会计表的信任。
你觉得,DeFi 里这种“共享池”的结构,还能被信任吗?
