Les utilisateurs n'appartenant pas aux groupes autorisés pour les publications de médias intégrés peuvent contourner la restriction de téléchargement en copiant le lien de l'image téléchargée

Étapes pour reproduire

  1. Définir Newuser max embedded media = 0
    • Cela empêche correctement les nouveaux utilisateurs de télécharger des images avant de les télécharger :white_check_mark:
  2. Configurer Embedded media post allowed groups
    • Exclure certains groupes de la liste autorisée
    • Lorsqu’un utilisateur n’appartenant pas aux groupes autorisés télécharge une image :
      • L’image peut apparaître dans l’éditeur
      • Ce n’est qu’au moment de la soumission du message qu’elle est bloquée :cross_mark:
  3. Problème
    • Pendant la modification, l’utilisateur peut copier le lien de l’image téléchargée pour contourner la restriction de téléchargement et la publier

Comportement attendu

Notre objectif est d’empêcher les utilisateurs de télécharger des images. Les utilisateurs n’appartenant pas aux groupes autorisés ne devraient pas pouvoir insérer de médias intégrés dans l’éditeur du tout — cela devrait bloquer les téléchargements au moment du téléchargement, tout comme lorsque Newuser max embedded media = 0 est appliqué.

Sinon, ils peuvent copier le lien de l’image téléchargée et contourner efficacement la restriction pour la télécharger.

Je ne sais pas si c’est un nouveau problème, mais nous venons de le remarquer aussi :

Il semble que le téléversement de l’image vers le bucket S3 (cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com) se produise dès que l’image est collée. La vérification de l’intégration n’a lieu qu’au moment de la soumission de la publication, mais à ce moment-là, l’image existe déjà dans le bucket et peut être liée en utilisant n’importe lequel des éléments suivants :

  • Son URL S3
  • Son URL courte Discourse
  • Son URL générée upload:// (c’est-à-dire en supprimant simplement le ! du début du code d’intégration de téléversement auto-généré)

Je crains que cela signifie que même les intégrations échouées (c’est-à-dire les tentatives de téléversement qui ont été ensuite refusées) ont été quand même téléversées dans le bucket, et comptent secrètement dans le quota de stockage du site même si l’utilisateur pensait qu’elles avaient été refusées et que personne d’autre ne peut voir le téléversement.

Malheureusement, ce bogue semble être resté non corrigé depuis un certain temps.