Esgotamento potencial de recursos: nenhuma limitação de taxa em /uploads.json permite uploads massivos de arquivos

Descrição do Problema

Durante uma revisão de segurança em nossa implantação personalizada do Discourse, descobrimos um risco potencial de esgotamento de recursos relacionado à API de upload de arquivos.

Detalhes

  • API de Upload: /uploads.json

  • Problema: Não há limitação de taxa aparente neste endpoint. Qualquer usuário autenticado pode fazer upload rápido de um grande número de arquivos.

  • Reprodução:

    • Automatizando requisições, um usuário pode enviar milhares de requisições de upload em um curto período.

    • Verificamos que, após enviar milhares de requisições de upload, o diretório de armazenamento contém milhares de arquivos.

Impacto na Segurança/Recursos

  • Atacantes ou mesmo usuários normais podem esgotar o armazenamento do servidor, degradar o desempenho ou acionar problemas operacionais ao fazer upload de um número massivo de arquivos.

  • Isso poderia ser potencialmente abusado para negação de serviço ou para aumentar os custos de armazenamento inesperadamente.

Perguntas

  • Existe alguma limitação de taxa integrada ou prevenção de abuso para o endpoint /uploads.json no Discourse?

  • Existem configurações ou plugins recomendados para restringir a frequência de upload do usuário ou o uso total de armazenamento por usuário?

  • Existem práticas recomendadas para prevenir o esgotamento de recursos causado por uploads de arquivos em implantações do Discourse?

Obrigado pela sua atenção e conselho!