Korzen

Blog

SMS pumping: come fermare le false richieste di codici OTP

I bot compilano il tuo campo del numero di telefono per inviare codici monouso a numeri che pagano all'attaccante una parte di ogni SMS. Come funziona lo SMS pumping, i segnali e dove fermarlo.

Lo SMS pumping trasforma la tua verifica del telefono nel guadagno di qualcun altro. Un bot inserisce numeri di telefono nel modulo che invia un codice monouso, a grandi volumi, e i numeri appartengono a un intervallo controllato da un operatore mobile. Ogni SMS che paghi frutta una tariffa a quell'operatore, e l'attaccante ne prende una parte. Twilio lo descrive così, e lo chiama anche SMS toll fraud. Ai tuoi utenti non viene rubato nulla; la perdita è la tua bolletta degli SMS.

Come funziona lo SMS pumping

Ogni modulo pubblico che invia un SMS è un bersaglio: la registrazione che verifica un telefono, l'accesso che invia un codice, un pulsante "mandami il link per SMS", un chatbot che risponde per SMS. Twilio cita i codici monouso, i flussi di registrazione, gli invii di notifiche e gli endpoint dei chatbot. L'operatore può essere complice, con un accordo di condivisione dei ricavi, o essere sfruttato senza saperlo.

Il conto può essere alto. Il proprietario di Twitter ha detto nel dicembre 2022 che l'azienda perdeva circa 60 milioni di dollari all'anno per lo SMS pumping attraverso 390 operatori di telecomunicazioni. È una sua affermazione, non una cifra verificata, ma mostra quanto vale per un attaccante un grande modulo di registrazione.

I segnali

  • SMS verso paesi che non servi. Codici inviati dove hai pochi clienti o nessuno.
  • Codici che nessuno inserisce. Il segnale di Twilio per i codici monouso: la verifica non viene mai completata.
  • Numeri in fila. Molti messaggi a un blocco di numeri vicini o simili.
  • Spesa senza crescita. Costi degli SMS che salgono senza un aumento delle registrazioni che convertono.

Cosa può fare il tuo fornitore di SMS

Il tuo fornitore vede il messaggio mentre parte, quindi inizia da lì. Il consiglio di Twilio: disattiva gli SMS verso i paesi che non servi, limita i messaggi verso lo stesso intervallo di numeri, invia solo a numeri mobili dopo una verifica del tipo di linea, e attiva la sua protezione antifrode, che blocca un prefisso di destinazione sospetto, come un paese a cui il tuo account non ha mai inviato SMS. Ha un costo: Twilio dichiara che i suoi falsi positivi restano sotto l'1% al livello standard e sotto il 2% al più severo. Questi controlli agiscono all'invio, quando il tuo modulo ha già accettato la richiesta.

Ferma la richiesta prima che il codice parta

L'SMS costa solo quando lo invii, quindi il punto più economico per fermare il pumping è la richiesta che lo chiede. Twilio stesso suggerisce di proteggere ogni modulo che fa partire un SMS, e un intervallo tra le richieste di codice dallo stesso numero o indirizzo IP. Bot Protection giudica quella richiesta sul tuo server, prima che tu chiami il fornitore di SMS:

  • Sulla richiesta che invia il codice, chiedi la prova che la tua pagina sia stata davvero visitata: uno script che invia numeri di telefono alla tua API senza caricare la pagina riceve una sfida, qualunque sia la sua classe.
  • bot_high: non inviare nulla. Con la risposta esca attiva, il tuo server risponde come se il codice fosse stato inviato e non ne invia nessuno, così il bot non ha motivo di cambiare script.
  • bot: prima la pagina di sfida, e il codice solo dopo.
  • unknown, human, human_high: invia il codice.

I due livelli si sommano: Bot Protection ferma il bot al tuo modulo, e la protezione del fornitore prende ciò che arriva comunque all'invio.

Misura prima di bloccare

Inizia in modalità monitor. Nessuno viene fermato, e ogni risposta dice cosa avrebbe fatto la modalità blocco, così puoi confrontare le richieste che avrebbe rifiutato con i codici mai inseriti. Quando i due coincidono, attiva la modalità blocco. Se alla registrazione dai anche crediti gratuiti, vedi l'abuso delle prove gratuite: spesso gli stessi bot vogliono entrambe le cose.

Resta fail-open

Un codice che non arriva mai chiude fuori dal tuo prodotto una persona vera. Usa un timeout breve e invia il codice a qualunque errore: qualche SMS gonfiato durante un guasto costa meno di una registrazione che smette di funzionare. Di più in perché un controllo anti-bot deve essere fail-open.

Fonti

Verificate il 28 ottobre 2026.