Potenziale esaurimento risorse: Nessun rate limiting su /uploads.json consente upload massivi di file

Descrizione del problema

Durante una revisione della sicurezza della nostra implementazione personalizzata di Discourse, abbiamo scoperto un potenziale rischio di esaurimento delle risorse relativo all’API di caricamento file.

Dettagli

  • API di caricamento: /uploads.json

  • Problema: Non sembra esserci alcun limite di frequenza (rate limiting) su questo endpoint. Qualsiasi utente autenticato può caricare rapidamente un gran numero di file.

  • Riproduzione:

    • Automatizzando le richieste, un utente può inviare migliaia di richieste di caricamento in breve tempo.

    • Abbiamo verificato che, dopo l’invio di migliaia di richieste di caricamento, la directory di archiviazione contiene migliaia di file.

Impatto sulla sicurezza/risorse

  • Gli aggressori o anche gli utenti normali potrebbero esaurire lo spazio di archiviazione del server, degradare le prestazioni o innescare problemi operativi caricando un numero massiccio di file.

  • Questo potrebbe potenzialmente essere abusato per negazione del servizio (denial-of-service) o per aumentare inaspettatamente i costi di archiviazione.

Domande

  • Esiste un limite di frequenza (rate limiting) integrato o una prevenzione degli abusi per l’endpoint /uploads.json in Discourse?

  • Ci sono impostazioni o plugin consigliati per limitare la frequenza di caricamento degli utenti o l’utilizzo totale dello spazio di archiviazione per utente?

  • Esistono best practice per prevenire l’esaurimento delle risorse causato dal caricamento di file nelle implementazioni di Discourse?

Grazie per la vostra attenzione e i vostri consigli!