reCAPTCHA V3は簡単に突破されてしまう可能性アリ。トークンの量産が可能

reCAPTCHAというGoogleが提供しているBOTやスパム対策のためのサービスをご存じですか?

誰しも一度は「I’m not a robot」や「私はロボットではありません」というメッセージが添えられたチェックボックスを見たことがあると思います。これは従来のreCAPTCHA V2です。

最近はreCAPTCHA V3というものが登場し、チェックボックスにチェックをいれたり、画像を選んで認証するといった作業をする必要がなくなりました。めんどい作業をせずとも自動的に判断してくれるので良いシステムに思えますが、私は気づいてしまいました。

あれ?これトークンの量産可能じゃね?

トークンの量産ができてしまう

最近、私は自分のゲームサイトにreCAPTCHA V3を設置しました。というのもゲームでBOTを使おうと試みる人がいるのです。プロキシを使って大量にBOTが接続してくるので、IPによるアクセス制限なども難しいため、reCAPTCHAを使うことにしたのです。

ユーザーがゲームサーバーに接続(認証がおわるまではゲームをプレイできない)

reCAPTCHAがユーザーを人間であると判断するとトークンが発行される

ゲームサーバーにトークンを送信する

ゲームサーバーでトークンを受け取ったらGoogleに送って有効なトークンかチェックする

有効なトークンであったらゲームプレイを許可する

ユーザーがゲームをプレイできる

流れとしては上記のようなかんじになっています。認証がおわるまでプレイはできず、無効なトークンだった場合は接続を切断します。

ゲームサーバーが複数あって、毎回接続するたびにキャプチャによる認証を行うようにしてあるため、ユーザーがゲームサーバーを切り替えるたびにreCAPTCHAをリセットして認証実行し、新しいトークンが発行される。

ここで気づいてしまった。キャプチャをリセットして認証実行すれば簡単に新しいトークンできちゃうじゃん

これ自動化できるんじゃね?と思ってJavaScriptで一定時間ごとにキャプチャのリセットと認証を実行するものを作ってみた。実行してみると

自動でreCAPTCHAのトークンが大量に生成された

これ大丈夫なのん!?簡単に突破されそう・・・って前から思っていました

ついに突破される!

ほかの人のゲームサイトでreCAPTCHA V3が突破されてしまった

私と同じようにインビジブルキャプチャ(reCAPTCHA V3)を使用してBOT対策を行っていたゲームサイトBOTを使用できてしまうスクリプトが配布されたのだ。

私はそのスクリプトをみてみたが、やはりJavaScriptのsetInterval(一定時間ごとに動作を繰り返すことができる関数)を使用してトークンを量産するという仕組みだった。

トークンを量産

ボットサーバーに送信

ボットがトークンを使ってゲームサーバーに接続

ボットがゲーム内に大量に入ってこれてしまう

これじゃあ全然BOT対策になってないぞぉ・・・

対策を考える

私のゲームサイトでは未だにreCAPTCHA V3を使用している。私は自分のサイトで実験したのでreCAPTCHAのトークンが量産できてしまうことを知っている。もしかしたら今後突破されてしまうかもしれない。

すでに対策として、ゲームサーバーに送信するパケットを暗号化する、暗号化するのに用いるスクリプトを難読化するといったことをしている。しかし、実際やったことがあるのでわかるが、スクリプトの難読化をしても解読できてしまう。

知識を持っている人ならば、突破するのは簡単かもしれない。

頻繁に認証を行う必要がない場合であれば、reCAPTCHA V2を使うほうが対策としては強いかもしれない。reCAPTCHA V2は量産しようとすれば画像認証や音声認証を要求してくるので、ほとんどの人はボットを作ることができない。画像認証などを高確率で突破するツールや画像認証を代行してもらうサービスがあるが、コストがかかるためそこまでしてBOTを作ろうとする人は少ない)

とりあえずGoogleさんには早急に対策をしてもらいたい。量産を検知するシステムとか・・・。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする