MetaMaskがハッキングされた時の対処法 承認取り消しと資産保護

MetaMaskに身に覚えのない送金が発生し、入金しても即座に資産が引き出される場合、シードフレーズ(秘密鍵)が第三者に漏れている可能性が極めて高い。この状態では承認の取り消し(リボーク)だけでは解決しない。まず新しいウォレットを作成し、古いウォレットへの送金をやめることが最優先だ。

ハッキングの原因は「トークン承認」と「秘密鍵漏洩」のどちらか

ハッキングの原因は「トークン承認」と「秘密鍵漏洩」のどちらか

トークン承認とは何か

トークン承認とは、自分のウォレットにあるトークンを、特定のコントラクト(スマートコントラクト)に動かす権利を許可することだ。DeFiサービスや取引所を利用する際、画面に「承認」ボタンが表示されることがある。これを押すと、そのサービスがあなたのトークンを引き出せるようになる。

本来は利便性のための仕組みだが、悪意のあるサイトや偽のdAppsに騙されて承認してしまうと、攻撃者があなたのトークンを自由に引き出せるようになる。質問のケースでは「身に覚えのないアドレスにdelegation rights(委任権限)が付与されていた」とあるが、これがまさに悪意のある承認だ。

シードフレーズ漏洩が疑われるサイン

一方で、以下のような状況が重なる場合は、シードフレーズ(ウォレットを復元するための12〜24の単語)そのものが盗まれていると考えたほうがよい。

  • 身に覚えのない送金が繰り返し発生する
  • 入金したETHが数秒で別アドレスに送金される
  • 承認を取り消そうとしても、手数料を送ると即座に抜かれる
  • 自分が承認した覚えのないアドレスが承認リストに追加されている

特に「入金した瞬間に送金される」のは、単なるトークン承認だけでは説明しにくい。攻撃者が秘密鍵を直接握っていて、自動送金プログラムを動かしている可能性が高い。

着金した瞬間に送金されるのはスイーパーボットの仕業

着金した瞬間に送金されるのはスイーパーボットの仕業

スイーパーボットの仕組み

スイーパーボットとは、特定のウォレットに入金があった瞬間を監視し、待ち構えていた送金処理を自動で実行するプログラムだ。攻撃者は秘密鍵を入手すると、被害者のウォレットを監視リストに登録し、ETHなどのガス代(手数料)が入ったら即座に自分のアドレスへ送金する。

要は、被害者が「承認を取り消すための手数料」を入れた途端、その手数料自体が盗まれる仕組みになっている。これではrevoke(承認の取り消し)のためのトランザクションを送る前に、資金を奪われてしまう。

なぜrevokeできないのか

revokeとは、過去に付与したトークン承認を取り消す操作のことだ。しかし、これにはイーサリアムのブロックチェーンにトランザクションを送るためのETHが必要になる。ウォレットが空の状態ではガス代が払えない。

さらに、秘密鍵が漏れている場合、たとえETHを補充してもスイーパーボットが先に送金してしまう。つまり、この状況ではrevoke自体が事実上不可能になりやすい。根本的な問題は「承認」ではなく「秘密鍵の漏洩」だ。

危険なウォレットにETHを送るのは逆効果

危険なウォレットにETHを送るのは逆効果

すでに秘密鍵が漏れているウォレットにETHを送っても、同じ結果が繰り返されるだけだ。スイーパーボットは数秒単位で動作しているため、人間が手動でrevoke操作をしても先を越される可能性が高い。

このため、被害にあったウォレットへ手数料を送る行為は、攻撃者に追加の資金を与えるだけになりがちだ。まだ残っている資産があるなら、新しい安全なウォレットへ移すことを考えるべきで、古いウォレットを復旧させようと粘るのは得策ではない。

残っている資産を守るための具体的な手順

残っている資産を守るための具体的な手順

新しいウォレットを作成する

まず、公式のMetaMaskアプリまたはブラウザ拡張機能を使って、まったく新しいウォレットを作成する。シードフレーズは必ず紙に書いてオフラインで保管する。スクリーンショットやメモアプリ、クラウドには保存しないこと。

古いウォレットの残高を確認する

古いウォレットのアドレスをブロックチェーンエクスプローラーで確認し、残っているトークンを洗い出す。ただし、この確認はあくまで状況把握のためだ。秘密鍵が盗まれている場合、残高を動かすのは簡単ではない。

資産を移す際の注意点

残っているトークンを新しいウォレットに移すには、古いウォレットにガス代となるETHが必要になる。しかし、スイーパーボットが監視していると、送ったETHは即座に抜かれる。そのため、以下に挙げる方法は上級者向けで、成功率も保証されない。

  1. プライベートトランザクションを使い、ガス代と送金を同時に送る
  2. フラッシュボットや専用の保護サービスを利用する
  3. 取引所に古いウォレットの秘密鍵を渡さず、新しいウォレットへ直接送る

現実的には、秘密鍵が漏れたウォレットの残高を救出するのは非常に難しい。まずは二次被害を防ぐことに集中するのが基本だ。

トークン承認を取り消す正しい方法

トークン承認を取り消す正しい方法

Revoke.cashを使った取消手順

トークン承認を取り消すには、Revoke.cashのような承認管理ツールを使う方法が一般的だ。手順は以下の通りだ。

  1. Revoke.cashにアクセスし、MetaMaskを接続する
  2. 承認を取り消したいトークンとアドレスを選ぶ
  3. 「Revoke」を実行し、MetaMaskでトランザクションを承認する

ただし、これはあくまで秘密鍵が安全な場合に有効な手段だ。すでに秘密鍵が漏れているなら、revokeをしても攻撃者は秘密鍵を使って別の操作ができるため、根本的な解決にはならない。

それでも承認を取り消せない場合

ガス代がない、または送っても抜かれてしまう状況では、revokeは実質的に不可能に近い。この場合は、新しいウォレットへ資産を移すことを優先し、古いウォレットは破棄する判断が現実的だ。

また、Exchangeや取引所に資産の一部を預けている場合は、二段階認証の設定を確認し、不審な出金がないか早めにチェックしておくとよい。

同じ被害に遭わないための再発防止策

同じ被害に遭わないための再発防止策

シードフレーズはオフラインで保管する

シードフレーズはウォレットの全資産にアクセスできる最重要の情報だ。紙に書いて金庫などに保管する。絶対にデジタルデータとして保存してはいけない。

怪しいサイトや署名に注意する

知らないdAppsや不審なリンクから「承認」を求められたら、まず公式かどうかを確認する。無制限承認(unlimited approval)を避け、必要最小限の額だけ承認することも有効だ。

また、ハードウェアウォレット(Ledger、Trezorなど)を使えば、秘密鍵がオフラインに保たれるため、スイーパーボットによる被害を大幅に減らせる。高額な資産を扱うなら検討する価値がある。

よくある質問

トークン承認を取り消せば資産は守れますか

秘密鍵が漏れていない場合に限り有効だ。承認の取り消しはあくまで指定したコントラクトへの権限を解除するだけで、秘密鍵を盗んだ攻撃者には意味がない。入金即抜かれるような状況なら、まず秘密鍵の漏洩を疑うべきだ。

手数料を送らずに承認を取り消す方法はありますか

イーサリアムのブロックチェーンでは、トランザクションの処理にガス代(ETH)が必須だ。手数料を送らずにrevokeすることはできない。ただし、一部のネットワークでは別のトークンで手数料を支払える場合があるが、原則としてETHが必要になる。

スイーパーボットから逃れる方法はありますか

プライベートトランザクションという、公開プールに載せずに送る方法を使えば、スイーパーボットに監視されずに済む可能性がある。ただし、秘密鍵がすでに漏れている場合は根本的な対策にはならない。安全のためには新しいウォレットへ移るのが確実だ。

ハッキングに気づいたら最初に何をすればいいですか

まず新しいウォレットを作成し、シードフレーズを安全に保管する。次に、古いウォレットの残高を確認し、可能なら安全な方法で移す。同時に、同じシードフレーズを使い回している他のウォレットがあれば、そちらも新しいウォレットへ移行すること。

取引所やその他のサービスにも影響はありますか

秘密鍵が漏れたウォレットから資産を出金されただけなら、取引所に直接の影響はない。ただし、同じパスワードやメールアドレスを使い回していると関連アカウントが危険になる。取引所の二段階認証を確認し、不審なログインがないかチェックするとよい。

この記事のポイント

  • 身に覚えのない送金が続く場合、シードフレーズ漏洩の可能性が高い
  • 入金しても即座に抜かれるのはスイーパーボットの仕業だ
  • 危険なウォレットにETHを送っても逆効果になる
  • 承認の取り消し(revoke)だけでは根本解決にならない
  • 被害にあったウォレットは破棄し、新しいウォレットへ移行する
共有:

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)