Возможное исчерпание ресурсов: отсутствие ограничения скорости для /uploads.json позволяет массовую загрузку файлов

Описание проблемы

В ходе проверки безопасности нашего кастомизированного развертывания Discourse мы обнаружили потенциальный риск исчерпания ресурсов, связанный с API загрузки файлов.

Детали

  • API загрузки: /uploads.json

  • Проблема: На этом эндпоинте, по-видимому, отсутствует ограничение скорости запросов. Любой аутентифицированный пользователь может быстро загрузить большое количество файлов.

  • Воспроизведение:

    • Автоматизируя запросы, пользователь может отправить тысячи запросов на загрузку за короткое время.

    • Мы подтвердили, что после отправки тысяч запросов на загрузку в директории хранилища находятся тысячи файлов.

Влияние на безопасность и ресурсы

  • Злоумышленники или даже обычные пользователи могут исчерпать дисковое пространство сервера, снизить производительность или вызвать операционные проблемы, загружая огромное количество файлов.

  • Это потенциально может быть использовано для атак типа «отказ в обслуживании» (DoS) или для непредвиденного увеличения затрат на хранение.

Вопросы

  • Есть ли встроенное ограничение скорости запросов или защита от злоупотреблений для эндпоинта /uploads.json в Discourse?

  • Существуют ли рекомендуемые настройки или плагины для ограничения частоты загрузки файлов пользователями или общего объема хранилища на одного пользователя?

  • Каковы лучшие практики предотвращения исчерпания ресурсов из-за загрузки файлов в развертываниях Discourse?

Благодарим за внимание и советы!