リソース枯渇の可能性: /uploads.json にレート制限がなく、大量ファイルアップロードを許可

問題の説明

カスタマイズされたDiscourseデプロイメントのセキュリティレビュー中に、ファイルアップロードAPIに関連する潜在的なリソース枯渇リスクを発見しました。

詳細

  • アップロードAPI: /uploads.json

  • 問題: このエンドポイントには、明白なレート制限が存在しません。認証されたユーザーであれば誰でも、短時間で大量のファイルをアップロードできます。

  • 再現手順:

    • リクエストを自動化することにより、ユーザーは短時間で数千件のアップロードリクエストを送信できます。

    • 数千件のアップロードリクエストを送信した後、ストレージディレクトリに数千件のファイルが存在することを確認しました。

セキュリティ/リソースへの影響

  • 攻撃者や通常のユーザーであっても、大量のファイルをアップロードすることで、サーバーのストレージを枯渇させたり、パフォーマンスを低下させたり、運用上の問題を引き起こしたりする可能性があります。

  • これは、サービス拒否(DoS)のために悪用されたり、予期せずストレージコストが増加したりする可能性があります。

質問

  • Discourseの/uploads.jsonエンドポイントには、組み込みのレート制限や不正使用防止機能はありますか?

  • ユーザーごとのアップロード頻度や総ストレージ使用量を制限するための推奨設定やプラグインはありますか?

  • Discourseデプロイメントでのファイルアップロードによるリソース枯渇を防ぐためのベストプラクティスはありますか?

ご配慮とアドバイスをよろしくお願いいたします!