Épuisement potentiel des ressources : aucune limitation de débit sur /uploads.json ne permet des téléchargements massifs de fichiers

Description du problème

Lors d’un examen de sécurité de notre déploiement Discourse personnalisé, nous avons découvert un risque potentiel d’épuisement des ressources lié à l’API de téléversement de fichiers.

Détails

  • API de téléversement : /uploads.json

  • Problème : Il n’y a apparemment aucune limitation de débit sur ce point de terminaison. Tout utilisateur authentifié peut téléverser rapidement un grand nombre de fichiers.

  • Reproduction :

    • En automatisant les requêtes, un utilisateur peut envoyer des milliers de requêtes de téléversement en peu de temps.

    • Nous avons vérifié qu’après l’envoi de milliers de requêtes de téléversement, le répertoire de stockage contient des milliers de fichiers.

Impact sur la sécurité/les ressources

  • Des attaquants ou même des utilisateurs normaux pourraient épuiser le stockage du serveur, dégrader les performances ou déclencher des problèmes opérationnels en téléversant un nombre massif de fichiers.

  • Cela pourrait potentiellement être utilisé à mauvais escient pour un déni de service ou pour augmenter les coûts de stockage de manière inattendue.

Questions

  • Existe-t-il une limitation de débit intégrée ou une prévention des abus pour le point de terminaison /uploads.json dans Discourse ?

  • Existe-t-il des paramètres recommandés ou des plugins pour limiter la fréquence de téléversement des utilisateurs ou l’utilisation totale du stockage par utilisateur ?

  • Existe-t-il des meilleures pratiques pour prévenir l’épuisement des ressources causé par les téléversements de fichiers dans les déploiements Discourse ?

Merci de votre attention et de vos conseils !