Ruim 5.400 gehackte websites van kleine bedrijven serveren hun eigen bezoekers een nep-CAPTCHA die malware installeert, meldt Netskope Threat Labs, en de aanvalscode staat op een blockchain die niemand kan weghalen.
Het gaat vrijwel altijd om WordPress, soms om PrestaShop. De getroffen sites hebben verder niets gemeen: klinieken, loodgieters, webshops, zonder gedeelde branche, regio of eigenaar. Dat draait de ClickFix-dreiging om die je tot nu toe kende. Niet je medewerker die ergens anders een commando plakt, maar je eigen bedrijfssite die de val opzet voor iedereen die langskomt. Wie dat commando plakt, doet dat juist omdat hij jouw domein vertrouwde, en jouw merk staat erboven.
De campagne loopt al sinds het voorjaar
Netskope telde in zijn meetperiode meer dan 5.400 verschillende gehackte sites die het BSC-testnet aanroepen, verspreid over ruim 2.200 organisaties wereldwijd. Enkele honderden daarvan zijn op een willekeurige dag actief, doordeweeks nu meer dan 300. In februari lag het dagcijfer nog rond de dertig. In augustus piekte de teller op 536 sites op een dag.

Waarom een takedown hier niets oplost
De aanvallers bewaren hun code niet op een server maar in een smart contract op het testnet van BNB Smart Chain. Die techniek heet EtherHiding. Een testnet is de oefenversie van een blockchain, bedoeld voor ontwikkelaars: de munten hebben geen waarde en worden gratis uitgedeeld. De operator krijgt daarmee dezelfde onaantastbare opslag als op de echte keten, alleen zonder kosten. Er is geen hoster te bellen, geen domeinnaam in beslag te nemen en geen bestand met een hash om te blokkeren. En omdat elke bezoeker het contract opnieuw uitleest bij het laden van de pagina, verandert een enkele transactie in een klap wat al die duizenden sites uitserveren.
Wat er in je eigen site zit
Op elke besmette site staat een kleine ingevoegde loader, soms als inline script, soms als nagemaakte pluginmap. Die loader doet een eth_call naar het contract, krijgt een tweede script terug en voert dat uit in de browser van de bezoeker. Het script vervaagt de pagina achter een nep-CAPTCHA en instrueert de bezoeker om het uitvoervenster te openen en een commando te plakken. Dat commando is een downloader die de echte lading ophaalt. Welke lading dat is, ligt niet vast: de operator bepaalt het per bezoeker via het contract. Aan de kant van wie klikt is dit hetzelfde patroon dat in de eerste helft van 2025 met ruim 500 procent groeide tot de tweede aanvalsvector na phishing.
Hoe de sites zijn binnengedrongen, weet Netskope niet. Bij WordPress lopen de bekende routes via de kern en via plugins: in juli misbruikten aanvallers een kritiek kernlek waarmee code zonder inloggen kon worden uitgevoerd, en in augustus maakte een gehackte updatefeed van pluginmaker BdThemes stille beheerdersaccounts aan op sites die zijn plugins draaiden.
Het advies aan site-eigenaren is navenant onspectaculair en concreet: controleer je CMS-bestanden op integriteit. De loader wordt aangeplakt aan een legitiem JavaScript-bestand of in een nepmap tussen je plugins gezet. Kijken of er iets nieuws bij staat is dus niet genoeg.
Reken er ook niet op dat je het zelf tegenkomt. In een verwante WordPress-campagne die Netskope eind augustus laag voor laag uitpluisde, sloeg de code het injecteren over zodra de bezoeker ingelogd was of op wp-admin zat. Precies de persoon die de besmetting kan opruimen, krijgt hem daardoor nooit te zien. Die keten eindigde bij de wachtwoorddief Amatera.
De nieuwere variant slaat de nep-CAPTCHA over
Naast de ClickFix-overlay ziet Netskope inmiddels een tweede variant. Daar levert het contract een stukje JavaScript dat meteen een WebRTC-datakanaal opent, hetzelfde mechanisme dat videobellen in de browser mogelijk maakt. Normaal onderhandelen twee kanten eerst via een signaleringsserver, en dat laat sporen na die een beveiligingsteam kan zien: DNS-opvragingen, STUN-verkeer, een DTLS-handdruk. Deze variant schrijft het antwoord op zijn eigen aanbod zelf, met het IP-adres, de UDP-poort, het ICE-wachtwoord en de certificaatvingerafdruk van de aanvaller al vast ingebakken. Er is geen handdruk en geen zichtbaar signaleringsverkeer. Het versleutelde kanaal staat bij het eerste pakket open.
Wat er binnenkomt, draait in het geheugen van de browser en wordt nergens naar schijf geschreven. Om het beveiligingsbeleid van de site te passeren leent het script de nonce van een legitiem script op de pagina, waarna het eigen scriptelement meteen weer verdwijnt. Voor een webproxy die alleen HTTP inspecteert, valt er niets te zien.
De enige knop die overblijft
Deze campagne combineert twee dingen die los al lastig zijn: opslag die niet neer te halen valt en een transportkanaal dat zich niet laat inspecteren. Netskope verwacht meer aanvallen die die combinatie maken en wijst verdedigers erop de volledige BSC-testnetpool te blokkeren in plaats van alleen het hoofdendpoint.
Voor de eigenaar van een gehackte site verschuift daarmee alles naar het eigen huis. Het contract blijft staan en blijft herschrijfbaar, de hostingpartij van de aanvaller bestaat niet, en er is geen instantie te bellen die dit voor je oplost. De aanval stopt op het moment dat het ingevoegde script uit je eigen bestanden verdwijnt en de route waarlangs het binnenkwam dicht zit. Dat is geen kwestie van betere detectie bij je bezoekers, maar van onderhoud aan een site die vaak al jaren op de automatische piloot draait.
Veelgestelde vragen
Je site verdient onderhoud
Een website die jaren op de automatische piloot draait, wordt vanzelf een risico voor je klanten. Ik denk mee over wat je nodig hebt, ontwerp het, bouw het en houd het draaiend, self-hosted waar dat kan.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.

