web-dev-qa-db-ja.com

2FAサイトは、正しいパスワードの推測を確認することによって情報を漏洩しますか?

これは、この問題についての比較的素人の見方です。

多くのWebサイトは、多要素認証(MFA)をユーザーのアカウントのセキュリティを大幅に強化すると宣伝しており、適切に実装されている場合になる可能性があります

ただし、一部のサイトでは、パスワードを正しく入力した後[〜#〜] [〜#〜]にのみユーザーにプロンプ​​トを表示するようです。私はこれを gmail.comOutlook.com でテストしただけですが、これらは2つの巨大な電子メールプロバイダーであることを考えると、多くの加害者の2つにすぎないと思います。

これが(少なくとも一面では)非常に大きなセキュリティ上の欠陥である理由は、クラッカーがMFAのプロンプトを表示するまでユーザーのパスワードを推測できるためです。ユーザーのパスワード。 「しかし、ユーザーはMFAを持っているため、クラッカーはアカウントにアクセスできません。」と言って、ウェブサイトがこれを一掃するように思われます。

彼らが忘れているように見えるのは、ユーザーが他のWebサイトにアカウントを持っている可能性が高く、そのサイトに同じパスワードを使用している可能性があることです。そのため、クラッカーはWeb全体ですべてのユーザーのアカウントにアクセスできるようになり、その多くはおそらくMFAが実装されていないため、ユーザーは完全に攻撃に対して脆弱です。

これを問題としないような私の主張や仮定に欠陥はありますか?そうでない場合、GoogleやMicrosoftのような大企業がこの問題を修正しないのはなぜですか?

63
Ben Sandeen

私の質問を正しく理解している場合、提案している攻撃は、このようなサーバーに対してパスワードをブルートフォースで攻撃することです。MFA画面が表示されたら、このユーザーがアカウントを持っている他のWebサイトでそのパスワードを試します。

これは素晴らしい質問です!良い発見!しかし、次の2つの点を見落としているようです。

  1. これは、MFAがないことよりも弱くはありません。MFAを使用すると、正しいパスワードが確認されます...

  2. 彼らの正しい心のハッカーは、通常、毎秒5回の推測が好きになるようにレート制限するライブサーバーに対してパスワードを総当たりすることを試みません。または、GMailやOutlookなどの大手プロバイダーの場合は、疑わしいアクティビティの自動IPブロックを実行する複雑な不正検出システムを使用します。 99.999 ...%の確率で、データベースから直接盗まれたパスワードハッシュに対してパスワード総当たりが実行され、1秒あたり(m | b)数十億のパスワードを推測できます。

したがって、ここではデータ漏洩の可能性があることに同意しますが、リスクは最小限であり、ユーザーがパスワードを入力したことを確認するためだけにOTPフォブをいじる必要があるというユーザーの不便さをはるかに上回っています。 。


これはホットなネットワークの質問になっているため、コメントへの対応を更新します:

2種類の多要素認証(別名 "2FA"または "MFA")があり、個別に検討する必要があります。

  1. SMSまたはプッシュ通知2FA:2FA画面に到達すると、入力する必要のあるコードがデバイスに送信されます。多くのユーザーにとって、これはおそらく、唯一の2FAタイプです。にさらされました。質問に記載されている攻撃は、ユーザーが要求していない2FAコードを受け取り、何かが間違っていることがわかるため、この場合は機能しません。さらに、パスワードが正しいかどうかに関係なく2FAステップを実行することは、この場合、実際には有害です。

    • 攻撃者はユーザーに膨大な月間データ/ SMS請求書)を取得させたり、メモリを通知でいっぱいにしてデバイスをクラッシュさせる可能性があります。
    • また、2FAが有効になっているユーザーと、簡単にターゲットとなるユーザーもリークされます。
  2. "オフライン" 2FAコード生成トークン、アプリ、または公開キーが有効なスマートカード/ USBスティックを使用(下の画像を参照)。これは、政府、軍事、企業が使用する2FAの一種です。したがって、エンドユーザーからは見えにくくなりますが、保護しているデータの価値のため、2FAの方がはるかに重要です。この場合、攻撃者が2FA画面に到達しても、ユーザーへの「組み込み」通知はありません。また、通常はすべてのユーザーが2FAを使用する必要があるため、2FAが有効になっているユーザーがすべてであるため、リークしても害はありません。

ケース2のこのシナリオを想像してみてください。WindowsActive Directoryの上に置かれる企業VPN。公共向けのVPNは、パスワード推測機能によって1日中攻撃されているため、これらのログに異常はありません。しかし、VPNの2FA画面でユーザーのパスワードを確認できる場合は、ユーザーのラップトップに近づいてログインでき、Windowsアカウントがロックされないことを確信してログインできます。これはユーザー/ ITによって確実に通知されます。この質問は、「2FA画面に移動して何も入力しない/何か間違ったものを入力した」というパターンは、標準の「誤ったユーザー名/パスワード」よりも深刻なフラグが確実に付けられ、エンドユーザーに通知する必要があるというセキュリティホールを正しく指摘しています。パスワードを廃止します。

118
Mike Ounsworth

これは問題ではないと思います。多要素認証は、誰かがあなたのパスワードを推測するのを防ぐことではなく、誰かがあなたのアカウントにサインインするのを防ぐことです。

12
Benoit Esnard

そのため、クラッカーはWeb全体ですべてのユーザーのアカウントにアクセスできるようになり、その多くはおそらくMFAが実装されていないため、ユーザーは攻撃に対して完全に脆弱です。

攻撃者は、銀行やFacebookなどでパスワードを試行するつもりはないことをGoogleでパスワードを推測しようとはしません。有効なパスワードであることが判明したからといって、攻撃者は他のアカウントを侵害することに近づきません。真のブルートフォースがライブシステムで動作することはないため、推測されたパスワードは、高い確率で推測されるベビーベッドからのものである必要がありました。

2FAを使用しているサイトが2FAを提供していないサイトと比較して、推測防止アルゴリズムが悪いことを証明できれば(少なくとも2 FAは優れていると思います)、攻撃者が2FAを悪用する可能性があるため、あなたの主張は有効です。もう一方に向かってピボットします。実際にはその逆が真実である可能性が高く、2FAに投資しているサイトは同時に反推測システムにも投資しています。

9
Jeff Meden

理論的には、そうです、これは可能性です(2FAを実装するサイトに、他の回答で指摘されているように、レート制限やあらゆる種類の不正検出がない場合)。

実際には、ユーザビリティについても考慮すべき要素があります。ログイン試行のたびにユーザーに2FAの入力を求めるログインフォームを作成し、2FAのステップの後で失敗したことのみをユーザーに通知し、無効であったのがパスワードであるか2FAトークンであるかをユーザーに通知しないことを想像してください。

2FAは、最初は大変な痛みです。ログインするたびに、ユーザー名とパスワードを入力するだけでなく、自分の電話(別の部屋にある可能性があります)を見つけ、ロックを解除して、ホーム画面、2FAアプリを探し、リストから適切なサイトを見つけます。次に、コードの有効期限は必然的に5秒です。そのため、新しいコードが表示されるまで待つか、期限が切れる前にすばやく入力する必要があります。

(SMSesまたはプッシュ通知を使用する2FAシステムは、私のスマートウォッチに表示されるため、この点で優れています。スマートウォッチを所有していないユーザーの場合は、ロック画面です。スキームでは、ただし、2FAの試行をトリガーするためにパスワードを取得する必要がないため、ユーザー名がわかっている限り、ユーザーは無限の通知/ SMSで私を煩わせることができると考えています。また、一部の国では、電話会社がSMSメッセージを受信することに対して料金を請求しているため、これらの場所では、この種のことはユーザーにとってさらに悪いことになります。)

ユーザーがパスワードを間違えたときに、これらすべてを2回実行すると、プロセス全体がはるかに困難になり、結果として2FAを使用するユーザーが少なくなり、ユーザーが作成される可能性があります平均して安全です。

6
Leigh Brenecki

GmailやOutlook.comのように2FA/MFAが「オプション」であるシステムの場合、サービスは2要素法を使用する面倒な要素とそれがもたらすセキュリティのバランスをとる必要がありますサイトに。完璧な世界では、ユーザーはすべてのサイトに一意で複雑なパスワードを設定し、利用可能な場合は常に2FAを使用しますが、現実にはそうです-ユーザーは12のサイトで同じパスワードを使用し、2要素を使用します比較的小さなウィンドウで数回の無効なログイン試行の後にアカウントを自動的にロックしてユーザーに通知しないメカニズムは、攻撃者が2FAプロンプトに到達するまで、忍耐強くいくつかの推測を試み、その時点でそれらを引き起こす可能性があります。ユーザー名とパスワードの有効な組み合わせがあることを知っている。メールアドレスをログインとして使用する大規模なサイト(LinkedInなど)での非常に公開されたパスワードデータベースの侵害により、ユーザーが他のサイトを更新する手間をかけなかった場合、攻撃者はユーザーのパスワードを比較的簡単に論理的に推測できます。 、しかし「ひびが入った」ものだけ。

セキュリティが重要なアプリ(私が取り組んでいるアプリの1つなど)の場合、ログインプロンプトにはユーザー名、パスワード、および2要素の値が一度に必要であり、それは「オールオアナッシング」認証であり、ユーザーには通知しませんパスワードの有効期限が切れたことが原因である場合を除いて、ログインが失敗した理由(正しいパスワードを入力したことを前提としていますが、実際にアプリケーションにアクセスするには、パスワードを変更して別の2FA値で再度入力する必要があります)。そのアプリケーションには「キャプティブ」ユーザーベースがあり、2FAはポリシーで要求されているため、OPで言及した「2FAオプション」サイトと直接比較することはできません。

ただし、基本的に、2段階認証を行う場合は「トークンオンデマンド」が「オフライン」トークン(RSAやGoogle認証システムなど)よりも安全であるという上記のコメントに同意します。誰かが予期しないSMSメッセージ、「間違ったパスワード」または攻撃者がそれを正しく取得した場合の有効な2要素文字列のいずれか)によって自分のアカウントにアクセスしようとしていることをすぐに知ってください。サイトのみがSMS 2要素の値をログイン成功時に送信するため、攻撃者が実際に正しいパスワードを取得する前にユーザーに通知することは、あなたが言及しているその時点では役に立ちません。ユーザーは、攻撃者が適切なパスワードを持っている場合、有効な2要素の文字列を取得します。その時点では、おそらく手遅れであり、攻撃者はすでに2FAを持たない他のサイトで同じユーザー名とパスワードの組み合わせを試しており、ユーザーは彼らがそれを使用するすべてのサイトですべてのパスワードを変更するために、コンピューターの前にスクランブルをかける必要があります。 「どこでも同じパスワードを再利用することは、すべてを覚えていないため、ほとんど不可能です。

最終的に、同じユーザーが使用するotherサイトが2FAにどの程度の損害を与えるかは、個々の実装次第です。最良の場合、これは前述のオールインワンログインであり、攻撃者は何らかの方法で2FAデバイスまたは「マジックストリング」(Google認証システムなどの初期化トークン)も持っている必要があり、それらも持っている場合、ユーザーはすでに十分に妥協しています。

2
Benjamin_FTW