ハッカーがSMS OTPでのログインを使用してWebサイトで継続的にレート制限を回避できる速度と頻度はどれくらいですか?同じIPアドレスがSMS OTPをx回以上トリガーすると、レート制限がアクティブになります。
誰かがボットネットにアクセスできる場合は、たとえ小さなものでも、1分間に数回から発生しているIPを変更したり、任意の瞬間に100万のIPからアクションをフラッディングしたりする可能性があります。
ボットネットを持たない個人には、ISPモデムをリセットするなど、いくつかの方法があり、場合によってはIPをリセットします。電話の機内モードをオン/オフにすると、IPの変更もトリガーされます(MechMK1は、これが完了するまでに3秒ほどかかる場合があると報告しています)。
また、パブリックWiFiネットワーク間で変更することもできます。
一連のVPNとプロキシ、またはユーザーが出口ノードを選択できるVPNを使用することも機能し、異なる出口ノードを持つサービスはこの切り替えを数秒で実行できます。設定したスケジュールに従ってIPをランダム化できるプロキシ/ Torユーティリティもあります。 Janus ツールのデフォルトの変更時間は1分ですが、変更することができます。
したがって、実際的なケースでは、攻撃者がSMSコードがサーバーから戻ってくるのを待っている場合、それらは時間によってのみ制限されますSMS codeを受け取るのにかかります。
まだ誰もこれに取り組んでいないようですが、IPベースのレート制限に最大の問題であるIPv6を紹介したいと思います。
IPv4アドレスからIPv6アドレスへの場合と同じロジックを(単純に)適用した場合(つまり、特定の試行回数後にアドレスをブロックする場合)、レート制限は約0秒で阻止されます。
どうして?まあ、単純なバージョンは、IPv6アドレス指定スキームがIPv4とは実質的に異なるということです。 IPv4は最高の比率で割り当てられているため、複数の家や物理的な街区でも同じ外部アドレスを持つことができます。これは、各machineが慣例により/ 64ブロックアドレスが割り当てられているIPv6とは大きく異なります。/x表記に慣れていない場合は、アドレスの最初の64ビットは固定され、残りは空いていることを意味します。 IPv6アドレスは128ビット長であるため、これは、各マシンが慣例により、2 ^ 64個の一意のアドレスを持ち、自由に使用できることを意味します。 IPv4と同じアプローチを使用し、1つのアドレスを単にブロックした場合、攻撃者は本質的に無限のアドレスのプールからまったく新しいアドレスを選択する可能性があります。レート制限は完全に破棄され、無制限の数のOTPコードを必要なだけ迅速に送信できます。 OTPコードが6桁の場合、攻撃者は幸運になるまでフラッディングを続ける必要があるため、これは間違いなく2FA実装を役に立たないものにします。実世界でのテストでは、この方法を使用して6桁のOTPをシングルスレッドで6時間以内に破ることができたので、非常に実用的で非常に現実的な脅威でした。
これを止めるために私たちは何ができますか?自然な選択は、リクエスターの/ 64ブロック全体が特定のアドレスだけでなく制限に達したときに禁止することです。表面的には、攻撃者がプール内のアドレスを使用できなくなったことを意味するため、これは適切に思われます。
ただし、これはまたはが機能しないと考える企業が多すぎても機能しません。問題は、通常、ホストには慣例として/ 64が割り当てられていますが、ネットワークは複数のデバイスを持つように設計されているということです。つまり、ホームネットワークでさえも、多数のデバイスを処理できるように、大量の/ 64ブロックが与えられることになります(なぜそうしないのですか?私たちは使い果たしません!)。私の場合、必要に応じてデバイス間で分割するために、ISPから/ 56ブロックが与えられました。つまり、私は実際に2 ^ 8(または256)/ 64ブロックを持ち、私が好きなようにネットワーク上のデバイス間で分割することができます。
/ 56ブロック全体を1つのホストに渡すことを妨げるものは何もないため、レート制限を循環して回避するために256/64ブロックを自由に使用できます。ユーザーが/ 64ブロックごとに5つのOTPコードを試してから一定期間禁止する場合、攻撃者は(住宅用接続を使用して!)クールダウン期間を待たなければならない前に、1,280コードで攻撃することができます。 (ボットネットやプロキシーなどを使用した)古典的なIPv4の迂回の試みと比較すると、これは基本的に、すでに無料で提供されているものを使用するだけで巨大を得られます。これをボットネットと組み合わせると(または、「エンタープライズサイズ」のIPv6プールを大きくするために少額を支払うだけでも)、IPベースのレート制限は非常に安く、再び阻止されます。
ならどうしよう?レート制限の目的で/ 56sをブロックし始めますか?できますが、一部の人々に/ 56ブロックが与えられても、他の人々には与えられないので、これはかなり残念な影響を及ぼします。/52ブロックと/ 50ブロックを簡単に購入する問題を解決せずに、理由もなくランダムな人を誤ってブロックした。次の合理的な選択は、リクエストがどの範囲から割り当てられているかを試して推測することです。これは機能しますが機能しますが、ISPがこの種の情報を公開またはリリースしていないため、正確には不可能です。これがテーブルから外れていると、私(私の知る限り!)は選択肢から外れます。 IPベースのレート制限は、IPv6の仕組みを実際に理解している攻撃者に対して、IPv6では基本的に機能しません。
しかし、すべてが失われるわけではありません! IPベースのレート制限は役に立たないが、概念としてのレート制限はまだ終わっていない。アクセスを制限するには、別のリソースを選択するだけです。 IPアドレス(または範囲、ブロックなど)がOTP検証を試行できる回数を制限する代わりに、アカウントがOTP検証を実行できる回数を制限する必要があります。 OTPの試行が一定回数失敗した後にアカウントをロックアウトし、ユーザーにメールのリンクをクリックしてOTPを再度アクティブにするよう要求することにより、攻撃者は、使用できるアドレスの数に関係なく、アカウントのOTPをブルートフォースすることができなくなります。この制限をかなり高く(たとえば25程度)設定することにより、通常のユーザーは、認証システムに何か問題がなければ決してポリシーに不便をかけない(そしてとにかく回復を開始する必要があるでしょう)。
このような手法は、Instagram、Facebook、LastPass、およびSMSリセットコードとOTPの両方に有効です。多くの場合、効果的であり、私の考えではIPv6が単にユビキタスになっているだけでなく、多くの場合必須である世界でブルートフォース攻撃をブロックします。かなりの数のネットワーク(主にモバイル!)がゆっくりとIPv6のみに移行し、プロキシを使用して「レガシー」IPv4リソースにアクセスしているためです。
ハッカーが botnet を所持している場合、何千ものIPアドレスを制御でき、自由に切り替えることができます。したがって、IPアドレスを変更できる頻度と速度に実際的な制限はありません。