autorenew
Solana LaunchPool 漏洞:一个微小的时序错误如何让闪电贷窃取代币奖励

Solana LaunchPool 漏洞:一个微小的时序错误如何让闪电贷窃取代币奖励

在 Solana 表情包代币发售的快节奏世界里,炒作遇上高额融资,哪怕是最小的代码失误也能把一个有前途的项目变成黑客的乐园。这正是由 Accretion.xyz 带来的 Advent of Bugs 第二天的沉重教训——他们是审计 Solana 最疯狂角落的安全专家。最新的推文串深入挖掘了 LaunchPool 协议中的一个狡猾时序问题——攻击者仅凭闪电贷就能抽走代币奖励。如果你在 Solana 上发起或投资表情包代币,这篇必须读。

场景设定:结束时间与领取时间相撞

想象一下:你在 Solana 上构建一个 LaunchPool,让用户汇集资金来支持新的表情包代币,募集结束后按比例获得奖励。听起来很简单,对吧?流程也确实不复杂——存款的 start​,锁定总额的 end​,以及按贡献分发代币的 claim​。

但问题就出在这里。在被审计的协议中,end 时间被设置为​​等于​ claim 开始时间。在 Solana 那种极短的 slots(发生交易的小时间块)里,这种重叠会造成混乱。在那决定性的一次 slot 里,系统会认为:“存款还在开放,​​并且​​领取也已经开始。”用户可以在领取奖励的同时存款、提款或调整他们的份额。

这为什么重要?因为领取是根据“你的存款除以池子总额”来计算你的份额。如果在领取期间存款仍然可变,总额就会剧烈波动。后进入者可以不公平地膨胀池子,扭曲分配,最终可能把奖励从早期支持者那里抽干。

利用方式:闪电贷翻盘

闪电贷是 DeFi 的常用工具,允许你在同一笔交易内借入大量资金而无需抵押。对套利高手来说这像是零风险抢劫,但在本例中,它是奖励窃贼的梦想。

攻击者在几秒内完成的步骤如下:

  1. Borrow Big:借一笔大额闪电贷,比如 1,000 SOL(或池子使用的本币)。
  2. Deposit at Dusk:恰在 end_time == claim_time 的那个 slot,向池子注入借来的资金。砰——总存款瞬间飙升。
  3. Claim the Loot:立即领取奖励。由于你刚刚膨胀了总额,你的“份额”看起来很大。
  4. Pull Out:在同一重叠 slot 内撤回你的存款(仍被允许)。
  5. Repay and Repeat:归还闪电贷,把代币利润收入囊中,只付出一笔交易费。

受害者是谁?其他所有人。早期存款者的份额被稀释,项目失去信任(和资金)。这是一个典型的竞态条件利用,在 Solana 的高速度下被放大。

Advent of Bugs 第二天:LaunchPool 时序问题示意,显示重叠状态与闪电贷攻击流程

根本原因:一个狡猾的不等式

Accretion 的审计员在智能合约逻辑中发现了罪魁祸首:使用了 <= 检查而不是 <。这允许存款阶段延续到领取阶段。用代码表示就是状态转换写成了 start < end <= claim_start,把两个阶段在同一个 slot 中揉在一起。

基于时间的触发在区块链中无处不在——从解锁(vesting)时间表到表情包代币的空投。修复方法?强制​​严格​​分离:用 < 来结束存款,用 >= 来开始领取,确保每个时间戳只对应​​一个​​状态。测试时要考虑 Solana 的 slot 粒度——像 Anchor 这样的工具可以帮助模拟这些边缘情况。

为什么 Solana 表情包代币需要这个警钟

Solana 的表情包币场景正在爆发,LaunchPools 助推了像 Pump.fun 克隆项目和病毒式代币的兴起。但安全性往往落后于热度。这个漏洞并非孤例;类似的时序失误也曾在以太坊 DEX 和甚至比特币脚本中出现。对开发者来说,这是一个提醒:尽早审计,频繁审计。像 Accretion 这样的审计团队在上线前捕捉这些问题非常宝贵。

投资者也请注意——在盲目追投下一个狗狗主题宝石之前,查看协议的审计记录。像 Solana Explorer 这样的工具能揭示链上异常,但没有什么能替代主动的安全措施。

区块链开发者的关键要点

  • Strict State Machines:用无重叠的时间段安排各阶段——想想 end_time < claim_start
  • Flash Loan Proofing:用借来的资金模拟攻击,强压测试状态转换。
  • Audit Allies:找像 Accretion 这样专注 Solana 的团队把关。
  • Meme Magic with Safeguards:有趣的代币靠信任生存;一次漏洞就能把项目变成笑柄。

关注 Advent of Bugs 获取更多每日深度解析——第一天讨论了重入漏洞,内容只会越来越精彩。你最疯狂的 Solana 安全故事是什么?在评论里分享。大家注意安全,degens。

​鸣谢 @0xmahdirostami 的敏锐发现——安全就是一点点地积累起来的。​

你可能感兴趣