SMS

Wat is SMS-pumping en hoe stop je het?

SMS-pumping is fraude die jouw product betaalde berichten laat versturen naar nummers die de aanvaller beheert.

Een verificatieformulier kan er legitiem uitzien terwijl een aanvaller het gebruikt om betaalde verzendingen te triggeren. De aanvaller richt zich op aanmeld-, verificatiecode- of verificatieflows waarmee iedereen een verzending kan triggeren. De aanval genereert berichtkosten terwijl een partij langs de route ervan profiteert.

De sector noemt SMS-pumping ook wel kunstmatig opgeblazen verkeer.

Waarom doet iemand dit?

Omdat het versturen van een SMS naar bepaalde bestemmingen geld verplaatst, en een deel daarvan verderop kan worden afgeroomd.

Het afleveren van een bericht kost de verzender geld en betaalt partijen langs de route. Als een aanvaller een partij op die route beheert of er door wordt betaald, is het genereren van verkeer ernaartoe direct winstgevend. De aanvaller hoeft de verificatiecodes niet te lezen en geen account te compromitteren: de verzending zelf is het product.

Dat maakt pumping anders dan de meeste vormen van misbruik. Er is geen accountovername te detecteren en geen data om te beschermen. De schade is de factuur, en die loopt op terwijl elk individueel verzoek er legitiem uitziet.

Hoe ziet het eruit?

Een piek met een kenmerkend patroon, en het patroon is belangrijker dan de omvang.

  • Geconcentreerd op ongebruikelijke bestemmingen. Verzoeken clusteren op landcodes en nummerreeksen die je normaal niet bedient, vaak met hoge terminatietarieven.
  • Vrijwel geen voltooiingen. Verificatiecodes worden aangevraagd en nooit ingevoerd, waardoor de verhouding tussen verzendingen en geslaagde verificaties instort.
  • Nummers die synthetisch ogen. Opeenvolgende of patronen vertonende reeksen in plaats van de spreiding van echte klanten.
  • Een bron die moeilijk op identiteit te blokkeren is. Verzoeken komen van veel adressen, omdat de flow die wordt misbruikt geen account vereist.

Dat laatste punt verklaart waarom beperking van het aantal verzoeken per gebruiker op zichzelf zwak is: er is geen gebruiker. Het misbruik zit in het deel van je product dat bewust werkt voor onbekenden.

Hoe stop je het?

Vier maatregelen, grofweg op volgorde van hoeveel ze opleveren voor de moeite.

  • Beperk bestemmingen tot de landen die je bedient. Als je klanten in vijf landen hebt, is verzenden naar de andere tweehonderd verlies zonder voordeel. Bird beperkt verzending per bestemming, dus een land moet eerst worden ingeschakeld voordat verkeer het kan bereiken.
  • Beperk op wat je hebt, niet op wie ze zijn. Per telefoonnummer, per nummerprefix, per adres, per sessie. Fraude die niet aan een account te koppelen is, kan meestal wel aan een bestemmingsreeks worden gekoppeld.
  • Voeg weerstand toe vóór de verzending. Een challenge voordat een verificatiecode wordt aangevraagd kost een echte gebruiker een moment en kost een geautomatiseerde aanvaller zijn verdienmodel.
  • Let op de voltooiingsratio in plaats van het volume. Stijgende verzendingen zijn dubbelzinnig. Stijgende verzendingen terwijl voltooiingen gelijk blijven is het signaal, en dat beweegt eerder dan de factuur.

Bird hanteert ook een eigen plafond onder wat je zelf instelt. De gids voor het verzenden van verificaties zegt het duidelijk:

Independent of your settings, Verify enforces platform caps to keep OTP traffic from being weaponized, whether against your wallet (SMS pumping) or against a victim's inbox

Dat is om twee redenen goed om te weten: een verkeerd geconfigureerde eigen limiet is niet het enige dat tussen jou en een factuur staat, en een limiet die je niet zelf hebt ingesteld kan de reden zijn dat legitiem verkeer wordt geweigerd.

Is dit hetzelfde als een verificatiecode-floodingaanval?

Verwant, maar gericht op een ander slachtoffer.

Hetzelfde citaat noemt beide. Pumping is gericht op jouw portemonnee: de aanvaller wil dat berichten worden verstuurd, en de ontvanger is bijzaak. Flooding is gericht op iemands toestel: de aanvaller wil één slachtoffer bedelven onder verificatiecodeberichten, vaak als intimidatie of om een echte melding te laten verdwijnen.

Pumping toont zich als veel bestemmingen en geen voltooiingen; flooding toont zich als één bestemming en veel verzoeken. Een limiet per ontvanger beperkt herhaalde verzoeken naar één nummer. Het kan een aanval verspreid over veel nummers niet stoppen. Combineer het met bestemmingsbeperkingen.

Voor de bredere context over verificatieflows behandelt wat betekent OTP het mechanisme waar dit misbruik op meelift.

Kort gezegd

  1. De inkomsten van de aanvaller zijn jouw verzendkosten.

    Verkeer wordt gepompt naar nummers op routes waar iemand verderop een deel opstrijkt, dus de berichten zijn het doel en geen bijeffect.

  2. Het richt zich op alles wat een SMS verstuurt zonder inlog.

    Aanmeldformulieren, verificatiecodeverzoeken en telefoonverificatieflows zijn het aanvalsoppervlak, omdat ze een onbekende een betaald bericht laten triggeren.

  3. Het patroon is bestemmingsgebonden, niet volumegebonden.

    Een piek geconcentreerd op ongebruikelijke landcodes en nummerreeksen, met vrijwel geen voltooide verificaties, is het signaal.

  4. Platformlimieten zitten onder je eigen instellingen.

    Bird hanteert limieten op verificatieverkeer onafhankelijk van wat je zelf instelt, dus een verkeerd geconfigureerde limiet is niet de enige verdedigingslinie.

Breng het in de praktijk.

Ga verder met de documentatie, gidsen en voorbeelden voor dit onderwerp. De bronnen zijn in het Engels.

Ontvang een implementatieoverzicht

Bouw op hetzelfde netwerk.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra u een betaalmethode toevoegt en een afzender verifieert.

Jouw volgende idee.
Klaar om te verbinden.