事前署名から権限喪失へ、Driftの安全防線はなぜ形同然の虚設なのか?

執筆:Four Pillars

編訳:AididiaoJP、Foresight News

核心要点

2026年4月1日16:05(UTC時間)、Driftプロトコルは約2.85億ドルの重大な攻撃を受けました。DriftはSolanaエコシステムの主要な永続契約分散型取引所です。この攻撃は複雑な担保操作スキームに該当します:攻撃者は漏洩した管理者キーを利用して無価値なトークンの新しい現物市場を立ち上げ、その後引き出し保護メカニズムを無効化し、最後に偽の担保価値を通じて実際の資産を引き出しました。

この攻撃は、持続的な乱数に基づく事前署名技術と高度なソーシャルエンジニアリング手法を組み合わせたものです。3月23日以降、攻撃者は2名のマルチシグ署名者と2つの攻撃者が制御するアカウントのために持続的な乱数アカウントをそれぞれ作成しました。3月27日にプロトコル側が合法的なマルチシグ移行を実行した後も、攻撃者は新しいマルチシグの2名の署名者へのアクセス権を再取得しました。攻撃者は取引内容を誤導する方法で合法的な署名者から事前署名を取得し、持続的な乱数を利用して保存し、4月1日に一括実行し、最終的に管理者権限を奪取しました。この事件は、ニーモニックフレーズの漏洩やスマートコントラクトの脆弱性を含みません。

この事件は再び重大な操作安全の失敗を示しています。Resolv攻撃事件からわずか10日後に発生しました。Resolvの崩壊は全くマルチシグメカニズムを設定していなかったことに起因していますが、Driftはマルチシグを持っているにもかかわらず、閾値が低すぎて追加の安全メカニズムが欠如しているため、同様に失守しました。これら2つの事件は、特権アーキテクチャの根本的な再設計が非常に緊急であることを示しています。

事件概要

出典:@DriftProtocol

2026年4月1日16:05(UTC時間)、Solana上のフラッグシップの永続契約分散型取引所Driftプロトコルは大規模な攻撃を受けました。Driftはレバレッジ取引、現物取引、貸出、およびその他の多様な分散型金融サービスを提供するプロトコルであり、そのアーキテクチャは仮想自動マーケットメーカーとオンチェーンオーダーブックを組み合わせています。攻撃が発生する前、同プロトコルがロックしていた総価値は約3.09億ドルでした。

出典:@PeckShieldAlert

約18:10(UTC時間)、攻撃が始まってから約2時間後に、DriftチームはXプラットフォーム上でユーザーに入金を一時停止するように要請しました。その後、チームは攻撃事件を確認し、すべての入金と引き出し機能を一時停止しました。PeckShieldやLookonchainを含む複数のセキュリティおよびオンチェーン分析会社は、損失を約2.85億ドルと推定しています。Phantomウォレットは迅速に行動を起こし、当該プロトコルへのアクセスを遮断しました。

この事件が特に注目を集める理由は、Resolv攻撃事件のわずか10日後に発生し、短期間に連続して起こった大規模な管理者キー漏洩事件となったからです。2つの事件には共通の根源があります。根本的な原因はスマートコントラクトコードの脆弱性ではなく、操作の安全性に関する失敗です。

根本原因分析

今回の攻撃の核心は、攻撃者が漏洩した管理者権限を利用して担保を操作したことにあります。Resolv事件が「発行権限を持つキーが漏洩した」とするならば、Drift事件は「市場の立ち上げ及び安全設定権限を持つキーが漏洩した」ということです。二つの事象は異なる表現を持つが、根源は同じです。以下では攻撃プロセスを段階的に分析します。

出典:Dexscreener

今回の攻撃で最も直接的なツールは、流動性が非常に低いトークンであるCarbonVote Token(CVT)です。攻撃者が制御するアドレスの1つ(FnYXwy...LpAjjx)は、攻撃の3週間前にこのトークンを発行しました。CVTの総供給量は約7.5億枚で、そのうち攻撃者のウォレットが80%以上を保有しています。攻撃者はRaydiumで約500ドルの最小流動性プールを作成し、その後持続的な取引を行いました。

Driftプロトコル内のinitializeSpotMarket関数は、管理者が直接オラクルアドレスとそのパラメータソースを指定することを許可します。既存の現物市場のソフトウェア開発キットの設定を調べると、各市場は個別にオラクル、オラクルソース、およびトークン発行フィールドが定義されています。これは、CVTのようにPyth価格がないトークンであっても、攻撃者が管理者権限を取得すれば任意のオラクルソースを使用して市場に上場できることを意味します。

この攻撃において、攻撃者はCVT市場にSwitchboardの価格供給をオラクルとして指定しました。Switchboardはカスタム価格供給を比較的容易に作成できるオラクルネットワークです。攻撃者は自ら制御する価格供給を設定し、7.85億枚のCVTの価値を数億ドルに定めました。Dexscreenerなどの価格追跡プラットフォームはCVTの価格を約1ドルと表示していますが、その実際の市場流動性と内在的価値はほぼゼロです。

攻撃で使用されたウォレット(HkGz4K...ovpZES)は、約8日前の3月24日に初めて活発になりました。このウォレットはNEARプロトコルを介して事前入金を獲得する意図があり、オンチェーン記録によると、攻撃当日までに325件の取引を完了しました。

攻撃当日使用された管理者署名者(H7PiGq...y7ZgL)のオンチェーン活動履歴も注目に値します。このキーは合計で29件の取引しか記録していません。最初の取引は3月31日15:05(UTC時間)に発生し、攻撃の前日でした。最後の取引は4月1日18:05(UTC時間)に発生し、攻撃当日でした。このキーの全体のオンチェーン存在時間は約27時間です。その理由はオンチェーン記録から明確にわかります。

Driftプロトコルの管理者権限は、単一の外部所有アカウントによってではなく、マルチシグメカニズムを通じて実現されています。しかし、その後の調査で明らかになった攻撃経路は単純なマルチシグ侵入よりもずっと複雑です。攻撃の約9日前、攻撃者は4つの持続的な乱数アカウントを作成しました。そのうちの2つはDriftセキュリティ委員会のマルチシグ署名者に関連しており、残りの2つは攻撃者が制御しています。持続的な乱数は、Solana上のメカニズムで、通常の取引の約1分間のブロックハッシュの有効期限を回避し、事前に署名を収集し、後日実行することを可能にします。攻撃者はこのメカニズムを利用して、取引内容を誤導することにより合法的な署名者から事前署名を取得したと考えられています。

4日後、Driftチームはセキュリティ委員会のメンバー変更により計画されたマルチシグ移行を実行しました。この移行は通常の操作フローに属しますが、攻撃者はこの変化に成功裏に適応しました。

攻撃が発生する前の日、攻撃者は移行後のマルチシグにおける一名の署名者(6UJbu9...Pvu924)のために新しい持続的な乱数アカウントを作成しました。この時、攻撃者は更新されたマルチシグの5分の2の署名者への有効なアクセス権を再取得していました。これは、攻撃者がシステムに深く浸透しており、マルチシグ移行のような予期せぬ変化に対処できることを示しています。

攻撃当日、Driftチームは保険基金からの定期的なテスト引き出しを実行しました。約1分後、攻撃者は迅速に2件の事前署名された持続的乱数取引を連続して実行しました。

出典:solscan

最初の取引はSquadsのマルチシグでVaultTransactionCreate、ProposalCreate、ProposalApprove命令を実行し、悪意のある管理者移転提案を作成し、初めての承認を記録しました。

続いて、2件目の取引が持続的乱数を利用してProposalApprove及びVaultTransactionExecute命令を実行しました。5分の2の閾値が達成され、タイムロックがゼロ秒に設定されていたため、その取引は直ちに実行されました。この時、Drift V2プログラム内のUpdateAdmin命令が呼び出され、管理者アドレスが攻撃者(H7PiGq...y7ZgL)に移転されました。

ここでの重要な詳細は、これらの2件の取引が事前に全ての署名を完了し、攻撃当日に一括で提出されたことです。署名者は当時、署名した取引内容を十分に理解していなかった可能性があります。Driftチームが使用した「取引誤述」という言葉は、署名者が通常の操作を装った悪意のある管理者移転取引に署名するように誘導されたことを示しています。持続的な乱数の役割は、これらの事前署名を無期限に保存し、攻撃者が選択したタイミングで実行できるようにすることです。

置き換えられた管理者署名者はその後Drift V2プログラム(dRifty...cn33UH)を呼び出し、2つの操作を実行しました。

出典:solscan

第一に、攻撃者はinitializeSpotMarket命令を通じて、Drift上にCVTを新しい現物市場として登録しました。この過程で、新しい現物市場アカウント(BY3WYn...FVU1Cf)と2つのCVTトークンアカウントが作成され、Drift金庫のプログラム派生アドレス(PDA、JCNCMF...XXJfrw)がトークン所有者として設定されました。

Driftは多資産担保システムを運営しており、これは新しい現物市場に登録されたトークンが即座に担保として使用できることを意味します。しかし、担保として認められるためには、その市場のinitial_asset_weightとmaintenance_asset_weightのパラメータがゼロより大きい正の値に設定されている必要がありますが、デフォルトの初期値は低いかゼロに近いです。攻撃取引(4a5962R...st82X)の分析によれば、updateSpotMarketMarginWeights(または同等のリスクパラメータの更新)がinitializeSpotMarketと同じ取引内で実行され、攻撃者はCVTの担保重みを最大値に設定しました。

これは、深層防御の視点から見ると重要な設計欠陥を露呈しました。市場の立ち上げ、オラクルソースの指定、最大担保重みの設定、引き出し保護の無効化などの操作は、単一の取引内で一度に完了することができます。大口ポジションの集中リスクを防ぐために利用される重みの割引因子は、重み自体が最大値に設定された後、実際の効用を失ってしまいました。もしこのプログラムが新たに作成された市場の重み設定に上限を設けるか、重み変更に独立したタイムロックを設定していたなら、このようなすべての防御手段を一度に崩す攻撃は実現できなかったでしょう。

出典:solscan

次に、同じ取引内で攻撃者は5回updateWithdrawGuardThreshold命令を呼び出し、主要資産市場の引き出し限度を極端なレベルに引き上げました。すべての市場の限度は約500兆の統一数値に設定され、実際には異常な大額引き出しを阻止するための保護メカニズムの閾値を無限大に押し上げました。

この取引(4a5962R...st82X)は、Driftの3つのコア防衛線を同時に崩壊させました。

第一に、攻撃者が制御するSwitchboardの価格供給をオラクルとして割り当てたことで、価格メカニズムが破られました。第二に、担保重みが最大値に設定され、内在的な価値を持たないトークンが高品質な担保として認定されました。第三に、引き出し保護メカニズムの閾値が約500兆のレベルに引き上げられ、実質的に異常な引き出しを阻止するメカニズムが消失しました。

管理者権限の変更を含め、攻撃者はわずか2件の取引でプロトコルの全ての安全構造を崩壊させました。コード監査の観点から見ると、これは深いパラドックスをもたらします。Driftの契約コードは、監査で確認された通りに完全に機能しています。initializeSpotMarketは設計通りに新市場を登録し、オラクルソースを指定し、重みパラメータを設定しました;updateWithdrawGuardThresholdは設計通りに限度を変更しました。問題の根源はシステム設計自体にあり、この設計は単一の取引内で完全な攻撃チェーンを完成させることを許可しています。これはコード監査の範疇を超え、特権のアーキテクチャとパラメータ制約の設計の範疇に属します。

最終的に、攻撃者は新たに作成されたDriftユーザーアカウントを通じて、約7.85億枚のCVTを担保として預け入れました。攻撃者が制御するSwitchboardオラクルの価格供給はこの価値を数億ドルと評価し、最大の担保重みがほぼ全ての評価を有効な担保として承認しました。Driftのマージンシステムは完全に期待通りに設計通りに運営されています。問題は、このシステムに入力される各パラメータが攻撃者によって悪意をもって操作されていたことです。