Детали защищенной категории утекли по электронной почте

Частный экземпляр Discourse, отправка писем через Mailgun. Версия 2.4b1.

Среди различных категорий с ограниченным доступом по группам:

  • CategoryA защищена GroupA
  • CategoryB защищена GroupB

Также есть два пользователя:

  • User1

    • является участником GroupA.
  • User2

    • является участником GroupA и GroupB.

Ни один из пользователей не посещал сайт более 24 часов. У обоих установлены уведомления для всех новых постов в категориях, к которым у них есть доступ.

Была опубликована новая тема, изначально в CategoryA. Она была быстро перемещена в CategoryB.

Через несколько часов при проверке логов в MailGun я увидел, что оба User1 и User2 получили уведомления о новой теме по электронной почте, но в заголовке письма тема была указана как находящаяся в CategoryB, о существовании которой у User2 не было никакой предварительной информации.

Параметр email time window mins установлен на 5 минут, а пост был перемещен задолго до истечения этого времени. Примечание под этим полем гласит: Подождите (n) минут перед отправкой любых уведомлений по электронной почте, чтобы у пользователей была возможность отредактировать и завершить свои посты.

Похоже, что в логике отправки уведомлений по электронной почте есть ошибка: пост был перемещен через несколько секунд после публикации, а письма подтверждают, что перемещение произошло до их отправки. Письмо было отправлено из категории, о которой пользователь не знал и к которой не имел доступа, что в конечном итоге привело к раскрытию информации не тому лицу.

В худшем случае я ожидал бы, что письмо будет ссылаться на CategoryA, к которой у User1 был доступ, хотя это тоже было бы нежелательно, если бы тема была перемещена обратно из этой категории до отправки письма. В идеале проверка должна проводиться в момент, когда письмо должно быть отправлено, что защитит от человеческой ошибки и полностью исключит утечку информации.

3 лайка

Спасибо за сообщение об ошибке. Это исправлено в FIX: Don't send notification email when user isn't allowed to see topic · discourse/discourse@d513c28 · GitHub и перенесено обратно в ветки beta и stable.

11 лайков