Het advertentiescript van Adform, ingebed op de sites van zo'n 14.000 klanten, serveerde ruim een week lang een cryptostealer die gekopieerde walletadressen verving, ontdekte beveiligingsonderzoeker Kevin Beaumont.
Voor een Nederlands bedrijf dat Adform of vergelijkbare ad-tech op de eigen pagina's draait, is dat een ongemakkelijke rolwissel. De eigen server is niet aangeraakt, het CMS is niet gekraakt, en toch werd de site het afleverpunt van malware. Bezoek je een site die Adform gebruikt, dan besmet die site jouw apparaat, schrijft Beaumont. De bezoeker ziet in de adresbalk alleen de domeinnaam van de website-eigenaar.
Wat de code deed
Adform levert zijn trackingscript uit vanaf s2.adform.net onder de naam trackpoint-async.js, en dat bestand staat ingebed op elke site die het platform gebruikt. Aan het einde van de legitieme bibliotheek was in versluierde vorm extra code geplakt. Die code las elke drie seconden het klembord uit, herkende geldige bitcoin-, ethereum- en TRON-adressen en verving ze door adressen van de aanvaller. Kopieerde je het juiste adres opnieuw, dan werd het opnieuw omgewisseld. Ook adressen die gewoon zichtbaar op de pagina stonden kon de code herschrijven, zodat een betaalverzoek meteen het verkeerde adres toonde.
Andere via Adform uitgeleverde scripts stuurden het IP-adres van de bezoeker, de verwijzende website en het URL-pad naar een server van de aanvaller op 84.32.102.230, poort 7744. Op VirusTotal sloeg geen enkele antivirus-engine aan op het besmette bestand.
Dat een omgewisseld adres onopgemerkt blijft, is geen toeval. Een walletadres is een reeks van tientallen tekens die vrijwel niemand met het oog controleert.

De tijdlijnen lopen niet gelijk
Adform stelde op 27 juli verdachte activiteit vast en zegt dat het de kwaadaardige code verwijderde en verdere maatregelen nam om bezoekers, klanten en het platform te beschermen. De code was volgens het bedrijf niet bedoeld om software te installeren of zich op een apparaat vast te zetten, en werkte alleen zolang de betreffende pagina openstond. De diensten zijn nu veilig te gebruiken, stelt Adform, terwijl het onderzoek doorloopt. Klanten zijn via aparte berichten geïnformeerd, bezoekers krijgen het advies hun browsercookies te wissen.
Die verklaring beschrijft de impact als een bezoek aan een getroffen site op 27 juli 2026. Beaumont zag de kwaadaardige activiteit de hele week draaien en constateerde pas tijdens het schrijven van zijn analyse dat de code begon te verdwijnen. Het oudste besmette exemplaar dat BleepingComputer terugvond in een archiefkopie stamt van 26 juli, 23:29 uur GMT. Hoeveel en welke sites het bestand daadwerkelijk hebben uitgeleverd, staat in geen van beide publicaties: een aantal of een lijst ontbreekt. Het nieuws kwam bovendien van een onderzoeker, niet van een publieke melding door de leverancier.
Wat er op je eigen pagina's draait
Een third-party script is code van een externe partij die je zelf in je pagina's zet en die in de browser van je bezoeker draait met dezelfde rechten als je eigen code: analytics, chatwidgets, A/B-tests, consentbanners, advertentie- en trackingpixels. Verandert dat bestand aan de kant van de leverancier, dan verandert jouw site mee. Vier maatregelen beperken dat risico.
- Inventarisatie. Open het netwerktabblad van je browser op je eigen site en noteer elk domein waarvandaan een script laadt. Wat niemand meer kan uitleggen, kan eruit.
- Subresource Integrity. Een hash in de scripttag laat de browser weigeren wat niet exact overeenkomt met het goedgekeurde bestand. Dat werkt alleen bij scripts met vaste inhoud, en veel ad-tech levert bewust een steeds wisselend bestand uit.
- Content Security Policy. Een header die vastlegt vanaf welke domeinen scripts mogen laden en met welke bestemmingen de pagina verbinding mag maken. Dat houdt het script zelf niet tegen, maar wel een groot deel van wat het naar buiten kan sturen.
- Contractuele eisen. Leg vast binnen hoeveel uur een leverancier een incident meldt, welke technische kenmerken hij dan deelt en wie de bezoekers informeert.
Waar de code landt, is veranderd
Supply chain-aanvallen via code van derden zijn geen nieuw fenomeen. Bij de gekaapte npm-pakketten debug, chalk en axios bereikte de kwaadaardige code binnen twee uur één op de tien cloudomgevingen, en breder is bij 48 procent van de inbraken inmiddels een derde partij betrokken. Wat de zaak bij Adform toevoegt, is de plek waar de vergiftigde code terechtkomt. Niet in een build op een ontwikkelmachine, maar rechtstreeks in de browser van de bezoeker van een doodgewone bedrijfssite.
Een week ongedetecteerde activiteit bij een leverancier met 14.000 klanten, met nul treffers op VirusTotal, laat zien hoeveel zicht de meeste website-eigenaren hebben op de code die ze zelf hebben ingeplakt. De vraag verschuift van of je server dicht staat naar wiens code je uitvoert op je eigen pagina's, en of je het zou merken als die code verandert.
Veelgestelde vragen
Grip op externe code
Wat er van derden in je site en je systemen meedraait, is uiteindelijk een ontwerpkeuze. Ik denk met je mee, ontwerp het en bouw het ook, van koppelingen tot automatisering, self-hosted waar dat kan.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
