-
Notifications
You must be signed in to change notification settings - Fork 7
Description
Lately we noticed a lot of spam on the public registration form. This is especially problematic because e-mail addresses of spammers are blocked by SES which in turn might reject all mails sent from CDx (Slack thread).
A first line of defence is disabling public account registration (implemented in #1695). This should be fine for our current production use cases because new users are typically invited in.
But we should look for proper solutions to the spam problem to make public account registration a viable option.
- We could use reCaptcha to hinder spam bots from registering (previously implemented in Add reCAPTCHA support guisso#64 for example). The downside of that is annoying UX and a dependency on an external service.
- A less obtrusive alternative is https://github.com/markets/invisible_captcha which seems to be doing a great job telling users from bots without obvious UX implications.
- The current spam bots seem to be registering with e-mail addresses that are easily identifiable via spam blocklists. The SES bounce notifications even name the block sources (e.g. cbl.abuseat.org, sbl.spamhaus.org). So we could perform some checks against these lists on hour end and prevent mail delivery entirely.
Regardless of which spam-detection mechanism we use, there is always a possibility that adversaries might slip through. So an important mitigation mechanism would be to make mail delivery more fault tolerant. We shouldn't lose e-mail capabilities for the entire organization just because of some spam registrations.
A simple mitigation would be to use a separate SES account for registration mails. If this gets suspended, we won't be able to register new users, but any other transactional mails from inside the app(s) won't be affected. Those are unlikely to bounce.
We could also monitor e-mail bounces and temporarily suspend registrations automatically when those pile up.