この脆弱性は、LiquidFiles バージョン 4.1 以下で確認されました。
「POST /password_reset」エンドポイントを介してパスワードリセットを開始すると、アプリケーションは、指定されたメールアドレスが登録されているかどうかによって異なる応答を返します。どちらの場合もリダイレクトが発行され、応答には「_filetransfer_session」Cookie が含まれます。この Cookie を使用してルートパス(「/」)にアクセスすると、送信されたメールアドレスの有効性に基づいて、結果のエラーメッセージが異なります。
これにより、攻撃者は有効なユーザーのリストを作成でき、それをブルートフォース攻撃やパスワードスプレー攻撃などの攻撃に悪用できます。
パスワードリセット応答 – 既存/有効なユーザー
パスワードリセット応答 – 存在しない/無効なユーザー
数回のパスワードリセット試行後、セキュリティ対策として IP ベースのロックアウトがトリガーされ、同じ IP アドレスからのそれ以上のリクエストが防止されます。ただし、このメカニズムは不十分であり、無料のツールを使用してバイパスできます。たとえば、Burp Suite の「IP Rotate」拡張機能と組み合わせて AWS API Gateway プロキシを使用することで、ロックアウトを回避できます。スクリプトは、ポート 8080 のローカルプロキシを想定しています。
IP ベースのロックアウトをバイパスするために使用したアプリ:
このエラーメッセージの相違により、有効なユーザー名またはメールアドレスの自動列挙が可能になります。これを実証するために、潜在的な登録済みメールアドレスのリストを受け取り、アプリケーションの応答動作に基づいて有効なものを識別する概念実証スクリプトを作成しました。
ユーザー列挙スクリプトの出力:
有効なユーザー名が特定されると、それらはブルートフォース攻撃やパスワードスプレー攻撃に悪用される可能性があります。一部のユーザーは弱いパスワードや再利用されたパスワードを使用している可能性があるため、これは高いセキュリティリスクをもたらします。
悪用の可能性は高く、現在のセキュリティ対策は簡単にバイパスでき、悪用は簡単です。影響は中程度と見なされます。有効なユーザーのリストを取得した後も、パスワードスプレー攻撃やブルートフォース攻撃を通じてアカウントを侵害する必要があるためです。
このアプリケーションは多くの異なる組織で使用されていることに注意してください。ほとんどの場合、パブリックインターネットに公開されています。これにより、インターネットから従業員のメールアドレスや名前を収集し、アプリケーションに対してパスワードスプレー攻撃を行うだけで済みます。
その結果、この問題は高いリスクをもたらします。
バージョン 4.2 では、ユーザーベースのロックアウトメカニズムを導入し、デフォルトでユーザー列挙を可能にする異なるエラーメッセージを無効にすることで、この問題に対処しています。