mirror of
https://github.com/discourse/discourse.git
synced 2026-08-06 13:08:40 +08:00
Backport of #732 to release/2026.5. --- Any AWS account holder can subscribe their own SNS topic to a Discourse instance's /webhooks/aws and publish bounce notifications that AWS will sign legitimately. The forged bounces are processed against arbitrary user emails, bumping bounce_score and eventually triggering email revocation.. This fix adds a new `aws_sns_topic_arn_allowlist` site setting. Also hardens Jobs::ProcessSnsNotification against three issues: - Binds bounces to (message_id, to_address) via find_by, so a legitimately-subscribed SNS publisher can no longer bounce arbitrary recipients we didn't send to. - Skips duplicate notifications (next if email_log.bounced?) — AWS SNS delivers at-least-once. - Uses update! instead of update_columns so EmailLog's existing before_save normalizes the bounce status code. Also add a dashboard problem flags self-hosted admins whose SMTP looks like SES but who haven't set the allowlist yet. https://github.com/discourse/discourse/security/advisories/GHSA-8f9m-v436-wr3x |
||
|---|---|---|
| .. | ||
| bad_favicon_url.rb | ||
| email_polling_errored_recently.rb | ||
| email_sending_failures.rb | ||
| facebook_config.rb | ||
| failing_emails.rb | ||
| force_https.rb | ||
| github_config.rb | ||
| google_analytics_version.rb | ||
| google_oauth2_config.rb | ||
| group_email_credentials.rb | ||
| host_names.rb | ||
| image_magick.rb | ||
| inline_problem_check.rb | ||
| maxmind_db_configuration.rb | ||
| missing_aws_sns_topic_arn.rb | ||
| missing_mailgun_api_key.rb | ||
| out_of_date_themes.rb | ||
| poll_pop3_auth_error.rb | ||
| poll_pop3_timeout.rb | ||
| problem.rb | ||
| qq_mail_smtp.rb | ||
| rails_env.rb | ||
| ram.rb | ||
| s3_backup_config.rb | ||
| s3_cdn.rb | ||
| s3_upload_config.rb | ||
| sidekiq_check.rb | ||
| starttls_disabled.rb | ||
| subfolder_ends_in_slash.rb | ||
| translation_overrides.rb | ||
| twitter_config.rb | ||
| twitter_login.rb | ||
| unreachable_themes.rb | ||
| upcoming_change_stable_opted_out.rb | ||
| watched_words.rb | ||