Facebook/Instagram の 2FA バイパスが FIX:バグ報奨金は $27,000

Researcher received a $27,000 bounty for 2FA bypass bug in Facebook and Instagram

2023/01/30 SecurityAffairs — Instagram/Facebook に影響を与える2要素認証 (2FA) バイパスの脆弱性を報告したことで、研究者の Gtm Manoz は $27,000 のバグバウンティを得た。この脆弱性は、電話番号/メールアドレスの確認のために、親会社である Meta が使用しているコンポーネントに存在する。Mänôz は、このソフトウェアがレート制限の保護メカニズムを実装していないことに気づいた。そして、Meta Accounts Center を使用して、ターゲット・ユーザーの認証済み Facebook 携帯電話番号を確認することで、Facebook の2要素認証を回避した。


この脆弱性は Mänôz により、2022年9月に Meta に報告され、2022年10月に対処された。Meta のバグバウンティ・プログラムのレポートには、「2FA Bypass – ネパールの Gtm Mänôz が報告したバグも修正した。このバグにより、攻撃者は、レート制限の問題を悪用して、誰かの電話番号を確認するために必要な検証ピンをブルートフォースし、SMS ベースの 2FA をバイパスする可能性を生じさせる。この報告に対して、我々は $27,200 の報奨金を授与した」と記されている。

Facebook bug


Mänôz は、Meta Accounts Center の個人情報セクションで、リンクされた Instagram と Facebook アカウントの両方に、ユーザーがメールと電話番号を追加できる問題に気付いた。それらは、メール/電話で受け取る6桁のコード入力で確認できる。つまり、レート制限保護がないことで、不明/既知のメールアドレスと電話番号を、誰もが確認できることに気付いた。

この脆弱性により、 Instagram と Facebook アカウントに関連付けられた、標的の電話番号を知っている攻撃者は、6桁のコードに対してブルートフォース攻撃を行い、そのコードを用いて被害者の電話番号を、自身のコントロール下にあるアカウントに割当可能になる。

Mänôz のブログには、「メール/電話などのコンタクト・ポイントを追加している間に、以下の URL に対してポスト・リクエストを行い、検証用の6桁コードを送信するようにサーバーに要求する。続いて、任意のランダムな6桁のコードを入力し、Burp Suite などの Web プロキシを使用してリクエストを傍受する」と詳述されている。

/api/v1/bloks/apps/com.bloks.www.fx.settings.contact_point.add.async/endpoint

Facebook flaw


さらに彼は、「そして、侵入者に上記のリクエストを送り、pin_code の値に $$ プレースホルダーを挿入し、確認コードをブルートフォースで取得する。ここには、レート制限の保護が全くなかったので、コンタクト・ポイントの検証をバイパスできた。Facebook と Instagram のアカウントから被害者の電話番号のロックを解除する 2FA は、セキュリティ上の理由で無効になっている」と続けている。

/api/v1/bloks/apps/com.bloks.www.fx.settings.contact_point.verify.async/endpoint

Mänôz は、「また、電話番号が部分的に確認された場合には、つまり 2FA だけに使用されている場合には、2FA が取り消され、その電話番号も被害者のアカウントから削除される。Instagram のコンタクト・ポイント (メール/電話) とリンクしている Facebook のアカウントについて、両方を検証するエンドポイントが同じだった。そのため、Instagram と Facebook における、未知/既知のコンタクト・ポイントにおける検証を回避できた (Facebook で既に存在するメールは追加できなかった) 」と締めくくっている。

Facebook と Instagram の統合により、セキュリティとプライバシーが置き去りになったアカウント管理になってしまったのでしょう。Facebook だけを見ても、ページ間でのコンテンツ共有のための手続きが、コロコロと変わっている感じがします。この先、いったい、どうなってしまうのだろうと、とても心配な Meta ですね。

%d bloggers like this: