教育目的のみであり、投資・法律・セキュリティ上の助言ではありません。復旧や設定の誤りにより、スマートアカウントの制御が移転したり、永久にロックされたりする可能性があります。
直接の回答
スマートアカウントを制御するのは、そのアカウントにデプロイされた認可ロジックであり、必ずしも1つの秘密鍵ではありません。所有者やバリデーターが通常操作を承認する一方、ガーディアン、復旧モジュール、エグゼキューター、アップグレード管理者が所有者の交代や取引実行の別経路を持つことがあります。
復旧は鍵1つの紛失でアカウントが使えなくなる可能性を下げますが、新たな乗っ取り面を加えます。実行を認可し、バリデーターや所有者を変更し、モジュールを導入し、コードを更新し、復旧を取り消しまたは確定できる全経路を監査してください。「所有者」「ガーディアン」という画面表示は、コントラクト上の実権の証明ではありません。
結果を権限表に記録します。正確なオンチェーンアドレス、役割、呼び出せる操作、しきい値、遅延、取消権、期限、支出範囲、アップグレード権限、独立した制御ドメインを含めます。設定変更後と、アカウントが存在する各チェーンで再確認します。
仕組み
- アカウントとコードを特定する。 チェーン ID とアドレスを確認し、実装、proxy または beacon、factory、バージョンを特定します。ERC-1967 proxy では、画面の表示を信じず、実装、beacon、管理者のスロットを読みます。
- 認可経路を列挙する。 所有者としきい値、ERC-4337 バリデーター、ERC-7579 のバリデーター、エグゼキューター、hook、fallback handler、Safe 型モジュールと guard、セッション鍵、復旧コントラクト、緊急・更新管理者を読み取ります。エグゼキューターや Safe モジュールは通常の所有者しきい値なしで実行できる場合があります。
- 復旧の状態機械を解読する。 代替所有者を誰が指名できるか、承認の数え方と期限、遅延の開始時点、取消者、確定者、復旧の置換や再実行時の挙動を確定します。すべての「ソーシャルリカバリー」が同じ順序とは限りません。
- 独立性と可用性を試す。 同じ端末、人、クラウドアカウント、パスワード保管庫、カストディアン、管理者が制御する複数アドレスは独立していません。想定する一つの障害後もしきい値を満たせ、一つの制御ドメインだけでは乗っ取れないことを確認します。
- 設定権限を調べる。 ガーディアン、バリデーター、エグゼキューター、hook、モジュール、fallback handlerの追加・削除、しきい値や遅延の変更、取消停止、アカウントと復旧コードの更新を誰が行えるか確認します。他の役割が遅延や取消経路を回避できるなら、timelock は有効ではありません。
- 監視して検証する。 復旧、所有者、モジュール、しきい値、実装、管理者の変更を購読または独立に照会します。操作後は取引をデコードし、正しいチェーンでレシート、イベント、ストレージ、最終所有者集合を確認します。画面の成功通知だけでは不十分です。
具体例
所有者 O と3人のガーディアン G1、G2、G3 がいるとします。任意の 2-of-3 が新所有者 N を提案でき、その後 24-hour の遅延が始まり、期間中は O が取り消せ、満了後は誰でも確定できます。復旧モジュールは最終取引について O の承認なしに所有者変更関数を呼べます。
表示上は分散復旧ですが、G1 と G2 は同じクラウドアカウントにバックアップされたアプリです。その認証情報が漏れると、攻撃者1人が実質的な 2-of-3 を得ます。N を提案し、24 hours の間に監視や取消が失敗すれば、O の秘密鍵が盗まれていなくても制御が移ります。
そのため監査では G1 と G2 を1制御ドメインとし、モジュールのアドレスとコードを検証し、安全な端末から取消を試し、遅延を開始するイベントを特定し、管理者が即時にモジュールを交換できないか確認します。安全に元へ戻せる文書化済みテスト手順がない限り、資産を持つアカウントで実際の復旧を試しません。
リスクと対策
- 相関するガーディアン: 本当に独立した端末、資格情報、人、カストディアンを使い、シードフレーズを集約せず連絡・復旧手順を試します。
- 強すぎるモジュールやエグゼキューター: 導入コードと正確な呼出範囲を調べます。未使用モジュールは文書化された経路で外し、オンチェーンで確認します。
- 弱いしきい値: 乗っ取り耐性と可用性を共に評価します。署名者が同じドメインなら名目上高いしきい値は無意味で、到達不能なしきい値はロックを招きます。
- 遅延の欠如または回避: 遅延、開始イベント、短縮できる者、即時所有者変更の全経路をオンチェーンで確認します。
- 機能しない取消: 検知と取消を演習し、必要ならネイティブ gas と独立送信経路を保ち、旧所有者、定足数、別役割のどれが必要か確認します。
- アップグレード乗っ取り: 実装、beacon、管理者の変更を監視します。無遅延で更新できる管理者は、すべての復旧規則を変えられるものと扱います。
- 悪意ある古い画面: チェーン、アカウント、モジュール、提案所有者、しきい値、遅延、calldataを独立検証します。「復旧」サービスにシードフレーズや秘密鍵を渡してはいけません。
- 偽の完了: 取消・確定後にレシートと最終ストレージを確認します。意図した所有者とモジュールが有効で、不要な提案が実行不能か調べます。
無断復旧を見つけたら、無関係な署名を止め、提案 ID、取引 hash、calldata、ブロック、モジュールアドレス、現在状態を保存します。安全な端末と独立 RPC で警告を確認し、利用可能なら文書化された取消経路を使い、確定、更新、モジュール変更、資産移動を監視します。既に制御を失った可能性があるなら、事前の事故対応計画と認証済み連絡先だけを使います。即興の移転は front-running されたり移転先を露出したりします。
よくある誤解
- 「資産を動かせるのは所有者だけだ」。 バリデーター、エグゼキューター、モジュール、復旧コントラクト、更新コードに追加経路があり得ます。
- 「三人のガーディアンは三つの独立主体だ」。 コントラクトはアドレスの有効承認を数えるだけで、共用端末、バックアップ、管理者を検出しません。
- 「
24-hourの遅延があれば必ず対応できる」。 監視、使える取消権、gas、取引取り込みが必要で、別の特権経路が遅延を回避する場合もあります。 - 「ガーディアンを削除すればアクセスは終わる」。 最終オンチェーン設定と、その主体に紐づく他の役割、モジュール、セッション鍵、保留中の復旧を確認します。
- 「サポートはどのスマートアカウントも戻せる」。 自己管理アカウントを変えられるのはオンチェーンに記録・事前設定された権限だけです。有効な所有者・復旧経路がなければアクセスは永久に失われ得ます。