Korzen

Blog

SMS pumping-fraude: zo stop je nep-OTP-verzoeken

Bots vullen je telefoonnummerveld in om eenmalige codes te sturen naar nummers die de aanvaller een deel van elke sms betalen. Hoe SMS pumping werkt, waaraan je het herkent en waar je het stopt.

SMS pumping maakt van je telefoonverificatie een inkomstenbron voor iemand anders. Een bot vult op grote schaal telefoonnummers in op het formulier dat een eenmalige code stuurt, en die nummers horen bij een reeks die een mobiele operator beheert. Elke sms die jij betaalt, levert die operator een vergoeding op, en de aanvaller krijgt daar een deel van. Zo beschrijft Twilio het, dat het ook SMS toll fraud noemt. Er wordt niets van je gebruikers gestolen; het verlies is je sms-rekening.

Hoe SMS pumping werkt

Elk openbaar formulier dat een sms stuurt, is een doelwit: de registratie die een telefoonnummer verifieert, de login die een code stuurt, een knop "stuur me de link per sms", een chatbot die per sms antwoordt. Twilio noemt eenmalige codes, registratieflows, triggers voor meldingen en chatbot-endpoints. De operator kan meedoen, met een afspraak om de opbrengst te delen, of zonder het te weten worden gebruikt.

De rekening kan hoog oplopen. De eigenaar van Twitter zei in december 2022 dat het bedrijf zo'n 60 miljoen dollar per jaar verloor aan SMS pumping via 390 telecomoperators. Dat is zijn bewering, geen gecontroleerd cijfer, maar het laat zien wat een groot registratieformulier waard is voor een aanvaller.

De signalen

  • Sms'jes naar landen die je niet bedient. Codes naar plaatsen waar je weinig of geen klanten hebt.
  • Codes die niemand invult. Twilio's kenmerk bij eenmalige codes: de verificatie wordt nooit afgerond.
  • Nummers op een rij. Veel berichten naar een blok aangrenzende of vergelijkbare nummers.
  • Uitgaven zonder groei. Sms-kosten die stijgen zonder meer registraties die converteren.

Wat je sms-provider kan doen

Je provider ziet het bericht als het vertrekt, dus begin daar. Twilio's advies: zet sms naar landen die je niet bedient uit, beperk berichten naar dezelfde nummerreeks, stuur alleen naar mobiele nummers na een opzoeking van het lijntype, en zet de fraudebescherming aan, die een verdacht bestemmingsprefix blokkeert, zoals een land waar je account nog nooit een sms naartoe stuurde. Dat heeft een prijs: volgens Twilio blijven de vals-positieven onder 1% op het standaardniveau en onder 2% op het strengste. Deze maatregelen werken bij het versturen, nadat je formulier de request al heeft aangenomen.

Stop de request voordat de code vertrekt

De sms kost pas geld als je hem verstuurt, dus de goedkoopste plek om pumping te stoppen is de request die erom vraagt. Twilio raadt zelf aan elk formulier te beschermen dat een sms verstuurt, en een pauze tussen codeverzoeken van hetzelfde nummer of IP-adres. Bot Protection beoordeelt die request op je server, voordat je de sms-provider aanroept:

  • Vraag op de POST die de code verstuurt om bewijs dat je pagina echt bezocht is: een script dat telefoonnummers naar je API stuurt zonder de pagina te laden, krijgt een uitdaging, welke klasse het ook heeft.
  • bot_high: stuur niets. Met het lokantwoord aan antwoordt je server alsof de code verstuurd is en stuurt er geen, zodat de bot geen reden heeft zijn script aan te passen.
  • bot: eerst de uitdagingspagina, en pas daarna de code.
  • unknown, human, human_high: stuur de code.

De twee lagen vullen elkaar aan: Bot Protection stopt de bot bij je formulier, en de bescherming van de provider vangt op wat het versturen nog bereikt.

Meet het voordat je blokkeert

Begin in monitormodus. Niemand wordt tegengehouden, en elk antwoord zegt wat de blokkeermodus had gedaan, zodat je de requests die hij had geweigerd kunt vergelijken met de codes die nooit zijn ingevuld. Als die twee overeenkomen, zet je de blokkeermodus aan. Geef je bij registratie ook gratis credits weg, lees dan trialmisbruik: dezelfde bots willen vaak allebei.

Blijf fail-open

Een code die nooit aankomt, sluit een echt mens buiten je product. Gebruik een korte timeout en stuur de code bij elke fout: een paar gepompte sms'jes tijdens een storing kosten minder dan een registratie die niet meer werkt. Meer in waarom een botcontrole fail-open moet zijn.

Bronnen

Gecontroleerd op 28 oktober 2026.