web-dev-qa-db-ja.com

CAPTCHAを有効にし、ログインをレート制限しても、ブルートフォースはありそうな脅威ですか?

CAPTCHAがシステムのアカウントロックアウト制御で有効になっている(5回連続して失敗した後、アカウントは15分間ロックされる)と仮定します。

総当たり攻撃はまだありそうな脅威ですか?

38
Sayan

あなたが説明する保護はあなたが考慮すべき良いものですが、まだ弱点があるかもしれません:

  • 多くのCAPTCHASはロボットで解決できます、またはあなたは簡単に人々に支払ってまとめて解決することができます(そのサービスを販売する会社があります)。
  • アカウントのロックアウトは良い考えですが、IPに基づいて行うと、ボットネットにアクセスできる誰かが、別のIPから単一のアカウントへのログインを再試行して、侵入する可能性があります。
  • オフラインデータベースがリークされた場合、ブルートフォースは依然として問題です。攻撃者がパスワードハッシュにアクセスできる場合、攻撃者は自分のシステムで必要なすべてを試すことができます。そのため、良いハッシュを使用する必要があります。
66
Anders

多分。

「ブルートフォース」の定義方法によって異なります。

X回の不正な試行後のロックアウトは、攻撃者が単一の標的を狙っているアカウントを保護するのに最適です。

攻撃者がいくつかの一般的なパスワード「password、password123など」を選択した別のシナリオがあります。そして、単一のユーザーを攻撃するのではなく、システムで知っているeveryアカウントで4つの一般的なパスワードを試します。

User: Jim
PW: password, password123, letmein, secret

User: Bob
PW: password, password123, letmein, secret

User: Alice
PW: password, password123, letmein, secret

これは、攻撃者がダークネットでの再販のために資格情報を収集するか、パスワードが再利用された可能性がある他のサービスに横に移動しようとしているシナリオでより一般的です。

アカウントまたはIPレベルごとではなく、全体の無効なログインの割合をカウントするために何かを追加することをお勧めします。

39
Daisetsu

それは別の意味での脅威です。 5回失敗した後でアカウントを15分間ロックすると、効果的にDoSメカニズムが組み込まれています。

私は本当に侵入したくないと思いますが、私は大混乱を引き起こすだけで大丈夫です、問題ありません。ランダムなユーザー名で毎秒数千回ログインするだけです。ねえ、私は気にしないCAPTCHAをすることさえ気にしないでしょう。 faillock upをするだけです。

一定数の失敗後の一定時間よりも優れた戦略は、二次(または指数)成長です。一部のAVMルーターはそれを行います。最初のログイン失敗、15秒のロックアウト、次の失敗は30秒などです。これは、正当なユーザーの手間が大幅に減り、攻撃者にとってははるかに面倒です。
DoSをより困難にするには、IPアドレスとアカウント名を含む一種のレシピが必要です。アカウントとIPのペアごとの最大遅延を許容値に制限します。そうしないと、正当なユーザーが依然として簡単かつ不確定にDoSされる可能性があります。ただし、指数関数的増加は、「無限の試行」問題をより適切に処理します。

ユーザー名とパスワードのペアオンラインをブルートフォースで実際に見つけることは、まあ、人々が愚かではないと仮定すると、実質的に絶望的です。あいにく、人々は愚かですので、彼らがトップ10の愚かなパスワードの1つを持たないことを想定することはできません。だから、はい、そこにも少し脅威があります。特に、1つのサーバーで1人のユーザーをターゲットにするのは難しいかもしれませんが、純粋にユーザー名ベースの制御システムでは、同じサーバーで1,000人のユーザーを並行してターゲットにすることができます。問題(それぞれのスコアリングは1つだけ失敗します!)と、1,000台のサーバーで並列に実行できます。また、このスクリプトを数週間(数か月、数年...)実行し続けて、15〜20分ごとに再試行しても、コストはかかりません。

したがって、individualアカウントの場合、攻撃者としての可能性は非常に小さくなりますが、数が増えるとvirtually infinityyouどこかで誰かを殴るのは当然ですが、結局それは避けられません。それ以外の場合は、1,000人のユーザーを並行して試すのは簡単なので、また計算でIPアドレスを考慮する必要があることは明らかです。それでも、数千のボットを持つボットネットに対して100%の保護を提供するわけではありませんが、攻撃の効果がやや低くなり、より多くの作業と管理が必要になります。もっと仕事がいいです。

深刻なターゲットになるとレースに勝つことはできませんが、攻撃者の作業を難しくするほど、攻撃者は他の誰か(より簡単なターゲット)を選択する可能性が高くなります。
これは、玄関のドアを大きく開いたままにするのではなく、鍵をかけるのとほとんど同じです。強盗は窓を簡単に破ることができ、最終的には誰かが侵入するのを防ぐためにできることはありません。しかし、隣人の家のドアを開けて窓を壊さなければならないという選択を考えると、彼はより簡単な方法を選ぶでしょう。費用が減り、利益も同じ。

3
Damon

はい、それはまだ脅威です:

  • CAPTCHAは非常に迅速にセキュリティシアターのポイントに近づいています。それらを破壊する可能性のある複数のサービスが(価格で)あり、コンピュータではなく人間が簡単に解決できる問題を見つけることはますます困難になっています。
  • 1人のユーザーに対する総当たり攻撃は、対処しなければならない唯一の潜在的な攻撃ではありません。攻撃が既知のアカウント名のリストに対して同じパスワードのセットを試行することは珍しいことではありません。また、ユーザーマッピング攻撃を確認するためによく知られたユーザー名(SSHなど)が少数ある可能性のある特定のサービスにとっても、それほど珍しいことではありません。
  • 何らかの形式のパスワード品質チェックを実施している場合を除き、ブルートフォース試行では、十分に遅くするために15分ごとに5回試行するのに十分な試行が必要ない可能性があります。

あなたが提案したものを改善するためのアイデア:

  • 上記のように、パスワードの品質を強化します。理想的な状況では、XKCDパスワード生成方法などが機能するようにし(その詳細については XKCD#936 を参照)、さらに有効なUnicode文字が受け入れられることを確認してください。
  • 無効なユーザー名と無効なパスワードに異なるものを使用するのではなく、無効な資格情報による認証の失敗に対して正確にone失敗コードを返します。これはユーザーマッピング攻撃から保護するため、本当に重要です。
  • MFAサポートを提供します。設定に時間がかかる場合、これを実際に正しく行うことは難しくありません。 TOTP MFAメソッド(Google AuthenticatorアプリやSteamのMFAシステムが提供するものなど)は、一般的に非常に簡単に機能し、かなり安全です。 U2Fもかなり安全ですが、設定にはさらに多くの作業が必要です。いずれにせよ、この方法を採用する場合は、複数のMFAメソッド(理想的には異なるタイプの混合)を考慮してください。ログインコードをメールで送信する必要があるものは絶対に避けてください(絶対に安全ではありません)またはSMS(メールよりも優れていますが、コードが受信されるまでに非常に長い遅延が生じる可能性があります)。 MFAを有効にするユーザーは、ほとんどのブルートフォース攻撃から機能的に保護されます。
  • 静的ロックアウト構成を使用しないでください。代わりに、アダプティブアプローチを使用してください。アカウントがロックアウトされたままになる時間は、最近アカウントがロックアウトされた回数に基づいています。ロックアウト時間に上限がある単純な指数スケーリングシステムは、十分に機能します。たとえば、時間を15 * 2^n分にして、上限を2時間にします。ここで、nは過去24時間の以前のロックアウトの数です(最初の試行は15分のロックアウト、2番目は30です) 、3番目は60、4番目以降は120)です。
2

低速ブルートフォース攻撃などがあり、タイムアウトやロックアウトによってアカウントに侵入するように特別に設計されています。

攻撃者がしきい値を把握できる場合(試行的に実行できる場合)、ボットを作成してそのしきい値を下回らないようにすることができます。

もちろん、これは特定の期間に試行できる組み合わせの数を制限します。そのため、この種の攻撃は数か月または数年にわたって実行され、かなり長いパスワードでアカウントを危険にさらすことはほとんどありません。

したがって、適切なパスワードポリシー(これは別のトピックですが、ここでは、複雑さ!=セキュリティと長さ>複雑さ)と説明したシステムの強固な実装を組み合わせると、侵害の可能性を大幅に減らすことができます。ほとんどの場合、残りのリスクがリスク許容限度内に十分収まる程度です。

1
Tom

レート制限ログイン、アカウントロックなどは、ログイン画面に対する経済的に実行可能なブルートフォース攻撃を阻止するのに適していますが、必ずしも攻撃が行われるわけではありません。

ブルートフォース攻撃はログイン画面自体(制限されている)に対してではなく、データのコピーに対して行われるため、アカウントが侵害されることがよくあります。攻撃者が侵害されたサーバーまたはその他の手段を介してデータにアクセスできる場合、ブルートフォース攻撃は、実際にはアカウントとパスワードをダウンロードし、さらに強力なマシンで暗号化を解くことです。

0
Paul

ブルートフォースは多くの「力」を使う必要はありません。ブルートフォースは何日も実行され、小さなものでしたが、次々と低下し続けました。 captchaは、断固とした攻撃者にとっては問題ではないと考えています。

制約があっても、これらの制限は単一のアカウントにのみ適用されることを暗示していました。したがって、複数のアカウントがあることを知っている場合でも、プロセスを自動化して、試行を続けることができます。

私はあなたの制約で可能なキースペース全体を強引に強制することはできませんが、2日でごくわずかにアカウントごとに上位1000個のパスワードを強制することができます。

トップ1000のパスワードのリストがユーザーの妥当な割合をカバーする可能性が最も高いことを考えると、システムにすぐにアクセスできるはずです。

それで、あなたはそれから守ることができますか?

IPごとのトライアルを制限しますか? ->回避するためのベクター:ボットネット/ VPN

では、「不可能な旅行」をリストに追加してみましょう。 (ユーザーは1分以内にドイツと米国からログインします)

では、同じIPがさまざまなユーザーを試すのはどうでしょうか?

考慮すべき1つのことは、保護しようとするリソースの価値と、それを保護するために実行する追加のステップです。システムの強度に対するもう1つの非常に安全な追加は、2番目の要素です。ただし、使用する認証や、必要な認証の数によっては、追加のコストが発生する可能性があります。たとえば、スタンドアロンサービスとして、Azureは10認証あたり1,4ドルを請求します。または、ユーザーごとに一意のデータを使用して、ある種の無料サービスまたは「グリッド」システムを使用することもできます。

0
Heiko Hatzfeld

総当たり攻撃はまだありそうな脅威ですか?

「可能性」は、ターゲットがどれだけおいしいかによって異なります。あなたが望ましい標的であれば、そうです、それらは脅威です。

レート制限とロックアウトを備えたタイムアウトはブルートフォースを処理しますが、XはY分でしか試行されないため、外部の攻撃者がほとんど努力せずにユーザーをロックアウトできるため、これは大きな問題です。

この場合、脅威を選択できます。個々のアカウントを保護することと引き換えに、攻撃者がユーザーをロックアウトできると決めています。これは実際にデータを盗んだり変更したりするのとは異なる攻撃ですが、それでも攻撃です。

より良い解決策は、強力なパスワードと2要素認証を要求し、ロックアウトしないことです。

これらの両方を実行すると、アカウントはかなり安全になり、ユーザーはロックアウトされません。

攻撃者はアクセスするためにパスワードデータベースと2FAシークレットを盗み、クラックする必要があるため、この脆弱性は大幅に軽減されますが、攻撃者がそれを実行するのに十分な深さになると、実際にはユーザーアカウントは必要なくなります。

これは本当にあなたが何を保護しているかに依存します。 Wordpressブログであり、ユーザーが最新の投稿にコメントできない場合、それは大した問題ではありません。サイトに財務、医療、またはセキュリティの記録が含まれている場合、それは大きな問題です。

0
PushfPopf