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!