セキュリティ研究者のLaxmanMuthiyahは、リモートの攻撃者がInstagramアカウントのパスワードをリセットできる可能性のある重大な脆弱性を発見しました。, したがって、侵害されたアカウントへのフルアクセスを取得します. この脆弱性は、モバイル版のInstagramのパスワード回復メカニズムにありました。.
ユーザーが自分の携帯電話番号を入力したとき, 携帯電話番号に6桁のパスコードが送信されます. パスワードを変更するには、パスワードを入力する必要があります. したがって、verify-codeエンドポイントで100万個のコードすべてを試すことができれば, どのアカウントのパスワードも変更できます. しかし、私はそのようなブルートフォース攻撃に対してある程度のレート制限があるに違いないと確信していました. 私はそれをテストすることにしました, 研究者は書いた.
競合の危険性とIPローテーションの問題
研究者のテストは、レート制限の存在を明らかにしました. どうやら, 彼は送りました 1000 リクエスト, 250 そのうちの1つは通過し、残りはレート制限されていました. Muthiyahは別の人と同じテストを行いました 1000 リクエスト, そして、Instagramのシステムが実際にリクエストを適切な方法で検証し、レート制限していることを発見しました. でも, 研究者は彼を困惑させた2つのことに気づきました– リクエスト数 彼は送ることができました, と ブラックリストの欠如:
ほんのわずかな時間で送信できるリクエストの数が限られているにもかかわらず、ブロックされることなくリクエストを継続的に送信することができました.
他のいくつかのテストの後, 研究者は、競合の危険性とIPローテーションにより、律速メカニズムを回避できる可能性があることを発見しました。.
いつ 競合状態 起こる? すぐに言った, 競合状態 デバイスまたはシステムが2つ以上の操作を同時に実行しようとしたときに発生します, しかし、デバイスまたはシステムの性質のため, 操作を正しく実行するには、適切な順序で操作を実行する必要があります.
複数のIPを使用して同時リクエストを送信することで、制限を受けることなく多数のリクエストを送信できました, 研究者は説明した. 送信できるリクエストの数は、リクエストの同時実行性と使用するIPの数によって異なります。. また, コードの有効期限が切れていることに気づきました 10 分, 攻撃がさらに難しくなります, したがって、攻撃を実行するには数千のIPが必要です.
脆弱性はFacebookに報告されましたが、研究者のレポートの情報が十分でなかったため、Facebookのセキュリティチームが問題を再現するのに時間がかかりました. でも, the コンセプトの証明 ビデオは彼らに「攻撃は実行可能です」.