0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-06 00:15:24 +08:00
discourse/config
Nat 3a3d315a85 SECURITY: Prevent any signed AWS SNS TopicARN from being accepted via webhooks [backport 2026.1]
Manual backport of #732 to 2026.1. Conflict in server.en.yml (no qq_mail_smtp line on this branch) resolved.
  GHSA-8f9m-v436-wr3x

---

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
2026-06-30 16:27:06 +02:00
..
environments DEV: Add env var for local email port (#36900) 2025-12-31 14:25:02 +10:00
imagemagick SECURITY: Harden imagemagick execution [backport 2026.1] 2026-06-30 16:27:06 +02:00
initializers SECURITY: Harden imagemagick execution [backport 2026.1] 2026-06-30 16:27:06 +02:00
locales SECURITY: Prevent any signed AWS SNS TopicARN from being accepted via webhooks [backport 2026.1] 2026-06-30 16:27:06 +02:00
application.rb FIX: rack middleware dev warnings (#36460) 2025-12-10 16:15:53 -06:00
boot.rb DEV: Automatically turn on irb autocomplete with debugger (#37052) 2026-01-12 13:29:23 +10:00
cdn.yml.sample
database.yml DEV: Support per-unicorn-worker DB variable overrides (#35615) 2025-10-27 13:45:27 +08:00
deploy.rb.sample
dev_defaults.yml DEV: Convert admin-incoming-email modal to component-based API (#22701) 2023-07-20 16:31:20 -05:00
discourse.config.sample
discourse.pill.sample
discourse_defaults.conf DEV: Remove IMAP support in Discourse (#37002) 2026-01-12 10:07:26 +10:00
environment.rb DEV: Add env var for local email port (#36900) 2025-12-31 14:25:02 +10:00
logrotate.conf
multisite.yml.production-sample
nginx.sample.conf SECURITY: Improve SVG sanitization [backport 2026.1] 2026-06-30 16:27:06 +02:00
official_plugins.json DEV: Enforce deprecation-free tests for preinstalled plugins/themes (#36445) 2025-12-16 17:48:29 -03:00
pitchfork.conf.rb DEV: Make changes for docker_manager Pitchfork compatibility (#36456) 2025-12-18 14:22:39 +01:00
projections.json DEV: Prepare for rename of app/assets/javascripts/ -> frontend/ 2025-10-22 16:24:11 +01:00
puma.rb
routes.rb FEATURE: Add native support for /llms.txt (#36939) 2026-01-20 08:53:20 +01:00
sidekiq.yml
site_settings.yml SECURITY: Prevent any signed AWS SNS TopicARN from being accepted via webhooks [backport 2026.1] 2026-06-30 16:27:06 +02:00
spring.rb
thin.yml.sample
unicorn.conf.rb DEV: Support per-unicorn-worker DB variable overrides (#35615) 2025-10-27 13:45:27 +08:00
unicorn_launcher DEV: Check RUN_PITCHFORK for explicit "1" value (#37264) 2026-01-23 09:30:28 +08:00