埋め込みメディア投稿許可グループ外のユーザーは、アップロードされた画像のリンクをコピーすることでアップロード制限を回避できます

再現手順

  1. Newuser max embedded media を 0 に設定します
    • これにより、新規ユーザーは画像をアップロードする前にアップロードできなくなります :white_check_mark:
  2. Embedded media post allowed groups を設定します
    • 許可リストから特定のグループを除外します
    • 許可されたグループに属していないユーザーが画像をアップロードすると:
      • 画像はエディタに表示されることがあります
      • 投稿を送信するときにのみブロックされます :cross_mark:
  3. 問題
    • 編集中に、ユーザーはアップロードされた画像のリンクをコピーして、アップロード制限を回避して投稿することができます

期待される動作

目標は、ユーザーが画像をアップロードできないようにすることです。許可されたグループに属していないユーザーは、エディタに埋め込みメディアを一切挿入できないはずです。これは、Newuser max embedded media = 0 が適用されたときと同様に、アップロード時にブロックされるべきです。

そうしないと、アップロードされた画像のリンクをコピーして、実質的にアップロードの制限を回避できてしまいます。

これも新しい問題かどうかわかりませんが、私たちも気づいたばかりです。

画像は、画像を貼り付けるとすぐにS3バケット(cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com)にアップロードされるようです。埋め込みチェックは投稿が送信されるまで行われませんが、その時点ですでに画像はバケット内に存在しており、以下のいずれかを使用してリンクすることができます。

  • そのS3 URL
  • そのDiscourseショートURL
  • その生成された upload:// URL(つまり、自動生成されたアップロード埋め込みコードの先頭から ! を削除するだけ)

これにより、埋め込みに失敗したアップロード(その後拒否されたアップロードの試行)でさえもバケットにアップロードされ、サイトのストレージクォータに密かにカウントされているのではないかと懸念しています。アップロード者が拒否されたと思い、他の誰もそのアップロードを見ることができない場合でも

残念ながら、このバグはかなり長い間修正されていないようです。