两笔交易、2.85 亿美元蒸发:Drift 协议攻击事件全解析
2026-04-0217:09
ForesightNews 速递
2026-04-02 17:09
ForesightNews 速递
2026-04-02 17:09
收藏文章
订阅专栏
从预签名到权限失守,Drif 的安全防线为何形同虚设?


撰文:Four Pillars

编译:AididiaoJP,Foresight News


核心要点


2026 年 4 月 1 日 16:05(UTC 时间),Drift 协议遭受了约 2.85 亿美元的重大攻击。Drift 是 Solana 生态系统中头部永续合约去中心化交易所。此次攻击属于复杂的抵押品操纵方案:攻击者利用被泄露的管理员密钥,上线了一个无价值代币的新现货市场,随后关闭了提款保护机制,最后通过伪造的抵押品价值提取了真实资产。


该攻击结合了基于持久化随机数的预签名技术与高级社会工程学手段。自 3 月 23 日起,攻击者为两名多签签名者及两个由攻击者控制的账户分别创建了持久化随机数账户。即使在 3 月 27 日协议方执行了合法的多签迁移之后,攻击者仍成功重新获得了对新多签中两名签名者的访问权限。攻击者通过误导交易内容的方式,从合法签名者处获取了预签名,利用持久化随机数加以存储,并于 4 月 1 日批量执行,最终夺取了管理员权限。此事件不涉及助记词泄露或智能合约漏洞。


此事件是又一次重大的操作安全失误,距离 Resolv 攻击事件仅相隔 10 天。Resolv 的崩溃源于其完全未设置多签机制;而 Drift 尽管设有多签,但因阈值过低且缺乏额外安全机制而同样失守。这两起事件共同表明,对特权架构进行根本性重新设计已十分迫切。


事件概述


来源:@DriftProtocol


2026 年 4 月 1 日 16:05(UTC 时间),Solana 上旗舰级的永续合约去中心化交易所 Drift 协议遭遇了大规模攻击。Drift 是一个提供杠杆交易、现货交易、借贷及其他多种去中心化金融服务的协议,其架构结合了虚拟自动做市商与链上订单簿。就在攻击发生之前,该协议锁定的总价值约为 3.09 亿美元。


来源:@PeckShieldAlert


大约在 18:10(UTC 时间),即攻击开始约两小时后,Drift 团队在 X 平台上发文,要求用户暂停存款。随后,团队确认了攻击事件,并暂停了所有存款与提款功能。包括 PeckShield 与 Lookonchain 在内的多家安全及链上分析公司估计,损失约为 2.85 亿美元。Phantom 钱包迅速采取行动,屏蔽了对该协议的访问。


此事件之所以格外引人关注,是因为它发生在 Resolv 攻击事件之后仅 10 天,成为短时间内连续发生的又一起大规模管理员密钥泄露事件。两起事件存在共同根源:根本原因并非智能合约代码漏洞,而是操作安全方面的失误。


根本原因分析


本次攻击的核心在于攻击者利用被泄露的管理员权限实施了抵押品操纵。如果说 Resolv 事件是「具备铸造权限的密钥被泄露」,那么 Drift 事件就是「具备市场上线及安全配置权限的密钥被泄露」。二者表现形式不同,但根源一致。以下将对攻击流程进行逐步分析。


来源:Dexscreener


本次攻击最直接的工具是 CarbonVote Token(CVT),一种流动性极低的代币。攻击者控制的地址之一(FnYXwy...LpAjjx)在攻击前三周发行了该代币。CVT 的总供应量约为 7.5 亿枚,其中攻击者钱包持有超过 80%。攻击者在 Raydium 上创建了一个价值约 500 美元的最小流动性池,随后进行了持续的刷量交易。


Drift 协议中的 initializeSpotMarket 函数允许管理员直接指定预言机地址及其参数来源。查阅现有现货市场的软件开发工具包配置可知,每个市场均单独定义了预言机、预言机来源及代币铸造字段。这意味着,即使像 CVT 这样没有 Pyth 喂价的代币,只要攻击者获得了管理员权限,也可以使用任意预言机源将其上线为市场。


在此次攻击中,攻击者为 CVT 市场指定了一个 Switchboard 喂价作为其预言机。Switchboard 是一个预言机网络,创建自定义喂价相对容易。攻击者配置了一个由其控制的喂价,将 7.85 亿枚 CVT 的价值定为数亿美元。Dexscreener 等价格追踪平台显示 CVT 价格约为 1 美元,但其实际市场流动性和内在价值几乎为零。


攻击中所使用的掏空钱包(HkGz4K...ovpZES)大约在八天前,即 3 月 24 日首次出现活跃。该钱包通过 NEAR 协议意图获得了预充值,链上记录显示截至攻击当日,该钱包共完成 325 笔交易。


攻击当日所使用的管理员签名者(H7PiGq...y7ZgL)的链上活动历史同样值得关注。该密钥总共仅记录了 29 笔交易。其第一笔交易发生于 3 月 31 日 15:05(UTC 时间),即攻击前一天;最后一笔交易发生于 4 月 1 日 18:05(UTC 时间),即攻击当日。该密钥的整个链上存在时间约为 27 小时。其原因可从链上记录中清晰看出。


Drift 协议的管理员权限并非由单个外部拥有账户管理,而是通过多签机制实现。然而后续调查揭示的攻击路径远比简单的多签入侵更为复杂。大约在攻击前九天,攻击者创建了四个持久化随机数账户。其中两个与 Drift 安全委员会多签的签名者相关联,另外两个由攻击者控制。持久化随机数是 Solana 上的一种机制,能够绕过普通交易中约一分钟的区块哈希有效期,允许提前收集签名并在日后执行。据信,攻击者利用这一机制,通过误导交易内容的方式,从合法签名者处获取了预签名。


四天后,Drift 团队因安全委员会成员变更而执行了计划中的多签迁移。此次迁移属于常规操作流程,但攻击者成功适应了这一变化。


攻击发生前一天,攻击者为迁移后多签中的一位签名者(6UJbu9...Pvu924)创建了一个新的持久化随机数账户。此时,攻击者已重新获得了对更新后多签中五分之二签名者的有效访问权限。这表明攻击者已深度渗透系统,甚至能够应对多签迁移这样的意外变动。


攻击当日,Drift 团队执行了一次从保险基金的例行测试提款。约一分钟后,攻击者快速连续执行了两笔预先签名的持久化随机数交易。


来源:solscan


第一笔交易在 Squads 多签上执行了 VaultTransactionCreate、ProposalCreate 及 ProposalApprove 指令,创建了恶意的管理员转移提案并记录了第一次批准。


紧接着,第二笔交易利用持久化随机数执行了 ProposalApprove 及 VaultTransactionExecute 指令。五分之二的阈值随即达成,且由于时间锁设置为零秒,该交易立即得到执行。此时,Drift V2 程序中的 UpdateAdmin 指令被调用,将管理员地址转移给了攻击者(H7PiGq...y7ZgL)。


此处的关键细节在于,这两笔交易均事先完成了全部签名,并在攻击当日批量提交。签名者当时很可能并未充分理解其所签名的交易内容。Drift 团队使用的「交易误述」一词表明,签名者被诱骗签署了伪装成常规操作的恶意管理员转移交易。持久化随机数的作用在于无限期存储这些预签名,使得攻击者可以在其选择的时机予以执行。


被替换后的管理员签名者随后调用了 Drift V2 程序(dRifty...cn33UH),执行了两个操作。


来源:solscan


第一,攻击者通过 initializeSpotMarket 指令,在 Drift 上将 CVT 注册为新的现货市场。在此过程中,创建了一个新的现货市场账户(BY3WYn...FVU1Cf)和两个 CVT 代币账户,并将 Drift 金库的程序派生地址(PDA,JCNCMF...XXJfrw)设置为代币所有者。


Drift 运行的是多资产抵押系统,这意味着在新现货市场上注册的代币可以立即用作抵押品。然而要被视为合格抵押品,该市场的 initial_asset_weight 与 maintenance_asset_weight 参数必须设置为大于零的正值,而默认的初始化值较低或接近于零。对攻击交易(4a5962R...st82X)的分析显示,updateSpotMarketMarginWeights(或等效的风险参数更新)与 initializeSpotMarket 被捆绑在同一笔交易中执行,攻击者将 CVT 的抵押品权重设置为最大值。


这暴露了一个从纵深防御角度来看的关键设计缺陷:市场上线、预言机源指定、最大抵押品权重配置以及提款保护禁用等操作,均可在单笔交易内一次性完成。本应用于防止大额头寸集中风险的权重折扣因子,在权重本身被设为最大值之后,也丧失了实际效用。如果该程序对新创建市场的权重设置上限,或对权重变更设置独立的时间锁,那么这种一次性瓦解所有防御措施的攻击将无法实现。


来源:solscan


第二,在同一笔交易中,攻击者五次调用 updateWithdrawGuardThreshold 指令,将主要资产市场的提款限额提高到了极端水平。所有市场的限额均被设置为约 500 万亿的统一数值,实际上将提款保护机制的阈值推至无穷大,从而废除了旨在阻止异常大额提款的安全防护功能。


这一笔交易(4a5962R...st82X)同时摧毁了 Drift 的三道核心防线。


第一,通过分配一个由攻击者控制的 Switchboard 喂价作为预言机,价格机制被攻破。第二,抵押品权重被设置为最大值,使得一个毫无内在价值的代币被认定为优质抵押品。第三,提款保护机制的阈值被提升至约 500 万亿的水平,实质上消除了异常提款的阻断机制。


包括管理员权限变更在内,攻击者仅用两笔交易就瓦解了该协议的全部安全架构。从代码审计的角度来看,这带来了一个深刻的悖论:Drift 的合约代码完全按照审计所确认的方式运行。initializeSpotMarket 按设计注册了新市场,指定了预言机源并设置了权重参数;updateWithdrawGuardThreshold 按设计修改了限额。问题根源在于系统设计本身——该设计允许完整的攻击链条在一笔交易内完成。这已不属于代码审计的范畴,而是属于特权架构与参数约束设计的范畴。


最终,攻击者通过一个新创建的 Drift 用户账户,存入了约 7.85 亿枚 CVT 作为抵押品。由攻击者控制的 Switchboard 预言机喂价将此价值评定为数亿美元,而被设为最大的抵押品权重则认可了几乎全部估值作为有效抵押品。Drift 的保证金系统完全按照预期设计运行。问题在于,输入该系统的每一个参数都已被攻击者恶意操纵。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

专栏文章
查看更多
数据请求中

推荐专栏

数据请求中

一起「遇见」未来

DOWNLOAD FORESIGHT NEWS APP

Download QR Code