急速に進むSolanaのミームトークンローンチの世界では、盛り上がりと巨額の資金調達が交差するため、ほんの小さなコードのミスが有望なプロジェクトをハッカーの遊び場に変えてしまいます。これは、Solanaの“危険地帯”を監査するセキュリティチーム、Accretion.xyzによる注目のシリーズAdvent of BugsのDay 2から得られた厳しい教訓です。彼らの最新スレッドはLaunchPoolプロトコルに潜む巧妙なタイミングの問題を掘り下げており、フラッシュローンだけで報酬を吸い上げられてしまう可能性を示しています。Solanaのミームトークンをローンチしたり投資したりしているなら、必読の内容です。
セットアップ:End TimeがClaim Timeと重なるとき
想像してみてください:Solana上でLaunchPoolを構築していて、ユーザーが資金をプールして新しいミームトークンを支援し、資金調達が終わった後に比例配分で報酬を得るプラットフォームです。流れは単純――入金のstart、合計を確定するためのend、そして寄与に応じてトークンを配布するclaim。
しかしここでバグが生じます。監査されたプロトコルでは、end timeがちょうどclaim startと同じ時刻に設定されていました。Solanaの超高速なスロット(取引が行われる短い時間ブロック)では、この重なりが混乱を生みます。その一つのスロットの間、システムは「入金はまだ開いていて、かつクレームも開始している」と判断してしまいます。ユーザーは報酬を請求しながら入金や出金、ステークの変更ができてしまうのです。
なぜこれが問題なのか?クレームは「あなたの入金 ÷ プール合計」であなたの取り分を計算します。クレームの間に入金が流動的なままだと、合計が大きく変動します。後から入金した者が不当にポットを膨らませ、配分を歪め、初期支援者から報酬を奪う可能性が出てきます。
エクスプロイト:フラッシュローンが形勢を逆転させる
ここで登場するのがフラッシュローン――Solana上のDeFiで一般的な、担保なしで一時的に巨額を借り、同一トランザクション内で返済する仕組みです。裁定取引のプロにはリスクの少ない手法ですが、このケースでは報酬窃盗者の夢と化します。
攻撃者が数秒でやることは次の通りです:
- Borrow Big(巨額を借りる): 例として1,000 SOL(またはプールのネイティブトークン)をフラッシュローンで借ります。
- Deposit at Dusk(終わりのスロットで入金): まさに end_time == claim_time のスロットで借りた資金をプールに突っ込みます。すると合計入金が急増します。
- Claim the Loot(戦利品を請求): 即座に報酬を請求します。今やあなたの「取り分」は総額を膨らませたため非常に大きく見えます。
- Pull Out(抜き取る): その重なったスロット内では出金も許可されているため、入金を引き出します。
- Repay and Repeat(返済して繰り返す): フラッシュローンを返済し、トランザクション手数料だけでトークンを懐に入れます。
被害者は他の全員です。初期入金者の取り分は希薄化され、プロジェクトは信頼と資金を失います。これはSolanaのスピードに増幅された典型的なレースコンディション攻撃です。
根本原因:巧妙な不等号ミス
Accretionの監査チームはスマートコントラクトのロジックに原因を見つけました:単純な<=チェックが使われていたために、入金フェーズがクレーム時代まで持ち越されてしまっていたのです。コード的には状態遷移が start < end <= claim_start となり、二つのフェーズが一つのスロットに押し込まれていました。
ブロックチェーンでは、ベスティングスケジュールからミームトークンのエアドロップまで、時間ベースのトリガーが至る所にあります。修正方法は明快です:厳格な区切りを設けること。入金終了には < を、クレーム開始には >= を使って、各タイムスタンプが必ず一つの状態にしかならないようにします。Solanaのスロット粒度を念頭に置いてテストを行いましょう。Anchorのようなフレームワークはこれらのエッジケースをシミュレートするのに役立ちます。
なぜSolanaのミームトークンはこの警鐘を必要としているのか
Solanaのミームコイン界隈は急速に拡大しており、LaunchPoolsがPump.funのクローンやバイラルなトークンに燃料を注いでいます。しかしセキュリティはこの熱狂に追いついていません。このバグは孤立したケースではなく、同様のタイミングのミスはEthereumのDEXやBitcoinスクリプトでも起きています。ビルダーにとっての教訓は明白:早く、そして頻繁に監査を行え。Accretionのようなプラットフォームはローンチ前にこれらを発見する上で金のように価値があります。
投資家の皆さんも注意を。次の犬テーマの宝石に飛びつく前に、プロトコルの監査履歴をチェックしてください。Solana Explorerのようなツールでオンチェーンの異常を見つけることはできますが、積極的なセキュリティ対策に勝るものはありません。
ブロックチェーン開発者への重要ポイント
- Strict State Machines(厳密な状態機械): フェーズに重なりを持たせない――
end_time < claim_startを意識する。 - Flash Loan Proofing(フラッシュローン耐性の検証): 借入を伴う攻撃をシミュレートして遷移をストレステストする。
- Audit Allies(監査の味方を持つ): Solanaに詳しいAccretionのような会社に相談する。
- Meme Magic with Safeguards(安全策を伴うミームの魔法): 面白いトークンは信頼で成り立つ。一つのエクスプロイトがプロジェクトを一気に葬ることがある。
Advent of Bugsをフォローして、日々の深掘りをチェックしてください――Day 1はリエントランシーを扱っており、これからどんどん面白くなります。あなたの一番ヤバかったSolanaセキュリティ体験は何ですか?コメントで教えてください。気をつけて、degensの皆さん。
Shoutout to @0xmahdirostami for the sharp spot—security accretes one bug at a time.