Solanaのdrainerの中には、SOLを抜き取るだけでは終わらないものがあります。ウォレットのアカウントそのものを書き換え、SOLを送れない状態にし、あなたが追加したSOLも攻撃者が引き出せるようにします。トークンとNFTはたいていそのまま残りますが、通常の移し方であるウォレットアプリからの送金は失敗するか、攻撃者にさらにSOLを渡す結果になります。
このガイドでは、何が変わったのか、なぜウォレットにSOLを送ってはいけないのか、そして別のウォレットに手数料を払わせながら残りを新しいウォレットへ移す方法を説明します。
Solanaウォレットが変換されたかどうかはどうすればわかりますか?
トークンが残っているのにウォレットからの送金が失敗し、エクスプローラーでアドレスが自分ではないauthorityを持つnonceアカウント、またはプログラムが所有するアカウントとして表示されます。Sol Incineratorに接続すると、乗っ取りの時刻とトランザクションへのリンク付きで「ウォレットがハッキングされています」と表示されます。
通常のSolanaウォレットは、データを持たないシンプルなSystem Programのアカウントです。変換されたウォレットはアドレスこそ同じですが、その裏にあるアカウントが変わっています。次の三つの方法で確認しましょう。
- アドレスをエクスプローラーで開く。 Solana Explorerは、変換されたウォレットについてauthorityのアドレスを含むnonceアカウントの詳細を表示します。そのauthorityが自分のアドレスでなければ、アカウントのSOLは他人が管理しています。
- 原因となったトランザクションを探す。 私たちが調べた事例では、被害者は二つのSystem Program命令を含むトランザクションに共同署名していました。
allocateがウォレットのアドレスに80バイトのデータを与え、initializeNonceが攻撃者をauthorityとするdurable nonceアカウントに変えていました。ネットワーク手数料は攻撃者が払っていました。ある事例では、被害者のSOLの引き出しが30秒後に続きました。 - ウォレットをSol Incineratorに接続する。 接続時にアカウントを読み取り、乗っ取りを見つけると、乗っ取りの時刻とSolscanへのリンク付きで警告を表示します。
別の変更を使うdrainerもいます。アドレスをプログラムに割り当てる方法です。結果はあなたにとって同じで、ウォレットはもう自分で費用を払えません。
ハッキングされたウォレットがネットワーク手数料を払えないのはなぜですか?
durable nonceアカウントは、トランザクションを事前に署名するためのSolanaの通常の機能です。nonceの値とauthorityを保存し、nonceを進めること、authorityを変更すること、アカウントのSOLを引き出すことは、そのauthorityにしかできません。drainerがあなたのアドレスをこのアカウントに変えると、あなたのアドレスのSOLに対するauthorityになります。
- SOLは通常の方法では出ていけません。 System Programはデータを持つアカウントからのSOL送金を拒否し、あなたのウォレットは今nonceのデータを持っています。
- 手数料は攻撃者が奪えるSOLから払われます。 nonceアカウントはrentの準備金を超えるSOLからしかネットワーク手数料を払えず、authorityはそのSOLが現れた時点で引き出せます。
- プログラムが所有するアドレスは手数料をまったく払えません。 Solanaが手数料を受け付けるのは、シンプルなSystemアカウントかnonceアカウントだけです。
- 元に戻すことはできません。 nonceアカウントのauthorityを変更できるのは現在のauthorityだけなので、あなたが署名するどのトランザクションでも取り戻せません。
トークンの事情は異なります。各トークンアカウントはあなたのアドレスを所有者として記録しており、トークンプログラムが確認するのはウォレットのアカウントの状態ではなく、あなたの署名です。あなたの鍵は今もすべてのトークンとNFTを動かせます。必要なのは、別のウォレットにネットワーク手数料を払ってもらうことだけです。
手数料用の少額であっても、ハッキングされたアドレスにSOLを送らないでください。ボットが監視していると考えてください。ウォレットの「ロック解除」や「修復」をうたうサイトやダイレクトメッセージからの署名要求には応じないでください。ダイレクトメッセージでの有料の回収サービスの勧誘は、被害後によくある二次詐欺です。
ハッキングされたSolanaウォレットからトークンを移すには?
別のウォレットがネットワーク手数料を払い、ハッキングされたウォレットはトークンの所有者としてだけ署名するトランザクションを使います。ウォレットアプリは送金元のウォレットに手数料を請求するため、Sol Recoveryのような侵害されたウォレット向けの回収ツールを使い、すべてを新しいウォレットに送りましょう。
Sol Recoveryは、侵害されたSolanaウォレット向けの独立したサービスです。変換されたウォレットを識別でき、無料アカウントでは資産を受け取るウォレットと手数料を払うウォレットを分けられます。
- 新しいウォレットを作る。 リカバリーフレーズや秘密鍵をウェブサイトに入力したことがあるなら、新しいリカバリーフレーズで新しいウォレットを作ってください。古いフレーズの下に作った別のアカウントは新しいウォレットではありません。
- 残っているものを確認する。 ハッキングされたアドレスをSol Recoveryに貼り付けます。ウォレットを接続せずに、トークン、ステーキング中のポジション、DeFiのポジション、コレクティブル、ドメインをスキャンします。
- 安全なウォレットと支払い用ウォレットを設定する。 新しいウォレットを送り先に、ネットワーク手数料を払う別のウォレットを支払い用に追加します。資金を入れるのは支払い用ウォレットだけで、ハッキングされたアドレスには決して入れないでください。
- 確認して署名する。 ハッキングされたウォレットは、トークンの所有者として各送金に署名します。承認する前に各トランザクションの内容を確認し、資産が届いたことを確かめてください。
Sol Recoveryは、決まった時刻にロックが解除されるステーキング中やロック中のポジション向けに、ロック解除の瞬間に攻撃者と競うボットサービスも提供しています。このサービスは回収額の10%を手数料とし、即座に署名するためにハッキングされたウォレットの秘密鍵を必要とします。これは本当に信頼に関わる判断です。共有するのはすでに侵害されたウォレットの鍵だけにし、新しいウォレットのリカバリーフレーズは決して共有しないでください。
Sol RecoveryはSol Incineratorとは提携していません。署名する前に、現在の手数料と各トランザクションを確認してください。開発者は同じ送金を自分で作ることもできます。トークンの送金は、どのウォレットが手数料を払っても、トークンの所有者が署名すれば有効です。
トークンアカウントのSOLはまだ受け取れますか?
はい。空のトークンアカウントには返金可能なrentのデポジットがあり、閉じるとそのSOLが戻ります。通常の受け取りではウォレット自体に支払われ、ここではそれが攻撃者への支払いを意味するため、Sol Incineratorは変換されたウォレットを別の方法で扱います。
変換されたウォレットを接続すると、Sol Incineratorは安全なウォレットのアドレスを求め、回収したSOLをそこへ支払います。ネットワーク手数料は自ら支払い、その手数料と通常のクリーンアップ手数料は回収したSOLから差し引かれます。ハッキングされたアドレスには何も送られません。空のトークンアカウントの閉鎖と余剰rentの引き出しには対応していますが、バーンなど、ウォレット自身が手数料を払う必要がある操作には対応していません。
トークンを移すと、そのトークンアカウントは空のまま残ります。回収ツールがそれを閉じない場合は、後でもう一度受け取って、そのrentも回収してください。
ほかに確認すべきことは?
- 乗っ取りのトランザクション全体を読む。 資産を移動したり、delegateを承認したりしている可能性もあります。報告のために、署名と見覚えのないアドレスをすべて記録してください。
- ステーキング中やロック中のポジションを洗い出す。 移動する前にアンステークや待機期間が必要なものがあり、攻撃者も同じ瞬間を待っているかもしれません。
- 資金を受け取るすべての場所で古いアドレスを置き換える。 取引所の出金先リスト、支払い設定、airdropの登録などでハッキングされたアドレスに支払われるものは、今は攻撃者に支払われます。
- そのアドレスの使用をやめる。 資産を移し終えたら、少額であってもウォレットを再利用しないでください。
