Malwarebytesは6月10日(米国時間)、「Google bug allowed phone number of almost any user to be discovered|Malwarebytes」において、Googleアカウントの再設定用電話番号を窃取できる脆弱性が発見されたと報じた。

この脆弱性はbrutecatと名乗るセキュリティ研究者により発見された。脆弱性を悪用することで、数秒から十数分ほどで電話番号を特定できるとされる。

  • Google bug allowed phone number of almost any user to be discovered|Malwarebytes

    Google bug allowed phone number of almost any user to be discovered|Malwarebytes

ユーザー名復元ページへの総当たり攻撃

研究者が公開した情報によると、脆弱性はJavaScriptを必要としないユーザー名復元ページに存在したという。このページは回復用の電子メールアドレスまたは電話番号が、特定の表示名に関連付けられているか検証する機能を提供しており、単純なHTTPリクエストを送信するだけで検証できるという(参考:「Bruteforcing the phone number of any Google user」)。

しかしながら、Googleはこの機能にレート制限を設けており、すべての電話番号の確認(総当たり攻撃)を試みると最初の数回でCAPTCHAによる人間確認が行われ、攻撃を妨害される。研究者はこの制限を回避するために、大量のIPv6アドレスを使用した見かけ上の回避策を実施しているが、それでも完全には回避できなかったとしている。

研究者はその後、このレート制限がJavaScriptを必要とするBotGuardで実装されていることに思い至り、JavaScriptの無効を指定するだけで回避できることを発見した。

膨大な攻撃回数を軽減する

この攻撃手法は電話番号の総桁数で表現される最大の数値がそのまま最大の試行回数となる。日本国内の場合は11桁、つまり最大で約1,000億回となる。毎秒10万回試行できたとしても10日以上かかることになり、Googleにサイバー攻撃を検出される可能性がある。

問題はこの他にも残っており、標的アカウントの表示名を何かしらの手段で取得する必要がある。研究者はこれら問題について、Looker Studioおよびgoogle/libphonenumberの番号検証機能を使用することで解決し、表示名、国番号、市外局番、桁数の入手に成功している。

この結果、桁数の比較的大きい米国ユーザーで約20分、桁数の少ないシンガポールで約5秒の早さで電話番号を特定することに成功している。

対策

Googleは研究者からの報告を受け、6月6日までに脆弱性を修正した。MalwarebytesによるとGoogleの広報担当者は次のように述べたとされる。

「この問題は修正されました。われわれは脆弱性の報奨金プログラムを通じてセキュリティ研究コミュニティと協力する重要性を常に強調しており、この問題を報告してくださった研究者に感謝しています。このような研究者からの報告は、ユーザーの安全につながる問題の迅速な発見と修正を可能にする多くの方法の一つです」

同社はこの脆弱性の悪用はこれまでのところ確認されていないと説明している。しかしながら、Googleアカウントに登録している電話番号の流出は、SIMスワップ攻撃などによるアカウント乗っ取りにつながるリスクがある。Googleには他のすべてのエンドポイントについて、同様の脆弱性が存在しないか検証することが望まれている。