Частный экземпляр 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 был доступ, хотя это тоже было бы нежелательно, если бы тема была перемещена обратно из этой категории до отправки письма. В идеале проверка должна проводиться в момент, когда письмо должно быть отправлено, что защитит от человеческой ошибки и полностью исключит утечку информации.