Kort samengevat: hoe formulier-gebaseerde skimmers kaartgegevens stelen
- Je WAF en je CSP zullen je vertellen dat de checkout schoon is terwijl kaartgegevens de browser al hebben verlaten. Beide controles zitten op de netwerklaag en de diefstal gebeurt binnen de DOM, op een script van een domein dat je allowlist al vertrouwt.
- Visa schrijft 70% van kaartdiefstal toe aan de clientlaag, en British Airways verloor rond 380.000 records in 22 dagen voor het een boete van 20 miljoen pond van de ICO betaalde. cside hasht elke scriptpayload in echte browsersessies en alarmeert zodra een hash verandert.
- Als je niet kunt zeggen of een script van een vertrouwd domein in het laatste uur is gewijzigd, ben je een payload-swap verwijderd van de volgende case study.
Formjacking is een webaanval die kwaadaardige JavaScript in een betaal- of afrekenpagina injecteert om kaartdata te stelen terwijl een bezoeker die intypt. Het script leest de waarden van formuliervelden in realtime, stuurt ze naar een server die door de aanvaller wordt beheerd en laat de oorspronkelijke transactie gewoon voltooien. De klant krijgt een bevestiging, de verkoper ziet een afgeronde verkoop en de kaartgegevens zijn al weg. Omdat de diefstal in de browser plaatsvindt, blijft die onzichtbaar voor de controles op netwerk- en serverniveau waar de meeste verkopers op vertrouwen.
Hoe formjacking werkt: stap voor stap
Formjacking is een aanval op de uitvoeringslaag. Het vereist geen netwerkinbraak of servercompromittering. Zo verloopt het.
-
Een aanvaller injecteert kwaadaardige JavaScript in een betaal- of afrekenpagina. Dit gebeurt meestal door een script van een derde partij te compromitteren dat de verkoper al laadt, zoals een tagmanager, een analytics-bibliotheek of een tool die op een CDN wordt gehost.
-
Wanneer een bezoeker bij het betaalformulier komt, begint het geïnjecteerde script toetsaanslagen of veldwaarden te onderscheppen in het Document Object Model van de browser. Het hoeft niet te wachten tot het formulier wordt verzonden.
-
Terwijl de bezoeker zijn kaartnummer, vervaldatum en CVV intypt, legt het script die waarden vast en sluist ze in realtime weg naar een server die door de aanvaller wordt beheerd. De overdracht is meestal gecodeerd om opvallende detectie op netwerkniveau te vermijden.
-
Het oorspronkelijke formulier blijft gewoon werken. De betaling wordt verwerkt, de bezoeker ontvangt een bevestiging en niets in zijn browser of in de serverlogs van de verkoper wijst op iets ongewoons.
Daarom is formjacking zo gevaarlijk. Er is geen foutmelding, geen mislukte transactie en geen afwijking op netwerk- of serverniveau. De aanval is onzichtbaar voor de controles die de meeste verkopers hebben ingericht.
British Airways 2018: wat er gebeurde
In 2018 injecteerde een Magecart-dreigingsactor een formjacking-script in de boekingssite van British Airways en bleef 22 dagen onopgemerkt actief, waarbij ongeveer 380.000 betaalrecords van klanten werden gecompromitteerd, waaronder kaartnummers, vervaldatums, CVV's en persoonlijke gegevens. Interne systemen hebben het in die periode niet opgemerkt omdat er geen monitoring op payloadniveau was ingericht.
De aanval wijzigde een script dat al op de site aanwezig was, dus er verschenen geen nieuwe script-URL's. Er ging geen enkele regel van de Content Security Policy af, omdat het domein dat het gewijzigde script serveerde al op de allowlist stond.
Het ICO-onderzoek leidde tot een boete van £20 miljoen. De grondoorzaakanalyse identificeerde het niet detecteren van een payloadwijziging binnen een vertrouwd script als de centrale technische tekortkoming.
Visa meldt dat het grootste deel van de diefstal van betaalkaartgegevens nu plaatsvindt op de clientlaag, in de browser, in plaats van op de server of tijdens de overdracht:
| Waar kaartdata wordt gestolen | Aandeel van de diefstal |
|---|---|
| Clientlaag (browser / DOM) | 70% |
| Server-/netwerklaag | 30% |
Bron: Visa. Formjacking is het belangrijkste mechanisme achter die 70%.
Formjacking en Magecart: wat elke term betekent
Magecart is een categorie dreigingsactoren, geen techniek. De naam verwijst naar een los collectief van criminele groepen die formjacking als hun voornaamste aanvalsmethode gebruiken.
Formjacking is de techniek: JavaScript injecteren om formuliergegevens te onderscheppen en weg te sluizen. Magecart-groepen behoren tot de meest actieve gebruikers van die techniek, maar ze zijn niet de enige.
Wanneer onderzoekers en journalisten de termen door elkaar gebruiken, beschrijven ze meestal een formjacking-aanval die aan Magecart wordt toegeschreven. Het onderscheid is belangrijk voor detectie. Je zoekt niet naar de signatuur van een specifieke groep; je zoekt naar het gedrag van payloadonderschepping, wie er ook achter zit.
Waarom WAF's en CSP's formjacking niet tegenhouden
Een web application firewall inspecteert HTTP-verkeer op de netwerklaag. Hij ziet de requests en responses tussen de browser en de server, maar heeft geen zicht op welke JavaScript in de DOM wordt uitgevoerd nadat de pagina is geladen. Een formjacking-script leeft volledig in de DOM. Het genereert geen verdachte request naar de server van de verkoper; het stuurt de gestolen data rechtstreeks naar een endpoint dat door de aanvaller wordt beheerd.
Een Content Security Policy beperkt welke domeinen scripts mogen serveren, en dat is een nuttige controle. Maar een formjacking-aanval wijzigt meestal een script dat wordt geserveerd vanaf een domein dat de CSP al vertrouwt. Het domein komt door de allowlist-controle heen en de payload zelf wordt nooit geïnspecteerd. Dit is precies de leemte waar Visa op wijst wanneer het ongeveer 70% van de kaartdiefstal toeschrijft aan de clientlaag, waar WAF's en servercontroles geen zicht op hebben.
Hoe cside-scriptmonitoring formjacking detecteert
Scriptmonitoring in echte sessies detecteert formjacking door van elke scriptpayload een hash te maken terwijl die in een echte browseromgeving wordt uitgevoerd, en waarschuwt zodra een hash verandert. Zo wordt payloadinjectie binnen vertrouwde scripts opgemerkt die zowel een CSP-allowlist als een WAF missen.
cside-scriptmonitoring draait in echte browsersessies en combineert 100+ signalen per sessie tot een realtime oordeel.
Wanneer een formjacking-payload in een vertrouwd script wordt geïnjecteerd, verandert de hash van dat script. cside detecteert de wijziging nagenoeg in realtime en verstuurt een waarschuwing met de script-identifier, de vorige hash, de nieuwe hash en een tijdstempel. De waarschuwing komt binnen voordat het gecompromitteerde script een noemenswaardige hoeveelheid gestolen data kan verzamelen.
De fingerprinting van cside behoudt een hoge nauwkeurigheid over incognito-, VPN- en cookiewissende sessies heen, en de monitoringmethodiek is gevalideerd door VikingCloud.
De PCI DSS-vereiste die specifiek op formjacking is gericht
PCI DSS-vereisten 6.4.3 en 11.6.1 zijn specifiek ingevoerd om het formjacking-risico aan te pakken, en werden verplicht op 2025-03-31.
Vereiste 6.4.3 vraagt verkopers om elk script op betaalpagina's te inventariseren, voor elk een zakelijke rechtvaardiging te documenteren, expliciete autorisatie te verkrijgen en de integriteit doorlopend te verifiëren. Dit richt zich rechtstreeks op het scenario waarin een vertrouwd script wordt gewijzigd zonder dat de verkoper het weet.
Vereiste 11.6.1 vereist een waarschuwingsmechanisme dat afgaat wanneer de headers of de inhoud van een betaalpagina op een ongeautoriseerde manier veranderen. De vrijwel realtime detectie die cside biedt, voldoet aan wat QSA's zoeken bij het beoordelen van 11.6.1-bewijs en gaat daar zelfs verder dan.
Controleer je betaalpagina's op injectierisico en begin gratis met cside PCI Shield. Voor hoe de termen zich tot elkaar verhouden, zie formjacking versus Magecart versus digital skimming, en voor hoe doorlopende monitoring in de praktijk werkt, zie de beste platforms voor het monitoren van scripts van derden.








