4/2/2026 at 5:44:08 AM
Recently we suffered a different kind of subscription bombing: a hacker using our 'change credit card' form to 'clean' a list of thousands credit cards to see which ones would go through and approve transactions.He ran the attack from midnight to 7AM, so there were no humans watching.
IPs were rotated on every single request, so no rate limiter caught it.
We had Cloudflare Turnstile installed in both the sign up form and in all credit card forms. All requests were validated by Turnstile.
We were running with the 'invisble' setting, and switched back to the 'recommended' setting after the incident, so I don't know if this less strict setting was to blame.
Just like OP, our website - to avoid the extra hassle on users - did not require e-mail validation, specially because we send very few e-mails.
We never thought this could bite us this way.
Every CC he tried was charged $1 as confirmation that the CC was valid, and then immediately refunded, erroring out if the CC did not approve this $1 transaction, and that's what he used. 10% of the ~2k requests went through.
Simply adding confirmation e-mail won't cut it: the hacker used - even tough he did not need it - disposable e-mail addresses services.
This is a big deal. Payment processors can ban you for allowing this to happen.
by pqdbr
4/2/2026 at 8:07:02 AM
We solved this by introducing a silent block. If the system notices unusual behavior (too many payment attempts per user, for example), it no longer sends the payment attempt to the provider. Instead, it idles for a second or two and then just fails with a generic “payment declined.” Most attackers don’t notice they’re being blocked and just assume all credit cards are bad.by AndroTux
4/2/2026 at 9:02:45 AM
Sounds like any per-user detection wouldn't have worked in this case.by quietbritishjim
4/2/2026 at 7:10:30 AM
Well, what you can do is notify the card issuer about those cards that went through, so they can mark them as stolen. That surely will make the hacker really happy, and discourage them of doing it again :)by shaky-carrousel
4/2/2026 at 10:59:32 AM
So you mean you are keeping full card numbers somewhere in your logs to... fix some potential security issue...?by gregoriol
4/2/2026 at 8:32:27 AM
the $1 auth charge pattern is what makes this brutal payment processors see you as enabling card testing even if you're the victim.stripe has actually terminated accounts for this. turnstile invisible mode is basically just logging at that point,it rarely challenges anything. lesson learned the hard way i guess.by imrozim
4/2/2026 at 8:40:28 AM
Did they use the same username/login every time?by Steve16384
4/2/2026 at 6:44:52 AM
Ouch. Just one credit card change per account?This is one of those levels of monitoring that only gets put in place after such an event. Eg whole subsystem analysis - the change card feature being used 1000s of times (well, proportional to scale) in 7 hours is a massive red flag
by gib444
4/2/2026 at 7:34:37 AM
> This is one of those levels of monitoring that only gets put in place after such an event.For a website, yes. But honestly the credit card people and their infrastructure should probably _also_ watch out for this. They'd be in a much better place to detect these.
by eru
4/2/2026 at 8:06:14 AM
Cloudflare and any other anti-bot service is only good against people without willpower and knowledge to bypass them.JS can be reversed, you clearly see what data points they use for detection. Anything can be spoofed and it will look like human behavior.
And if everything fails, you outsource it to AI - Always Indian :D
by Fokamul
4/2/2026 at 7:41:10 AM
[dead]by federicosimoni