[NFTアーティスト向け]メタマスクのApproveは注意って言われるけど、結局Approveって何なのか②

前回の記事の続きです。
[NFTアーティスト向け]メタマスクのApproveは注意って言われるけど、結局Approveって何なのか
力尽きて書けなかった"そんな簡単に資金を抜かれるのか"について書いていこうと思います。
おさらい
前回のおさらいをざっくりします。
- Approveとは、自分の資産を移動できる権利を他の人に与えること
- Approveした相手は、自分の資産を好き勝手に移動できる(=盗むこともできる)
- しかし、ApproveはNFTマーケットやDeFiの構築のために必須機能。誰でも簡単に使えるようになっている
そんな簡単に資産を抜かれるのか
本題です。結論から書くと、資産を抜くようなサイトを作るのは簡単ですし、3回くらいボタンを押したら資産を抜かれます。具体的に書いていきます。
※絶対に真似しないでください
泥棒側の目標
まず、資産を抜く泥棒側の目標を考えてみます。これはとてもシンプルです。
- 誰かに、自分をApproveさせる
これだけです。
サイトの構築
続いて、誰かに自分をApproveさせる詐欺サイトを作ってみます。悪用する価値もないほどコッテコテのものを作ってみます。※テストネットと呼ばれる試験用のネットワークで作成するため、誰かが間違えて使ったとしても、現実のETHが失われることはありません。
以前プログラミングの勉強の時に使ったサイトを流用しただけですが、ちょっとそれっぽい気がします。コピペするだけで作れます。ただ、これだけだとなかなかすぐ押してくれる人はいなさそうなので、親切にClaimまでの手順と焦らせるための制限を追加してみます。
どうでしょうか(デザインがひどい)。手順を読んでなるほどと思いながらボタンを押してくれる人が出てくるかもしれません。また、人数制限っぽいものも書いてみました。急がなきゃ!と思ってあまり確認せずボタンを押してくれそうです。
実演
実際に上の手順通りやってみたらどうなるか試してみます。現在の残高は約0.02WETHです。これを盗まれてみましょう。
まずはウォレットを接続してみます。これは良くある処理で特に問題はありません。接続します。
するとサイト上に「Claim」ボタンが出てきたので押してみます。メタマスクが開き「Give permission to access your WETH?」と出てきました。やばそうな気がしますが、英語よく分からないし人数制限が来そうだしサイトに署名しろと書いてあったので、そのまま進めてみます。ガス代も$0.26と安いので、きっと大丈夫でしょう。※大丈夫じゃない
ボタンを押してみましたが、特にトークンが配布された様子はありません。もちろん全く価値のないSAGIトークンを作って配布することもできますが、割愛します。
この時点ではまだ資産は抜かれておらず、0.02WETH残っています。このため、盗まれる側の人は「配布に時間がかかるんだろう」と思い、ちょっと出掛けに行くかもしれません。ただし、実際の状態はこんな感じです。
次は泥棒側視点を見てみます。先ほどのサイトを流用して「お金を引き出せるボタン」を作ってみました。このボタンは泥棒しか使えないように設定されているので、メタマスクのアカウントを泥棒側のものに切り替えて、ウォレットを接続します。そして「お金を引き出せるボタン」を押します。
これで盗まれる側からお金を引き出せました。アカウントを切り替えて、盗まれる側のメタマスクの残高を見てみます。
先ほどまで0.02WETHあったはずがほとんどなくなってしまっています。以上の通り、Approveさえさせれば、泥棒は簡単に資金を盗み取ることができてしまいます。
対策
最後に簡単にできる対策について書いてみます。
1.怪しいサイトとメタマスクを繋げない
超基本ですが最強です。
2.MetaMask(メタマスク)の操作をする前に誰かに聞く
どうしてもメタマスクを繋げて操作したい場合は、操作前に信頼できる人に聞いてみましょう。大事なのは操作前という部分です。たまに見かけるのが「とりあえず押してみたんだけどよく分からない!」みたいなケースなのですが、他人事ながらヒヤヒヤします。必ず押す前に誰かに聞いてみてください。
3.メタマスクに表示されている内容を読む
英語なので抵抗があるとは思いますが、現代にはGoogle翻訳やDeepLなどの文明の利器があるので活用しましょう。
最後に
思ってたより長くなり、大変読みにくくなってしまい反省しております……。世の中の記事書いてる人はすごいんだなと改めて感じました。最後に、努力されているNFTアーティストの方々が詐欺に合わないことを祈っております。
