Google アカウントの電話番号への総当たり攻撃(ブルートフォース攻撃)が可能だった

セキュリティニュース

投稿日時: 更新日時:

Google アカウントの電話番号を総当たり攻撃(ブルートフォース攻撃)で特定可能に

Googleのアカウント復旧フォームに存在していた仕様の隙を突き、特定のユーザーの電話番号を「総当たり(ブルートフォース)」で特定できる手法が2025年6月に明らかになりました。この報告は、脆弱性 ハンター/ホワイトハッカーであるBrutecat氏による実証調査をもとに公表されたもので、Googleはすでに該当するフォームの提供を停止しています。

JavaScriptを無効にしても使える-意外な「抜け道」

この脆弱性のきっかけは、筆者がJavaScriptを無効にした状態でGoogleの各種サービスを検証していたことにあります。

その際、アカウントのユーザー名を復旧するフォームがJSなしでも動作していたことに気づいたそうです。

このフォームは、「名前」と「電話番号」または「メールアドレス」を入力することで、該当アカウントが存在するかどうかを確認できる仕組み。通常はBot対策としてCAPTCHA(BotGuard)が設けられていますが、このノーJSフォームにはそれがなかったことが問題の本質です。

IPv6とBotGuardトークンを駆使して制限を突破

もちろん、Google側も不審なアクセスが続けばIP単位で制限をかけてきます。しかし、IPv6アドレスをランダムに切り替えながらアクセスすれば、この制限を実質的に無効化できることが分かりました。

さらに、JavaScriptを有効にした際に取得できるBotGuardトークンをノーJSフォームに挿入することで、無制限でアカウント有無のチェックが可能になることも判明。これにより、大量の電話番号を一気に検証できる環境が整ってしまったのです。

表示名の取得には「Looker Studio」を悪用

Googleは2024年に入ってから、表示名を第三者が取得しにくくする対策を強化していました。それでも、BIツールの「Looker Studio」を使えば、文書の所有権をターゲットのGoogleアカウントに移すことで、表示名が漏れてしまうことが確認されました。

この表示名と、Googleの復旧フローで表示される「電話番号の下2桁」を組み合わせると、わずかな桁数を総当たりで試すだけで、正確な電話番号を特定できてしまう という流れです。

実行速度は驚異的──1秒で数万件を照合

この脆弱性を使ったPoC(概念実証)は、1秒あたり4万件超の照合が可能という高い処理能力を持っていました。各国の番号体系に応じて推定されるパターン数も少なく、たとえばオランダ(+31)ではわずか15秒で照合を完了できるほどの効率です。

国名 必要時間(目安)
オランダ (+31) 約15秒
英国 (+44) 約4分
米国 (+1) 約20分

さらに、PayPalなど他社サービスが表示する桁数の多いヒントを活用すれば、この時間はさらに短縮できる可能性があります。

Googleはすでに対処済み、報告者に報奨金

この問題は2025年4月にGoogleへ報告され、5月には一連のフォームが修正。最終的に報告者には5,000ドルのバグバウンティ(報奨金)とスワッグ(記念品)が支払われました。フォームの脆弱性は6月初旬までに完全に無効化されたとのことです。

このようなリスクを防ぐには、個別の機能ごとのチェックだけでなく、複数のサービスが連携して悪用されるケースを想定したセキュリティ設計が不可欠です。

また、ユーザー側としても、アカウント情報の共有先や復旧情報の登録方法を見直すことが求められます。セキュリティは「万全」ではなく「最小化」の努力の積み重ねなのだと、あらためて実感させられる事例です。

参照

https://brutecat.com/articles/leaking-google-phones