임베디드 미디어 게시 허용 그룹에 속하지 않은 사용자는 업로드된 이미지 링크를 복사하여 업로드 제한을 우회할 수 있습니다

재현 단계

  1. Newuser max embedded media = 0 설정
  • 이는 사용자가 이미지를 업로드하기 전에 업로드하는 것을 올바르게 차단합니다 :white_check_mark:
  1. Embedded media post allowed groups 구성
  • 허용 목록에서 특정 그룹 제외
  • 허용된 그룹에 속하지 않은 사용자가 이미지를 업로드하면:
    • 이미지가 편집기에 표시될 수 있음
    • 게시물을 제출할 때만 차단됨 :cross_mark:
  1. 문제점
  • 편집 중 사용자가 업로드된 이미지의 링크를 복사하여 업로드 제한을 우회하고 게시물을 게시할 수 있음

예상 동작

우리의 목표는 사용자의 이미지 업로드를 방지하는 것입니다. 허용된 그룹에 속하지 않은 사용자는 편집기에 임베디드 미디어를 삽입할 수 없어야 하며, Newuser max embedded media = 0이 적용될 때와 마찬가지로 업로드 시점에 업로드를 차단해야 합니다.

그렇지 않으면 업로드된 이미지의 링크를 복사하여 제한을 효과적으로 우회하여 업로드할 수 있습니다.

이것이 새로운 문제인지 확실하지는 않지만, 우리도 방금 이를 발견했습니다:

이미지가 붙여넣기되는 즉시 S3 버킷(cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com)으로 업로드되는 것으로 보입니다. 임베드 확인은 게시물이 제출될 때까지 이루어지지 않지만, 그때까지 이미 이미지는 버킷에 존재하며, 다음 중 하나로 링크될 수 있습니다:

  • S3 URL
  • Discourse 짧은 URL
  • 생성된 upload:// URL (즉, 자동 생성된 업로드 임베드 코드 앞의 !를 단순히 제거한 것)

이로 인해 임베드에 실패한 경우(즉, 업로드 시도가 나중에 거부된 경우)에도 이미지가 버킷에 업로드되어, 업로드자가 거부된 것으로 생각했고 다른 누구도 업로드를 볼 수 없는 경우에도 사이트의 저장 용량 할당량에 은밀하게 차감되고 있을 수 있다는 점이 우려됩니다.

아쉽게도 이 버그는 꽤 오랜 기간 동안 수정되지 않은 것으로 보입니다.