大规模抢劫案曝光:黑客从 Solana 区块链上的 Drift 中窃取 2.7 亿美元,便利工具变得致命

对 Drift Protocol 的攻击并不是传统意义上的黑客攻击。
没有人发现错误或破解私钥。也不存在闪贷漏洞或被操纵的预言机。
相反,攻击者使用合法的 Solana 功能“持久随机数”来欺骗 Drift 的安全委员会预先批准交易,这些交易将在几周后、在签名者从未预期的时间和背景下执行。
结果是至少损失了 2.7 亿美元,执行时间不到一分钟,但准备时间却超过一周。
什么是持久随机数以及它们存在的原因
在 Solana 上,每笔交易都包含一个“最近的区块哈希”,本质上是证明交易是最近创建的时间戳。该区块哈希将在大约 60 到 90 秒后过期。如果交易未在该窗口内提交到网络,则该交易将无效。这是一项安全功能,有助于防止旧的、陈旧的交易稍后重播。
持久随机数会覆盖该安全功能。他们用固定的“随机数”替换过期的区块哈希,这是一种存储在特殊链上帐户中的一次性代码,可以使交易无限期地保持有效,直到有人选择提交它。
该功能的存在是有正当理由的。硬件钱包、离线签名设置和机构托管解决方案都需要能够准备和批准交易,而无需被迫在 90 秒内提交交易。
但无限期有效的交易会产生问题。如果今天可以让某人签署一笔交易,那么根据系统的硬编码规则,该交易可以在下周或下个月执行。签名者一旦获得批准就无法撤销,除非手动推进随机数帐户,而大多数用户不会监控这一点。
攻击者如何使用它们
Drift 的协议由“安理会多重签名”管理,该系统由多人(在本例中为五个)共享控制权,任何行动都需要至少两人批准。多重签名是 DeFi 中的标准安全实践,其理念是危害一个人并不足以窃取资金。
但攻击者不需要泄露任何人的密钥。他们所需要的只是两个签名,而且他们似乎是通过 Drift 所描述的“未经授权或歪曲交易批准”获得的,这意味着签名者可能认为他们正在批准一项常规交易。
这是周四 X 帖子中发布的时间线漂移。
3 月 23 日,创建了四个持久随机数账户。其中两人与漂移安全委员会的合法成员有联系。其中两人被袭击者控制。这意味着攻击者已经从五名理事会成员中的两名获得了有效签名,并锁定在不会过期的持久随机数交易中。
3 月 27 日,Drift 执行了一项计划中的安理会迁移,以替换一名安理会成员。攻击者适应了。到 3 月 30 日,出现了一个新的持久随机数帐户,与更新后的多重签名的成员绑定,表明攻击者在新配置下重新获得了所需的五分之二批准阈值。
4月1日,袭击者被处决。
首先,Drift 从其保险基金中进行了合法的测试提款。大约一分钟后,攻击者提交了预先签名的持久随机数交易。 Solana 区块链上相隔四个槽的两笔交易足以创建并批准恶意管理传输,然后批准并执行它。
几分钟之内,攻击者就完全控制了 Drift 的协议级权限。他们利用这种控制引入了欺诈性提款机制并耗尽了金库。
被拿走的东西以及它去了哪里
链上研究人员实时跟踪资金流向。安全研究人员 Vladimir S. 编制的被盗资产明细表显示,数十种代币的总价值约为 2.7 亿美元。
最大的单一类别是 1.556 亿美元的 JPL 代币,其次是 6040 万美元的 USDC、1130 万美元的 CBBTC(Coinbase 包装的比特币)、565 万美元的 USDT、470 万美元的包装以太币、450 万美元的 DSOL、440 万美元的 WBTC、410 万美元的 FARTCOIN,以及 JUP、JITOSOL、MSOL、BSOL 等较小金额的代币。 EURC 等。
主要的 Drainer 钱包在攻击前八天通过 NEAR 协议意图获得资金,但在执行日之前一直处于非活动状态。被盗资金被转移到前一天通过 Backpack 资助的中间钱包,Backpack 是一个需要身份验证的去中心化加密货币交易所,这可能为调查人员提供线索。
从那里,资金通过跨链桥虫洞转移到以太坊地址。这些以太坊地址已使用 Tornado Cash(经过批准的隐私混合器)预先提供资金。
著名的链上调查员 ZachXBT 指出,超过 2.3 亿美元的 USDC 通过 Circle 的 CCTP(跨链传输协议)从 Solana 转移到以太坊,涉及 100 多笔交易。
他批评了 $USDC 的中心化发行者 Circle,