2026 年 4 月初,Solana 链上知名 DeFi 协议 Drift Protocol 遭受攻击,损失约 2.85 亿美元,成为 2026 年规模最大的 DeFi 安全事件之一。此次攻击与传统的智能合约代码漏洞不同,核心问题在于对 Solana 特有的 Durable Nonce 机制理解不足,导致管理员密钥被劫持、预签名交易被恶意滥用,最终造成金库资金被大规模抽走。本文从技术原理、攻击路径和防御建议三个维度,深入分析该事件的核心根因。
Durable Nonce 机制的技术原理
Solana 为了解决离线签名与交易原子性需求,引入了 Durable Nonce(持久随机数)机制。与以太坊等链上交易每次需要包含递增 nonce 不同,Solana 的 Durable Nonce 允许交易发送者预先创建一个 nonce 账户,并在其中存储一个只有账户所有者才能更新的随机数。通过这种方式,一笔交易可以被预先签名,然后在任意时间点执行,只要在执行前更新 nonce 即可。这种设计本意是为多步骤协议交互、跨链桥接以及需要延迟执行的治理操作提供便利,但同时也带来了潜在的安全风险。
在正常业务场景下,开发者可能使用 Durable Nonce 来实现定时分配奖励、延迟执行清算操作或者治理提案的延时生效。然而,当管理员账户的私钥被社会工程攻击获取后,攻击者可以在获取密钥后的任意时间点,利用预先签名的交易来执行敏感操作,如修改多签阈值、添加新的管理员地址或者直接调用提款函数。由于这些交易在签署时看起来完全合法,链上监控系统可能无法区分原始签名者的真实意图与被劫持后的恶意执行。
攻击路径与技术细节分析
根据多个安全分析机构的报告,此次 Drift Protocol 攻击的核心步骤如下。首先,攻击者通过社交工程或其他手段获取了协议部分管理员密钥,这些密钥控制着协议的安全委员会多签钱包。值得注意的是,Drift Protocol 采用了多签治理架构,理论上需要多个私钥共同签名才能执行敏感操作。然而,攻击者利用 Durable Nonce 的特性,预先构建了多笔包含管理员权限的交易,并使用已获取的密钥对其进行签名。
这些预签名交易利用了 Solana 交易的可延迟执行特性,在攻击者实际发起攻击之前就已经被广播到网络中但尚未执行。当攻击者准备好后,通过更新 nonce 账户的方式触发这些预签名交易依次执行。由于这些交易已经获得了必要的签名授权,链上合约不会进行额外的权限检查,攻击者便能够在短时间内完成金库资产的转移。据安全公司 Utila 的分析报告指出,攻击者甚至在数周前就预先签署了大量交易,将关键的治理操作时间窗口与实际攻击时间精确匹配。
攻击的另一个关键在于攻击者对协议业务逻辑的深入理解。Drift Protocol 作为 Solana 链上的综合 DeFi 平台,支持借贷、杠杆交易、流动性池等多种功能。金库合约中存储了大量用户的质押资产,而提款函数通常需要经过治理模块的授权检查。攻击者通过预签名交易修改了金库的授权参数,使得提款限制被绕过,或者直接构造了指向攻击者控制地址的大额提款指令。整个攻击过程在链上看起来像是正常的管理员操作,因此未能触发实时的异常预警。
从资产转移路径来看,攻击者首先将 Solana 链上的原生资产(SOL)以及协议发行的各类代币转移至攻击者控制的中转地址,随后通过跨链桥将资产桥接至以太坊主网进行混淆和套现。这种跨链转移策略增加了资产追回的难度,也使得该事件对整个 Solana DeFi 生态产生了连锁影响。据报道,攻击发生后的数小时内,超过 20 个相关协议受到了不同程度的波及。
权限控制设计的深层问题
此次事件暴露了 DeFi 协议在权限控制设计上的几个深层问题。第一,过度依赖预签名交易进行关键治理操作。预签名机制虽然提升了用户体验和交易成功率,但在密钥管理不当的情况下会成为致命的攻击向量。协议设计者应当认识到,预签名交易的授权是一次性的、不可撤销的,一旦签名泄露,攻击者可以在任何时候触发交易,而链上系统无法区分签署时的真实上下文。
第二,多签治理的密钥管理流程存在薄弱环节。Drift Protocol 的安全委员会多签架构本意是通过分散权限来降低单点故障风险,但在实际操作中,如果多个管理员密钥被陆续获取,或者密钥持有者在不同时间点签署的交易被攻击者组合利用,多签机制的保护效果将大打折扣。攻击者利用了时间差和密钥组合的可能性,实现了对多签钱包的间接控制。
第三,链上监控与预警机制的滞后性。由于预签名交易在执行前已经在网络中传播,传统的交易监控工具往往只关注已上链的交易,而无法对即将执行但尚未执行的 nonce 交易进行预判。这意味着协议运营方需要在密钥管理、交易审查和应急响应等环节投入更多资源,而非仅依赖链上自动化的风控系统。
工程化的防御方案与建议
针对 Durable Nonce 机制被恶意利用的问题,DeFi 协议开发者可以采取以下工程化的防御措施。首先,限制预签名交易的使用场景。关键的治理操作(如修改管理员列表、调整金库参数、大额资金转移)不应使用预签名机制,而应在链上实时验证签名并执行。如果必须使用预签名,建议设置较短的有效期,并引入时间锁机制,使得即便交易被劫持也有时间窗口进行冻结和回滚。
其次,实施密钥分离原则。不同的操作类型应使用不同的密钥进行签名,治理密钥与操作密钥应当物理隔离,且操作密钥的权限范围应当最小化。例如,仅用于日常参数调整的密钥不应拥有资产转移的权限,而资产转移操作需要多把密钥的组合授权。通过权限的细粒度划分,可以有效降低单次密钥泄露造成的损失规模。
第三,部署基于时间的动态风控策略。协议可以引入时间延迟机制,任何敏感操作在链上执行后需要经过一定的区块确认期才能最终生效。在此期间,多签成员可以审核交易内容并在发现异常时触发紧急暂停。此外,实时监控预签名 nonce 账户的活跃度也是有效的预警手段,当发现某个 nonce 账户出现异常的交易模式时,系统可以自动锁定相关功能并通知管理员。
最后,建议定期进行密钥轮换与权限审计。多签钱包的签名者应当定期更换,且每次更换密钥后应验证旧密钥已完全失效。对于已签署但尚未执行的交易,协议应当建立对应的撤销或更新机制,确保即便密钥泄露也无法利用历史签名进行攻击。
小结
Drift Protocol 遭受的 2.85 亿美元攻击并非简单的智能合约代码漏洞,而是对 Solana Durable Nonce 机制理解不足与权限管理流程缺陷的综合结果。攻击者利用预签名交易的延迟执行特性,在获取部分管理员密钥后,通过构造和触发预授权交易实现了对金库资产的非法转移。该事件为整个 DeFi 行业敲响了警钟:在享受区块链透明性带来的便利时,必须对底层机制的安全边界有清醒的认识,并在协议设计中嵌入多层次的权限控制与监控手段。唯有将密钥管理、交易验证与应急响应作为一个整体的安全体系来建设,才能在日益复杂的攻击威胁中守护用户资产安全。
资料来源:Binance Square 技术分析、Utila 安全研究报告、CryptoRank 攻击事件汇总。