Skip to main content
Blog
Attacks Blog

"Microsoft Clairty" is niet Microsoft Clarity: deobfuscatie van een typosquatted advertentiefraude-script

cside ontdekte een nieuwe kwaadaardige client-side injectie afkomstig van een kwaadaardige browserextensie die Microsoft Clarity imiteert en verwijzingstokens overschrijft om verwijzingsinkomsten om te leiden naar een kwaadwillende actor.

Mar 03, 2026 20 min read
Blogcover - msclairty Threat Discovery - cside

Een browserextensie injecteert geobfusceerde JavaScript van msclairty[.]com, een typosquatted domein dat Microsoft Clarity imiteert. Het script verwijdert Google Analytics-cookies, stopt affiliate-cookies met de waarde pub=twsc, injecteert verborgen iframes naar discounthero[.]org en kaapt de Fetch API. Verrassend genoeg markeert geen enkel beveiligingshulpmiddel dit domein. Dit is de eerste publieke documentatie van msclairty[.]com.

Wat is msclairty[.]com?

msclairty[.]com is een typosquatted domein dat is ontworpen om Microsoft Clarity (msclarity[.]com / clarity[.]ms) na te bootsen, de populaire analytics- en heatmaptool van Microsoft. Simpel gezegd: de letters "i" en "r" in "clarity" zijn omgewisseld naar "clairty", subtiel genoeg om bij een vluchtige blik in een netwerklog of scripttag geen argwaan te wekken.

Het domein levert geen analytics. In plaats daarvan levert het een geobfusceerde JavaScript-payload die affiliate cookie stuffing, het verwijderen van trackingcookies en het kapen van de Fetch API uitvoert in de browser van de bezoeker.

Hoe werd dit script ontdekt?

In de afgelopen 48 uur begonnen we netwerkverzoeken naar msclairty[.]com te observeren op meerdere niet-gerelateerde websites in onze telemetrie. Het eerste verzoek dat we registreerden was op 2 maart 2026 om 21:17 UTC, waarna het verkeer scherp toenam in de ochtend van 3 maart. Het verkeer is niet afkomstig van een gecompromitteerde scripttag in de paginabron. In plaats daarvan injecteert een browserextensie het. We hebben de specifieke extensie nog niet geïdentificeerd, maar het injectiepatroon is consistent op elke getroffen site: dezelfde geobfusceerde payload, hetzelfde domein, hetzelfde gedrag, ongeacht de eigen scriptinventaris van de site.

De gemeenschappelijke noemer is de browser van de eindgebruiker, niet de codebase van de site.

We observeerden dat het script sites trof in meerdere niet-gerelateerde sectoren, waaronder transport (zoals vliegticketboekingsplatforms), SaaS-platforms (zoals projectmanagementtools), sportbeheerportalen en overheidsbetalingsportalen. De getroffen bezoekers zijn verspreid over meerdere Chrome-versies (132, 138 en 145) en zijn afkomstig van Amerikaanse IP-adressen aan zowel de oost- als westkust. Elke getroffen site laadt de identieke event.js-campagne-identifier en ontvangt dezelfde payload-hash, wat bevestigt dat dit één gecoördineerde campagne is die via één browserextensie verloopt.

De campagne-ID's wisselen dagelijks. Op 2 maart was de loader-URL bijvoorbeeld event.js?id=dHRcSiYkDj4&date=2026-03-02. Op 3 maart verscheen een nieuwe campagne-ID: event.js?id=XGp2NSkTRVs&date=2026-03-03. De parameter date= komt overeen met de datum van elke campagnewisseling. Dit betekent dat de infrastructuur actief wordt onderhouden en elke dag nieuwe campagne-identifiers uitrolt.

Elke getroffen gebruiker deelt dezelfde vingerafdruk. In alle verzoeken in onze telemetrie is het browserprofiel identiek: Windows 10 x64, desktop Google Chrome, geen mobiele apparaten. Niet één verzoek is afkomstig van Firefox, Safari, Edge, Brave, macOS, Linux, Android of iOS. Dit is een Chrome-only extensie. De sec-ch-ua-clienthints bevestigen echte Chrome (niet Chromium-forks die anders rapporteren), en sec-ch-ua-mobile: ?0 bevestigt desktop bij elk verzoek. We observeerden slechts 5 unieke bezoeker-IP's op alle getroffen sites, allemaal op Amerikaanse residentiële verbindingen.

De volledige aanval volgt een tweefasig laadpatroon waarbij de server per verzoek targetingbeslissingen neemt over welke payload te leveren.

Fase 1: Loader-script (event.js)

hxxps://msclairty[.]com/event.js?id=dHRcSiYkDj4&date=2026-03-02
hxxps://msclairty[.]com/event.js?id=XGp2NSkTRVs&date=2026-03-03

De event.js-loader is 8.599 bytes groot. De parameter id= is een campagne-identifier die dagelijks wisselt. Op 2 maart was de campagne-ID dHRcSiYkDj4. Op 3 maart veranderde deze naar XGp2NSkTRVs. De parameter date= komt overeen met de datum van elke wisseling. De eerste loader die we vastlegden was voor het laatst gewijzigd op 2 maart 2026 om 09:58:50 GMT.

We deobfusceerden de loader en ontdekten dat deze het volgende doet:

  1. Console kapen. Het overschrijft alle 7 consolemethoden (log, warn, info, error, exception, table, trace) direct bij het laden, voordat er een payload wordt uitgevoerd. Dit betekent dat pogingen om te debuggen of informatie te loggen stilzwijgend worden geblokkeerd.
  2. Anti-iframe-controle. Het vergelijkt window.self met window.top en stopt als de loader binnen een iframe wordt uitgevoerd. Dit zorgt ervoor dat het alleen wordt uitgevoerd in de top-level browsing context, waardoor analyse- of sandboxomgevingen die iframes gebruiken worden vermeden.
  3. Dedup-cookiecontrole. Het leest de cookie __tr_luptv via een getCookie()-hulpfunctie. Als de cookie al bestaat, stopt de loader. Deze cookie wordt door de payload ingesteld na uitvoering en dient twee doelen: aanvallersattributie voor commissiefraude en een "niet twee keer uitvoeren"-beveiliging die herhaalde uitvoering over paginalaadacties voorkomt.
  4. Serversijdige targetingaanvraag. Het stuurt een POST naar msclairty[.]com met Content-Type: application/x-www-form-urlencoded met vier parameters: url (de huidige pagina-URL), referrer (document.referrer), unique_id (de campagne-ID uit de parameter id=) en ext: 'twsc' (de affiliate-identifier van de aanvaller, hardgecodeerd). De server antwoordt met JSON met een veld data (de Base64-gecodeerde bestandsnaam voor de payload) en een veld type (welke ?type=-variant geladen moet worden).
  5. Dynamische payload-injectie. Het construeert de fase 2-URL door de serverrespons samen te voegen: https://msclairty[.]com/js/ + response.data + .js?type= + response.type, maakt een ` De loader stuurt de pagina-URL en referrer, en de server antwoordt met zowel de gecodeerde payload-bestandsnaam als de waarde ?type=. Dit betekent dat verschillende sites, pagina's of referrers verschillende payloadvarianten kunnen ontvangen. Een productpagina kan bijvoorbeeld type=1 krijgen (stille cookie stuffing), terwijl een afrekenpagina type=5 kan krijgen (gedwongen omleiding). De targetinglogica is volledig serversijdig en onzichtbaar voor client-side analyse.

    Fase 2: Geobfusceerde payload

    hxxps://msclairty[.]com/js/[Base64-encoded-blob].js?type=[1-5]

    De payload weegt 10.007 bytes. De Base64-achtige bestandsnaam wordt serversijdig gegenereerd op basis van de pagina-URL en referrer die door de loader zijn verzonden. De parameter ?type=, ook gekozen door de server, selecteert welke van de vijf aanvalsvarianten wordt uitgevoerd. De functie in elke payload is vernoemd naar de variant (type1(), type2(), type8(), type9(), type11()).

    Welke beveiligingstools markeren msclairty[.]com?

    Geen enkele. We hebben elk groot dreigingsinformatieplatform en beveiligingshulpmiddel gecontroleerd. Vanaf publicatie markeert niet één ervan msclairty[.]com als kwaadaardig:

    • VirusTotal: 0 van de 90+ engine-detecties
    • urlscan.io: geen scanresultaten, geen community-inzendingen
    • Google Safe Browsing: niet gemarkeerd
    • SecurityTrails: geen DNS-geschiedenis, geen WHOIS-verrijking
    • ANY.RUN: geen sandbox-inzendingen voor dit domein
    • Hybrid Analysis / Falcon Sandbox: geen resultaten
    • PhishTank: niet vermeld
    • OpenPhish: niet vermeld
    • MalwareBazaar: geen samples
    • ThreatFox (abuse.ch): geen IOC-vermeldingen
    • Cloudflare Radar: geen gegevens

    Dit is nul dekking op elk groot platform. Kortom: dit artikel is de eerste publieke documentatie van dit domein dat voor kwaadaardige doeleinden wordt gebruikt.

    Hoe cside dit script detecteerde

    cside detecteerde dit script autonoom via runtime-gedragsanalyse. Geen dreigingsfeed markeerde het domein. Geen scanner leverde de payload op. Geen handtekening kwam overeen. De detectie was volledig gebaseerd op wat het script in de browser deed: trackingcookies verwijderen, een verborgen iframe injecteren, de Fetch API kapen en de console onderdrukken.

    Scripts van browserextensies vallen buiten uw controle als website-eigenaar. U kunt niet voorkomen dat een extensie code in uw pagina's injecteert. Maar het helpt om te weten dat het misbruik plaatsvindt. Het script verwijdert bijvoorbeeld de legitieme RedTrack-attributiecookie (rtkclickid-store) en vervangt deze door het eigen affiliate-token van de aanvaller pub=twsc via de omleidingsketen van discounthero[.]org. Als u RedTrack gebruikt voor het bijhouden van affiliate-conversies of afhankelijk bent van nauwkeurige verkeersattributie, steelt dit soort fraude actief commissie van uw legitieme affiliates — en u zou het nooit zien zonder client-side zichtbaarheid.

    Gebruik cside om te begrijpen hoe uw applicatie zich in de browser gedraagt. Detecteer signalen van fraude door bezoekers, AI-agents en client-side afhankelijkheden.

    cside heeft deze informatie gedeeld met Microsoft zodat zij een takedown van msclairty[.]com kunnen nastreven wegens kwaadaardig typosquatten van hun Clarity-merk. We hebben ook contact opgenomen met RedTrack, omdat hun rtkclickid-store-attributiecookie expliciet wordt getarget voor verwijdering in deze aanval en het affiliate-token pub=twsc wordt gebruikt om legitieme RedTrack-klikattributie te overschrijven met frauduleuze commissieclaims.

    Gratis starten of een demo boeken om met ons team te spreken.

    Waarom krijgen AI-tools en scanners een 403 van msclairty[.]com?

    De server achter msclairty[.]com draait op een Express (Node.js)-backend die wordt voorzien van Cloudflare. Responsheaders bevatten x-powered-by: Express, cf-cache-status en access-control-allow-origin: *. De payload wordt gecached door Cloudflare met een max-age van 14400 seconden (4 uur).

    Ondanks het gebruik van Cloudflare blokkeert de server actief geautomatiseerde analyse. Wanneer AI-gestuurde tools zoals ChatGPT, Claude en Perplexity proberen inhoud van het domein op te halen, geeft de server een 403 Forbidden-respons terug. Hetzelfde geldt voor geautomatiseerde beveiligingsscanners en elk verzoek afkomstig van datacenter-IP-bereiken.

    Dit is bewuste filtering op basis van IP-adresbereiken, user-agent-strings of andere verzoekvingerafdrukken. De server levert de kwaadaardige JavaScript-payload alleen wanneer het verzoek afkomstig lijkt te zijn van een echte browser met de juiste referrer, user-agent en headers. Datacenter-IP's, bekende bot-user-agents en verzoekhandtekeningen van AI-tools worden allemaal geblokkeerd.

    Dit anti-onderzoeksgedrag verklaart ook waarom VirusTotal, urlscan.io en andere scanplatforms schone resultaten of helemaal geen resultaten teruggeven. Ze ontvangen de echte payload nooit.

    Wat onthullen de verzoekheaders over de msclairty[.]com-extensie?

    Elk verzoek in onze telemetrie deelt een identieke browservingerafdruk: Windows 10 x64, desktop Google Chrome, sec-ch-ua-mobile: ?0. Er is niet één verzoek van Firefox, Safari, Edge, Brave of een mobiele browser. Geen macOS, Linux, Android of iOS.

    Dit is significant. Als de extensie beschikbaar was in het bredere Chromium-ecosysteem, zouden we Edge- of Brave-user-agents in de mix verwachten, omdat beide Chrome Web Store-extensies ondersteunen. Het feit dat elk verzoek "Google Chrome" rapporteert in de sec-ch-ua-clienthints en standaard Chrome-user-agent-strings suggereert dat dit ofwel een Chrome-only extensie is, of tot nu toe alleen door Chrome-gebruikers is geïnstalleerd.

    Drie Chrome-versies komen voor in de gegevens: 132, 138 en 145. Chrome 132 werd uitgebracht in januari 2025 en is inmiddels verouderd. Chrome 138 en 145 zijn recenter. De spreiding over versies sluit een versiespecifiek exploit uit en is consistent met een vrijwillig geïnstalleerde extensie die Chrome-updates overleeft.

    Andere opvallende headerpatronen:

    De header sec-fetch-storage-access verschijnt met de waarden active en none bij de initiële scriptladingen (sec-fetch-dest: script). Dit geeft aan dat de extensie interactie heeft met de Storage Access API, die cross-site cookietoegang regelt. Dit is consistent met een extensie die cross-site opslag nodig heeft voor haar cookie-stuffing-mechanisme.

    Alle POST-verzoeken gebruiken content-type: application/json met variërende content-length-waarden van 604 tot 10.246 bytes. Dit zijn de event.js-beacons die gegevens terugsturen naar msclairty[.]com. De variërende payloadgroottes suggereren dat het script verschillende hoeveelheden pagina- of sessiegegevens exfiltreert afhankelijk van de browsing context.

    De header dnt: 1 (Do Not Track) is aanwezig bij verzoeken van Chrome 145- en Chrome 138-gebruikers, maar afwezig bij Chrome 132. Dit is een gebruikersvoorkeur, geen extensiegedrag, maar het bevestigt dat dit echte eindgebruikers zijn met individueel geconfigureerde browsers.

    Wanneer werd het domein msclairty[.]com geregistreerd?

    Het SSL-certificaat voor msclairty[.]com werd uitgegeven op 20 februari 2026 om 20:14:54 UTC. Dat is slechts 10 dagen voordat we op 2 maart voor het eerst live verkeer van dit domein observeerden. Dit is een vers geregistreerd domein, speciaal gebouwd voor deze campagne.

    WHOIS-registratiegegevens zijn verborgen achter een privacyservice. Er bestaan geen historische DNS-records voor dit domein in SecurityTrails of passieve DNS-databases.

    Wat doet het msclairty[.]com-script?

    Na deobfuscatie voert het script zes afzonderlijke acties uit. Geen van deze heeft iets te maken met analytics of heatmaps.

    Stap 1: DevTools-detectie

    Het script controleert of de browser-ontwikkelaarstools open zijn voordat het iets uitvoert. Het vergelijkt window.outerWidth - window.innerWidth en window.outerHeight - window.innerHeight met een drempelwaarde van 120 pixels. Het controleert ook op Firebug en window.chrome.isInitialized.

    Als een controle aangeeft dat iemand de pagina inspecteert, stopt het script onmiddellijk. Het wordt alleen uitgevoerd voor echte gebruikers, nooit voor ontwikkelaars of beveiligingsonderzoekers.

    Stap 2: Console kapen

    Het script overschrijft zeven native console-methoden: log, warn, info, error, exception, table en trace. Alle zeven worden vervangen door lege no-op-functies. Dit voorkomt dat waarschuwingen of debug-uitvoer verschijnen als iemand DevTools opent nadat het script is geladen.

    Een aparte console.clear()-aanroep wordt na een timer van 3 seconden uitgevoerd om alles te wissen dat mogelijk is gelogd voordat de overschrijving van kracht werd.

    Stap 3: Verwijderen van trackingcookies

    Het script verwijdert de volgende cookies op zowel padniveau als rootdomeinniveau:

    • _ga (Google Analytics-client-ID)
    • _gid (Google Analytics-sessie-ID)
    • rtkclickid-store (RedTrack affiliate-klikattributie)

    Dit is het belangrijkste gedrag om te begrijpen. Door de RedTrack-cookie rtkclickid-store te verwijderen, wist het script de legitieme affiliate-klikattributie voor die bezoeker. Door ook Google Analytics-cookies te verwijderen, wordt elk bewijs van hoe de gebruiker op de site is terechtgekomen gewist. De werkelijke verkeersbron van de bezoeker verdwijnt volledig. Dit maakt de weg vrij voor het eigen affiliate-token van de aanvaller (pub=twsc) om de enige attributiebron te worden.

    Stap 4: Verborgen iframe-injectie en affiliate cookie stuffing

    Een verborgen iframe van 1x1 pixel wordt in de paginabody geïnjecteerd. Het iframe laadt de volgende URL:

    hxxps://discounthero[.]org/us/s/red_u_plain.php?t=direct&s=287&d=[target]&pub=twsc

    Het iframe gebruikt referrerpolicy="noreferrer" om de referrer-header te onderdrukken.

    Dit is wat elke URL-parameter betekent:

    • t=direct: verkeerstype-markering
    • s=287: campagne-identifier
    • d=[target]: de site die wordt opgelicht (de waarde verandert per slachtoffersite)
    • pub=twsc: de affiliate-publisher-ID van de aanvaller

    De waarde pub=twsc is het affiliate-account dat de frauduleuze commissie ontvangt. Dit is de kern van de aanval. Het verborgen iframe laadt stilletjes een omleidingsketen via discounthero[.]org die een affiliate-cookie in de browser van de gebruiker plaatst. Als de gebruiker later de doelsite bezoekt en een aankoop doet, verdient de aanvaller achter pub=twsc een commissie die hij nooit heeft gegenereerd. Het verwijderen van cookies in stap 3 zorgt ervoor dat er geen concurrerende attributie bestaat.

    Na 20 seconden wordt het iframe uit de DOM verwijderd. Er blijft geen visueel spoor achter op de pagina.

    Stap 5: Fetch API kapen

    Binnen het geïnjecteerde iframe monkey-patcht het script window.fetch. Elk fetch-verzoek dat nivtrck[.]com bevat (gecodeerd als bml2dHJjay5jb20= in Base64) wordt stilzwijgend geblokkeerd met een afgewezen Promise.

    Dit voorkomt dat een concurrerende trackingdienst de werkelijke verkeersbron registreert. De aanvaller wil niet alleen krediet voor het bezoek; hij blokkeert actief andere trackers om te voorkomen dat zij attributiegegevens vastleggen die zijn frauduleuze cookie zouden tegenspreken.

    Stap 6: Referrer-onderdrukking en trackingcookie van de aanvaller

    Een tag `` wordt geïnjecteerd in de `` van de pagina, waardoor referrer-headers bij alle uitgaande navigaties worden onderdrukt. Dit verbergt de fraude voor downstream analytics op de doelsite.

    Het script stelt ook zijn eigen trackingcookie in:

    __tr_luptv = [huidige tijdstempel minus 300000 milliseconden]

    De cookiewaarde is Date.now() - 300000 (huidige tijd minus 5 minuten), ingesteld op zowel het rootpad als het rootdomein van de site. Deze teruggedateerde tijdstempel signaleert waarschijnlijk aan de omleidingsketen van discounthero[.]org dat de bezoeker al is getagd en niet opnieuw verwerkt moet worden.

    Hoe is het msclairty[.]com-script geobfusceerd?

    De code gebruikt een standaard maar effectieve obfuscatiestack die de meeste statische analysetools versloeg:

    • Een geroteerde tekenreeksarray met ongeveer 95 Base64-gecodeerde vermeldingen
    • Een decoderfunctie die array-indices tijdens runtime vertaalt naar leesbare tekenreeksen
    • Proxy-objecten die functieaanroepen en tekenreeksreferenties verbergen achter gerandomiseerde eigenschapsnamen
    • Een IIFE-shufflelus die de array roteert totdat een controlesom overeenkomt, zodat de decoder correcte waarden produceert

    De geobfusceerde code ziet eruit als willekeurige ruis. Geen enkel statisch analysetools, handtekeningscanner of op regex gebaseerde detectie zal kwaadaardig gedrag identificeren uit de ruwe broncode. U moet de decoder uitvoeren om te zien wat het script doet.

    Wat is discounthero[.]org?

    discounthero[.]org is het omleidingseindpunt voor affiliate-fraude dat in deze aanval wordt gebruikt. In tegenstelling tot msclairty[.]com heeft dit domein een gevestigde aanwezigheid op meerdere dreigingsinformatieplatforms:

    • Gehost op AWS-infrastructuur op IP 3.68.5.1 (AS16509, AMAZON-02), geogelokaliseerd in Duitsland
    • Geclassificeerd als adware-distributeur door Gridinsoft
    • Gemarkeerd als kwaadaardig in ANY.RUN-sandboxanalyses met Tycoon 2FA-phishingindicatoren
    • Verscheen in Falcon Sandbox-analyserapporten naast bekende advertentiefraude-domeinen
    • Door gebruikers op meerdere browserfora gemeld als bron van malvertising-omleidingen, waaronder incidenten op de Daz3D-communityforums
    • Gebruikt het omleidingseindpunt red_u_plain.php met per-campagneparameters (s=, d=, pub=, t=)
    • Omleidingsketen loopt via gracylifestyle[.]com (Cloudflare) naar d33old9jdtt77h.cloudfront.net (Amazon CloudFront)

    Wat is nivtrck[.]com?

    nivtrck[.]com is het trackingdomein dat het script actief blokkeert via het kapen van de Fetch API. Dit domein heeft nul publieke documentatie op alle dreigingsinformatieplatforms, sandboxrapporten en WHOIS-historiedatabases. Het kan een legitieme trackingdienst zijn waarvan de aanvaller de attributie wil onderdrukken, of het kan toebehoren aan een concurrerende fraudeoperatie.

    Indicatoren van compromittering (IOC's) voor msclairty[.]com

    Type Waarde Doel
    Domein msclairty[.]com Scriptlevering, typosquat van Microsoft Clarity
    URL msclairty[.]com/event.js Fase 1 loader-script
    URL msclairty[.]com/js/[encoded].js?type=1 Fase 2 geobfusceerde payload
    SHA256 7ad3dcdcc83eba9298b800a9cbbc00720c35859880bf00ba7bab8883f750f0ff event.js (loader) hash, 8.599 bytes
    SHA256 27e6d46c37d2cb8ef3cf21b70ce03b5090eae988f4e3923cd0902a7bde8c4e94 Payload (.js?type=1) hash, 10.007 bytes
    Campagne-ID id=dHRcSiYkDj4 Campagne 2 maart 2026 (wisselt dagelijks)
    Campagne-ID id=XGp2NSkTRVs Campagne 3 maart 2026 (wisselt dagelijks)
    Domein discounthero[.]org Omleidingseindpunt voor affiliate-fraude
    IP-adres 3.68.5.1 Hosting discounthero[.]org (AWS, Duitsland)
    ASN AS16509 (AMAZON-02) Infrastructuur discounthero[.]org
    Domein nivtrck[.]com Concurrerende tracker geblokkeerd door het script
    Cookienaam __tr_luptv Aanvallersattributiecookie EN loader-dedup-vlag
    Cookiewaarde Date.now() - 300000 Teruggedateerde tijdstempel, 5 minuten in het verleden
    Affiliate-ID pub=twsc Publisher-account van de aanvaller voor commissiefraude
    Loader POST-param ext: 'twsc' Hardgecodeerde affiliate-identifier in loader-targetingverzoek
    Loader POST-param url, referrer, unique_id Pagina-URL, referrer en campagne-ID verzonden naar server
    Content-Type application/x-www-form-urlencoded Indeling van loader-targeting-POST-verzoek
    Campagne-ID s=287 Campagne-identifier in omleidings-URL
    Payloadvariant ?type=1 (functie type1) Stille affiliate cookie stuffing via verborgen iframe
    Payloadvariant ?type=2 (functie type2) Cookie stuffing + inhoudinjectie via {{link2}}-sjabloon
    Payloadvariant ?type=3 (functie type8) Klikhijacking: voegt affiliate-omleiding toe aan uitgaande links
    Payloadvariant ?type=4 (functie type9) Klikhijacking: stuurt gebruiker eerst naar discounthero
    Payloadvariant ?type=5 (functie type11) Auto-omleiding: navigeert pagina gedwongen na 400ms
    URL-pad /us/s/red_u_plain.php Omleidingshandler van discounthero[.]org
    SSL-certificaat uitgegeven 20 februari 2026, 20:14:54 UTC Domein opgezet 10 dagen voor eerste waargenomen verkeer
    Loader gewijzigd 2 maart 2026, 09:58:50 GMT Tijdstempel laatste wijziging event.js
    Eerste waarneming 2 maart 2026, 21:17:09 UTC Vroegste verkeer in cside-telemetrie
    ETag W/"2717-Eekqo9gobf+ksAb6+kvO6VgzCto" Payload-ETag (ongewijzigd bij alle verzoeken)
    ETag W/"2197-19cadfc7987" event.js ETag (ongewijzigd bij alle verzoeken)
    Infrastructuur Cloudflare + Express (Node.js) Serverstack van msclairty[.]com
    Injectievector Browserextensie (niet geïdentificeerd) Scriptleveringsmechanisme

    Waarom omzeilt deze aanval traditionele beveiligingstools?

    Deze aanval omzeilt traditionele beveiligingstools om twee redenen: de injectievector en de ontwijkingstechnieken.

    Het script wordt geïnjecteerd door een browserextensie, niet ingebed in de broncode van de site. Dit betekent dat Content Security Policy-headers het niet blokkeren. Tag-audits vinden het niet. Subresource Integrity-controles zijn niet van toepassing. Beveiligingstools aan de serverzijde hebben geen zichtbaarheid in wat een browserextensie tijdens runtime in de pagina injecteert.

    Bovendien filtert de server achter msclairty[.]com verzoeken agressief. Beveiligingsscanners, AI-gestuurde onderzoekstools en elk verzoek van een datacenter-IP of bekende bot-user-agent ontvangen een 403 Forbidden-respons. Zelfs als een scanner de echte payload zou ophalen, bevat de geobfusceerde broncode geen herkenbare handtekeningen of bekende kwaadaardige patronen die statische analyse zou markeren.

    Het script ontwijkt ook handmatig onderzoek. Het detecteert open DevTools en stopt. Het overschrijft alle consolemethoden. Het verwijdert het iframe uit de DOM na 20 seconden. Het wist de console na 3 seconden.

    De loader voegt nog een laag toe: het koppelt history.pushState, history.replaceState en popstate om opnieuw te activeren bij elke client-side navigatie in single-page applications. Elke routewijziging stuurt de nieuwe URL naar de server voor nieuwe targeting. En omdat de server bepaalt welke payloadvariant wordt geleverd op basis van de pagina-URL en referrer, kan statische analyse van één vastgelegde payload niet het volledige aanvalsbereik van de infrastructuur onthullen.

    Hoe detecteer je affiliate cookie stuffing-aanvallen zoals deze?

    Detectie op basis van blokkeerlijsten werkt niet tegen dit type aanval. Het domein is te nieuw voor een dreigingsfeed om het te hebben geïndexeerd. De obfuscatie versloeg statische analyse. De server blokkeert geautomatiseerde scanners en AI-tools met 403-responses.

    De enige betrouwbare detectiemethode is runtime-gedragsanalyse: monitoren wat scripts in de browser doen in plaats van hun broncode te analyseren of hun domein te controleren aan de hand van een blokkeerlijst. Het verwijderen van cookies, het injecteren van verborgen iframes, het kapen van de Fetch API en het onderdrukken van de console zijn allemaal waarneembare gedragingen die duidelijk kwaadaardig zijn, ongeacht hoe de broncode eruitziet of waar het script vandaan is geladen.

    Dit is precies waarvoor real-time client-side beveiligingsmonitoring is gebouwd.

    Wat betekent de parameter ?type=?

    De URL accepteert een queryparameter ?type= die selecteert welke aanvalspayload de server teruggeeft. We hebben vijf varianten bevestigd. Elke variant escaleert in agressiviteit. Alle vijf delen dezelfde ontwijkingskern: DevTools-detectie (stopt als open, drempelwaarde 150px), console kapen (7 methoden overschreven), cookie verwijderen (_ga, _gid, rtkclickid-store op pad- en rootdomeinniveau), aanvallersattributiecookie (__tr_luptv = Date.now() - 300000), referrer-onderdrukking via metatag en hetzelfde affiliate-doel (discounthero[.]org met pub=twsc en s=287).

    De waarde van de parameter ?type= (1 tot en met 5) is opeenvolgend, maar de interne functienamen zijn dat niet. Dit verschil onthult de werkelijke omvang van de infrastructuur.

    ?type=1 (functie type1()) - Stille affiliate cookie stuffing

    Injecteert een verborgen iframe van 1x1 pixel naar discounthero[.]org met pub=twsc. Het iframe laadt de affiliate-omleidingsketen, plaatst de cookie van de aanvaller en vernietigt zichzelf na 20 seconden. De Fetch API wordt gekaapt om verzoeken naar nivtrck[.]com te blokkeren. De bezoeker ziet niets.

    ?type=2 (functie type2()) - Cookie stuffing + inhoudinjectie

    Doet alles wat type=1 doet. Vervolgens haalt het een tweede URL op uit een serversijdige sjabloonvariabele {{link2}}, maakt een tweede verborgen iframe van 0x0 aan, schrijft de opgehaalde HTML erin via contentWindow.document.write() en vervalst de iframe-URL met history.replaceState. Het tweede iframe vernietigt zichzelf na 15 seconden. De tijdelijke aanduiding {{link2}} wordt serversijdig per doel ingevuld en kan phishing-overlays, advertentie-injectie of paginamanipulatie leveren.

    ?type=3 (functie type8()) - Klikhijacking (meeliften)

    Geen iframe. Installeert een klikgebeurtenisluisteraar op document.body. Wanneer een bezoeker op een ``-tag klikt met een href die begint met "http", roept het script preventDefault() aan en leidt de browser vervolgens om naar de oorspronkelijke URL met de affiliate-omleiding van discounthero[.]org toegevoegd als queryparameter. De gebruiker bereikt nog steeds zijn beoogde bestemming, maar de navigatie loopt onderweg via de omleidingsketen van de aanvaller.

    ?type=4 (functie type9()) - Klikhijacking (directe omleiding)

    Dezelfde klikonderschepping als type=3, maar de omleidingsrichting is omgekeerd. In plaats van de affiliate-URL toe te voegen aan de oorspronkelijke bestemming, stuurt het de gebruiker rechtstreeks naar discounthero[.]org met de oorspronkelijke URL gecodeerd als parameter via encodeURIComponent(). De gebruiker navigeert zichtbaar eerst via de infrastructuur van de aanvaller en wordt daarna doorgestuurd naar zijn beoogde bestemming nadat de affiliate-cookie is geplaatst.

    ?type=5 (functie type11()) - Auto-omleiding (geen klik vereist)

    De meest agressieve variant. Geen iframe. Geen klikonderschepping. Na een vertraging van 400 milliseconden leidt het script de volledige pagina gedwongen om via window.location.search. De gebruiker wordt automatisch weggeleid van de pagina die hij bekeek naar de affiliate-keten van discounthero[.]org. Geen interactie vereist. De vertraging van 400ms is net lang genoeg om het verwijderen van cookies en het instellen van de __tr_luptv-cookie te voltooien voordat de omleiding plaatsvindt.

    De functienamen zijn niet opeenvolgend. De parameter ?type= loopt van 1 tot 5, maar de functies heten type1, type2, type8, type9 en type11. Waarden boven 5 geven lege responses terug. De hiaten in de functienummering (type3 tot en met type7, type10) weerspiegelen waarschijnlijk buiten gebruik gestelde of verouderde varianten uit eerdere iteraties van deze infrastructuur. Vijf actieve payloadtypen, escalerend van stil naar gedwongen.

Simon Wijckmans
Founder & CEO Simon Wijckmans

Founder and CEO of cside. Previously a product manager on Cloudflare Page Shield (now Cloudflare Client-Side Security). Co-chair of the W3C Anti-Fraud Community Group and a Forbes 30 Under 30 honoree. Building accessible security against client-side attacks — web security is not an enterprise-only problem.

FAQ

Frequently Asked Questions

msclairty[.]com is een typosquatted domein dat Microsoft Clarity imiteert, een populaire analytics- en heatmaptool. Het domein verwisselt de letters i en r in 'clarity' naar 'clairty', waardoor het in een netwerklog gemakkelijk over het hoofd wordt gezien. In plaats van analytics te leveren, serveert het domein geobfusceerde JavaScript die affiliate cookie stuffing, het verwijderen van trackingcookies en het kapen van de Fetch API uitvoert.

Nee. Vanaf maart 2026 heeft msclairty[.]com nul detecties op VirusTotal, urlscan.io, Google Safe Browsing, SecurityTrails, ANY.RUN, Hybrid Analysis, PhishTank, OpenPhish, MalwareBazaar en ThreatFox. De server geeft een 403 Forbidden-respons terug aan beveiligingsscanners en AI-gestuurde onderzoekstools, waardoor geautomatiseerde analyse de echte payload nooit te zien krijgt.

Affiliate cookie stuffing is een vorm van advertentiefraude waarbij een script stilletjes affiliate-trackingcookies in de browser van een gebruiker plaatst zonder diens medeweten. Als de gebruiker later een aankoop doet op de doelsite, verdient de aanvaller een commissie die hij niet heeft gegenereerd. Het msclairty[.]com-script verwijdert eerst legitieme trackingcookies van Google Analytics en RedTrack, en injecteert vervolgens een verborgen iframe dat een omleidingsketen via discounthero[.]org laadt om de affiliate-cookie van de aanvaller in te stellen met de publisher-ID pub=twsc.

Het script maakt gebruik van meerdere ontwijkingstechnieken. Het controleert of de browser-DevTools open zijn en stopt als dat het geval is. Het overschrijft alle consolemethoden om debug-uitvoer te onderdrukken. Het iframe dat voor cookie stuffing wordt gebruikt, vernietigt zichzelf na 20 seconden. De console wordt na 3 seconden gewist. De server geeft 403-responses terug aan geautomatiseerde scanners, AI-tools en datacenter-IP-adressen. De JavaScript zelf is zwaar geobfusceerd met een geroteerde tekenreeksarray, Base64-codering, proxy-objecten en runtime-decodering.

Het script wordt geïnjecteerd door een Chrome-browserextensie, niet door de website zelf. Elke getroffen gebruiker in onze telemetrie gebruikt desktop Google Chrome op Windows 10 x64. Geen verzoeken van Firefox, Safari, Edge, Brave, macOS, Linux of mobiele browsers. Dit betekent dat Content Security Policy-headers, tag-audits en Subresource Integrity-controles aan de websitekant het niet blokkeren. De injectie vindt plaats in de browser van de eindgebruiker, waardoor het onzichtbaar is voor beveiligingstools aan de serverzijde.

Op basis van waargenomen telemetrie treft de extensie alleen desktop Google Chrome op Windows 10 x64. Chrome-versies 132, 138 en 145 zijn waargenomen. Geen verzoeken van Edge, Brave, Firefox, Safari, macOS, Linux, Android of iOS kwamen voor in het geanalyseerde verkeer. Het Chrome-only patroon en de spreiding over meerdere Chrome-versies is consistent met een Chrome Web Store-extensie die browserupdates overleeft.

discounthero[.]org is het omleidingseindpunt voor affiliate-fraude dat wordt gebruikt in de msclairty[.]com-aanval. Het wordt gehost op AWS-infrastructuur op IP 3.68.5.1 in Duitsland en is door Gridinsoft geclassificeerd als adware-distributeur, gemarkeerd als kwaadaardig in ANY.RUN-sandboxanalyses, en door gebruikers op meerdere forums gemeld als bron van malvertising-omleidingen.

Het script verwijdert drie soorten cookies op zowel padniveau als rootdomeinniveau: _ga en _gid (Google Analytics-trackingcookies) en rtkclickid-store (RedTrack affiliate-klikattributie). Dit wist de legitieme verkeersbronattributie van de gebruiker, zodat de frauduleuze affiliate-cookie van de aanvaller de enige aanwezige attributie wordt.

Detectie op basis van blokkeerlijsten werkt niet tegen nieuwe typosquatted domeinen die geen dekking hebben in dreigingsfeeds. De enige betrouwbare methode is runtime-gedragsanalyse, waarbij wordt gemonitord wat scripts in de browser doen in real time. Het verwijderen van cookies, het injecteren van verborgen iframes, het kapen van de Fetch API en het onderdrukken van de console zijn waarneembare kwaadaardige gedragingen die kunnen worden gemarkeerd ongeacht de broncode of domeinreputatie van het script. Client-side beveiligingsplatforms zoals cside detecteren deze gedragingen automatisch.

De queryparameter type=1 selecteert welke payloadvariant de server teruggeeft. De functie in het script heet type1(), wat erop wijst dat de infrastructuur meerdere verschillende aanvalspayloads kan serveren. De type=1-variant voert affiliate cookie stuffing uit, maar andere waarden kunnen phishing-omleidingen, betaalskimmers of andere client-side aanvallen leveren.

Monitor en Beveilig Je Third-Party Scripts

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Start gratis, of probeer Business met een proefperiode van 14 dagen.

cside dashboard interface met script monitoring en beveiligingsanalytics
Related Articles
Boek een demo