Drift Protocol 遭遇了一次精心策划的攻击,损失高达 2.7 亿美元。这次攻击的核心是 Solana 的 durable nonce(耐久一次性代码) 功能。该功能原本为硬件钱包和托管方设计,允许交易绕过 60–90 秒的有效期限制,单次代码存储在独立账户中,交易可以无限期等待。但攻击者利用了这一便利性:他们先让安全委员会成员签署交易,再将签名后的交易压住不发,数周后才广播上链。
耐久Nonce:Solana 机制的双刃剑
Solana 通常用 区块哈希 来确保交易新鲜,防止重放攻击。durable nonce 则提供另一种路径——交易依赖专用账户里的单次代码,不受时间约束。只有当 nonce 被消耗后交易才失效。对于需要多��审批的协议来说,这一机制意味着:一旦签名者批准了一笔交易,无法手动取消,除非更新 nonce 账户。Drift 的安全委员会共有 5 名成员,每笔交易需至少 2 人签名。这种设计本是为了分散风险,但 durable nonce 的存在,让攻击者有机会在签名后无限期等待时机。
攻击路线:预签交易与延时广播
3 月最后一周,攻击者设立了 4 个 durable nonce 账户。其中 2 个绑定了安全委员会成员的真实身份,另外 2 个则由攻击者控制。他们提前从 2 名委员会成员那里搜集到了有效签名。3 月 27 日,Drift 委员会名单发生变动,攻击者迅速调整策略,再次获取新成员的签名。攻击启动时,先是一笔合法的测试提款从保险基金流出。紧接着,攻击者将预签好的交易广播上链,迅速接管管理权限,并创建了未经授权的提币机制。资金在两次交易中被快速抽走。
2.7亿美元资产流向追踪
链上分析师 ZachXBT 追踪了被盗资产。最大一笔损失是 JPL 代币,金额达 1.556 亿美元;其次是 USDC 稳定币 6040 万美元;CBBTC 1130 万美元;USDT 565 万美元,以及多种其他数字资产。攻击者的主���作钱包在 8 天前通过 NEAR Protocol 获得了初始资金,一直处于静默状态。实施攻击后,资金被转移至 Backpack 交易所的中转钱包——该交易所要求身份验证,这为调查提供了突破口。ZachXBT 指出,超过 2.3 亿美元的 USDC 通过 Circle 的跨链桥转移到了以太坊。Circle 因未在事发后 6 小时内冻结这些资金而遭到社区批评。
此次事件暴露了高级安全设置中的人为疏忽:多签交易批准后缺少有效的撤回机制,而 durable nonce 又让交易可以无限期等待。Drift 的借贷、国库和交易池均遭受损失,但 DSOL 存款以及质押在 Drift 验证人中的资产未受影响。

