跨链协议的安全风险,正在从传统的私钥窃取和合约权限漏洞,延伸到更隐蔽的内部结算机制。BlockSec 11月3日发布的技术复盘显示,2026年9月29日至10月1日,攻击者利用 NEAR Intents 的存款退款处理缺陷,制造出缺乏资产支持的内部余额,随后通过 HOT Bridge 从 BNB Chain 金库转出 3,865,021 USDT。项目方称,漏洞已于10月2日修复,受影响资金全部归还。
退款校验缺陷导致内部余额失真
此次漏洞的核心,并非直接攻击跨链金库,而是利用 NEAR Intents 的退款计算逻辑与异步执行机制之间的漏洞。
正常情况下,用户存入资产后,NEAR Intents 会增加对应的内部余额。当接收方未使用全部资产时,合约根据其退款请求扣减余额,再由上游代币合约退回相应资产。但受影响的代码在计算退款金额时,虽然考虑了接收方可用余额和请求金额,却没有将本次实际存款金额纳入上限。
攻击者先为恶意接收合约预存大量自定义填充代币,再通过批量转账构造97个填充代币条目,每项仅存入1个最小单位,却让接收合约分别提出高达10³⁶个最小单位的退款请求。
这些超额请求最终生成16,495字节的退款事件,超过 NEAR 16,384字节的日志限制,导致 mt_resolve_deposit() 回调失败。回调中的余额扣减被回滚,但此前已经提交的存款入账没有同步撤销。 上游 HOT Omni Balance 随后退回原始转入资产,包括攻击者存入的10 USDT,而恶意接收方仍保留对应的内部余额。
这正是攻击得以成立的关键:资产已经退回,账面余额却没有消失。
虚假余额通过正常提现流程转化为真实资产
BlockSec 追踪发现,攻击者共实施23笔失败存款交易,并通过七笔 BNB Chain 交易完成提现。其中前两笔分别转出10 USDT和11 USDT,随后五笔大额提现分别为80万、120万、150万、33万和3.5万 USDT,合计3,865,021 USDT。
更值得关注的是,虚假余额并没有停留在 NEAR 的内部账本中。攻击者利用这些余额发起提现,经过 HOT Omni 的销毁记录和 HOT MPC 授权流程,最终由 BNB Chain 金库释放真实 USDT。
这意味着,攻击者并未直接伪造底层资产,而是利用失真的内部账本,通过原本合法的授权和提现机制取得了真实资产。 当协议采用资金池模式时,内部余额一旦超过实际资 产支持,其他用户存入的资金也可能成为填补账面缺口的来源。
修复措施指向异步结算的系统性风险
项目方随后将退款金额限制在本次存款金额、用户请求金额和可用余额三者的最小值,并于10月7日移除存款通知功能。同时增加内部余额与合约实际持币量的监控,在出现差异时自动暂停合约。
此次事件真正值得行业警惕的,是异步合约缺乏跨执行阶段的整体回滚机制。一次回调失败,就可能让前序已经提交的状态继续存在,而资产退款却正常完成。对于跨链协议而言,安全审计不能只验证转账是否成功,还必须追踪每个执行阶段失败后,内部余额、代币供应量和底层资产分别发生了什么变化。
386.5万USDT的流出,最终指向一个更基础的问题:跨链系统不仅要验证资产从哪里来、转到哪里去,还必须确保每一次退款和状态变更都能在不同执行环节保持一致。