Il credential stuffing consiste nel riprovare sul tuo login coppie di email e password trapelate da altri siti. Le persone riutilizzano le password, quindi una piccola parte di qualsiasi lista trapelata funziona quasi ovunque. L'attaccante non ha bisogno di violare il tuo sistema; gli servono volume e un modulo di login che risponda in fretta.
Che aspetto ha nei tuoi log
- Un tasso di fallimento che schizza. I login normali vanno quasi sempre a buon fine. Un attacco di stuffing fallisce diciannove volte su venti.
- Molti account, pochi tentativi ciascuno. A differenza del brute force, ogni account viene provato una o due volte, quindi i blocchi per account non scattano mai.
- Molti indirizzi. I tentativi passano da pool di proxy residenziali, quindi bloccare gli IP più attivi lo scalfisce appena.
- Login senza pagina. L'endpoint di login viene chiamato direttamente, da client che non hanno mai caricato la pagina di login.
- Tempi da macchina. Richieste a ritmo costante, nelle ore in cui i tuoi clienti dormono.
Perché le difese abituali non bastano
I rate limit per IP vengono aggirati da pool di proxy con migliaia di uscite. I blocchi degli account danneggiano i tuoi clienti più dell'attaccante, e possono diventare un modo per chiudere fuori le persone di proposito. I CAPTCHA vengono risolti da servizi a pagamento per una frazione di centesimo. Ognuna di queste difese aggiunge attrito per le persone vere e un piccolo costo per i bot.
Valuta il client, non solo la richiesta
Uno strumento di stuffing può cambiare IP e User-Agent a ogni richiesta. Quello che fa fatica a simulare è un browser intero e coerente, che ha caricato la tua pagina, ha eseguito il tuo script e si comporta come una persona per tutta la sessione:
- un token firmato dalla pagina, assente o condiviso tra molte sessioni;
- flag di automazione e fingerprint del browser che non tornano;
- un solo dispositivo o token che prova molti account diversi;
- tentativi che vanno avanti dritti nonostante gli errori, cosa che le persone non fanno.
Dove mettere il controllo
Chiedi prima di verificare la password, così un bot non scopre mai se una coppia funziona:
- bot high: rispondi come se la password fosse sbagliata. Lo strumento non impara nulla e il tuo cliente non viene mai coinvolto.
- bot: chiedi un secondo fattore o un codice via email prima di far entrare la sessione.
- tutti gli altri: il login normale.
Rispondere a un bot con lo stesso "password errata" che vedrebbe una persona è importante: una pagina di blocco diversa dice all'attaccante di cambiare tattica.
Dopo il login
Racconta al tuo controllo bot cosa è successo dopo. Un login che poi porta a un ordine reale, o un chargeback che prova il contrario, è un'evidenza che nessun header di richiesta può falsificare, e rende più precisa la decisione successiva sullo stesso visitatore.