missing_auth
POST /wp-json/snel-newsletter/v1/webhook/<slug> is registered with permission_callback __return_true and dispatches to the active adapter (SES is the default when no adapter is set). SES Adapter::parse_webhook() checks the SNS signature (cert URL restricted to sns.*.amazonaws.com) but never compares TopicArn (or the AWS account) against a configured topic, and for Type=SubscriptionConfirmation it blindly fetches SubscribeURL. An attacker with any AWS account can therefore create an SNS topic, add the site's webhook URL as an HTTPS subscriber (the plugin auto-confirms it), then publish to their own topic a Notification whose Message is a fake SES Bounce/Complaint listing arbitrary email addresses. The message is genuinely signed by AWS, so it passes verify_sns_signature(), and Controller::webhook() sets status='bounced' or 'complained' for every listed email (WHERE email = ...), permanently suppressing those subscribers (or the whole list if emails are known/guessed) and polluting delivery-event logs. No shared secret or per-site token is part of the URL.
inc/adapters/ses/Adapter.php:40-79, 150-205
RecommendationStore the expected SNS TopicArn(s) (or AWS account ID) in settings and reject any message whose TopicArn does not match before confirming subscriptions or processing notifications; optionally add a secret token to the webhook URL. Do not auto-confirm SubscriptionConfirmation for unknown topics.