Kort antwoord: De Polyfill.io supply chain-aanval begon toen het breed ingebedde domein polyfill.io in februari 2024 aan Funnull werd verkocht en tegen juni kwaadaardig JavaScript begon te serveren. cside was de eerste die de werkelijke omvang van de aanval rapporteerde: meer dan 490.000 websites, niet de 100.000 die bijna elk medium herhaalde. Dat lagere getal was simpelweg de plek waar de zoektool stopte met tellen. Een jaar later sanctioneerde het Amerikaanse ministerie van Financiën Funnull voor de operatie. Dit is de volledige tijdlijn, wat de code deed, en hoe je het vindt en verwijdert.
De Polyfill.io-aanval is een van de duidelijkste browser supply chain-incidenten ooit vastgelegd. Een gratis, vertrouwd hulpmiddel stond jarenlang op honderdduizenden sites. Nieuwe eigenaren maakten er van de ene op de andere dag een aanvalsoppervlak van. Geen enkele site-eigenaar wijzigde een regel code, en toch werden hun bezoekers blootgesteld.
Deze pagina brengt het hele verhaal op één plek samen: een gedateerde tijdlijn, de waarheid achter het getal van "100.000 sites", wat de payload eigenlijk deed, de CVE, de Funnull-sancties die volgden, en een praktische opruimchecklist. Voor diepgaandere stukken linkt elke sectie naar onze oorspronkelijke berichtgeving uit 2024 en 2025.
De korte versie
- Het domein polyfill.io werd in februari 2024 verkocht aan Funnull. Tegen juni serveerde het kwaadaardige omleidingen.
- Er is geen incident-brede CVE; de identifier die er het dichtst bij komt, CVE-2024-38526, is afgebakend tot de documentatietool pdoc die polyfill.io laadde — niet de aanval zelf.
- De werkelijke omvang was 490.000+ websites, niet de breed geciteerde 100.000. Dat getal was de standaard resultaatlimiet van PublicWWW. cside rapporteerde het echte getal als eerste.
- De vastgelegde payload was een omleiding die alleen op mobiel werkte naar scam- en goksites, gebouwd om onderzoekers te ontwijken.
- Op 2025-05-29 sanctioneerde OFAC Funnull en zijn beheerder Liu Lizhi.
- Per 2026-05-18 bedden nog steeds meer dan 61.000 pagina's polyfill.io in. Als de jouwe daar een van is, verwijder het.
Volledige tijdlijn (2009–2026)
| Datum | Gebeurtenis |
|---|---|
| 2009–2010 | Remy Sharp bedenkt de term "polyfill"; het idee verspreidt zich door de webontwikkelaarscommunity |
| 2014 | Andrew Betts bouwt de polyfill.io-service bij Financial Times Labs; één scripttag past polyfills aan op elke browser |
| 2014-10-28 | HTML5 wordt een W3C Recommendation; evergreen, automatisch bijwerkende browsers maken polyfill.io al snel grotendeels overbodig |
| ~2023 | De Financial Times draagt het project over aan zijn langdurige beheerder, Jake Champion |
| Feb 2024 | Het domein polyfill.io en de GitHub-repository worden verkocht aan Funnull, een door Chinezen geleid bedrijf |
| 2024-02-25 | Andrew Betts waarschuwt publiekelijk: "Als je website polyfill.io gebruikt, verwijder het ONMIDDELLIJK" |
| 2024-02-29 | Cloudflare publiceert een veilige cdnjs-mirror om het supply chain-risico te verkleinen; Fastly zet enkele dagen eerder zijn eigen mirror op |
| 2024-06-24 | De Japanse onderzoeker "piyokango" signaleert het kwaadaardige gedrag |
| 2024-06-25 | Sansec publiceert zijn forensische onthulling; cside publiceert dezelfde dag en rapporteert de werkelijke omvang van 490.000+ |
| 2024-06-26 | Cloudflare begint polyfill.io automatisch te herschrijven naar zijn mirror; Google waarschuwt getroffen adverteerders |
| 2024-06-27 | Namecheap schorst het domein polyfill.io |
| 2024-07-02 | Censys telt onafhankelijk 384.773 getroffen hosts |
| 2025-05-29 | OFAC sanctioneert Funnull en beheerder Liu Lizhi; de FBI koppelt 548 Funnull-CNAMEs aan 332.000+ domeinen |
| 2026-05-18 | 61.593 pagina's bedden nog steeds polyfill.io in |
Het getal van "100.000 sites" was fout
Bijna elk rapport over deze aanval gebruikte hetzelfde getal: ongeveer 100.000 sites. Dat getal is een artefact van de tool, niet een meting van de aanval.
Onderzoekers, cside inbegrepen, gebruikten PublicWWW om elke pagina te vinden die de polyfill.io-snippet bevatte. PublicWWW beperkt resultaten standaard tot 100.000. Dus elke telling die erop steunde, eindigde op "100.000+." Toen wij de zoekopdracht voorbij die limiet uitvoerden, was het echte getal meer dan 490.000 websites.
Dit doet ertoe omdat de getroffen verzameling niet willekeurig was. Ze leunde sterk naar bestemmingen met veel verkeer en veel vertrouwen: banken, overheidssites, grote uitgevers en bekende merken. "100.000" rapporteren onderschatte een aanval die bijna vijf keer zo groot was. cside die het echte getal van 490.000+ aan het licht bracht, is de correctie die het publieke verslag nodig had, en de onafhankelijke telling van Censys van 384.773 hosts op 2024-07-02 bevestigt dat de omvang ver voorbij de 100.000 lag.
Wat de kwaadaardige code eigenlijk deed
Het gedrag dat werd vastgelegd, gedecodeerd en gepubliceerd, was een omleiding. Sansecs forensische rapport van 2024-06-25 liet zien dat het gemanipuleerde script sommige mobiele bezoekers via een nep Google Analytics-typosquat, googie-anaiytics[.]com (let op de verwisselde letters), naar sportweddenschap- en adultsites stuurde.
De tradecraft maakte het gevaarlijk en moeilijk te betrappen. De omleiding:
- vuurde alleen op mobiele apparaten, nooit op desktop;
- varieerde per geografische regio en per tijdstip;
- raakte elk apparaat of IP slechts één keer, zodat noch een slachtoffer noch een onderzoeker het bij een refresh kon reproduceren;
- werd stil zodra het een beheerder of de aanwezigheid van webanalytics detecteerde;
- werd geleverd met anti-reverse-engineering-pantser.
Omdat polyfill.io van nature een dynamische service was, kon de operator schone code aan de ene bezoeker en kwaadaardige code aan de volgende serveren. Subresource Integrity kon niet helpen, omdat het een hash van een vast bestand vastpint en deze service geen vast bestand had. Het script draaide first-party in de eigen origin van elke site, dus het had toegang tot de DOM, formulieren en cookies van die pagina, en het stond op de CSP-allowlists van honderdduizenden vertrouwde domeinen.
Was het alleen een omleiding? Dat is het eerlijke, onopgeloste deel. Onafhankelijke deobfuscatie van de herstelde payload vond omleidingslogica en niets anders, geen toetsaanslagvastlegging, geen diefstal van inloggegevens. Maar het ontwerp per verzoek betekent dat een variant gericht op één waardevolle bezoeker nooit in een publieke scan hoeft te verschijnen. De omleiding is wat werd betrapt. Wat er verder die maanden gedraaid kan hebben, valt op geen enkele manier te bewijzen. We hebben de capaciteitscasus in detail uiteengezet in De Polyfill.io-aanval: meer dan alleen een omleidingsaanval.
Voor het volledige incidentverslag van destijds, zie De Polyfill-aanval uitgelegd en ons rapport van dezelfde dag, Meer dan 490k websites doelwit van een web supply chain-aanval.
Is er een CVE voor de Polyfill.io-aanval?
Er is geen enkele CVE toegewezen aan het Polyfill.io-incident zelf. De identifier die er in de National Vulnerability Database het dichtst bij komt, is CVE-2024-38526, maar die is afgebakend tot pdoc — een Python-API-documentatietool die naar polyfill.io linkte in de documentatie die het genereerde (opgelost in pdoc 14.5.1). Het dekt cdn.polyfill[.]io of de bredere verzameling getroffen sites niet. Als je een kwetsbaarheidsprogramma beheert, houd dit incident dan bij via de getroffen domeinen (cdn.polyfill[.]io, plus de gerelateerde bootcdn[.]net, bootcss[.]com, staticfile[.]net, staticfile[.]org en unionadjs[.]com) in plaats van via één enkele CVE, en verwijs alleen naar CVE-2024-38526 voor pdoc-blootstelling.
De Funnull-connectie en de sancties van 2025
Polyfill.io was geen eenmalige zaak. De koper van het domein, Funnull, runde een veel grotere operatie.
Op 2025-05-29 sanctioneerde het Office of Foreign Assets Control van het Amerikaanse ministerie van Financiën Funnull Technology Inc. en zijn beheerder, Liu Lizhi. Treasury koppelde Funnulls infrastructuur aan meer dan 200 miljoen dollar aan door Amerikaanse slachtoffers gerapporteerde verliezen uit investeringsfraude, het patroon dat vaak pig butchering wordt genoemd. De aankondiging beschreef de polyfill-connectie zonder de service te noemen: in 2024 "kocht Funnull een coderepository die door webontwikkelaars werd gebruikt en wijzigde de code kwaadaardig om bezoekers van legitieme websites door te sturen naar scamwebsites en online goksites."
Dezelfde dag koppelde de FBI 548 Funnull-CNAMEs aan meer dan 332.000 domeinen. Dit is infrastructuurwitwassen: gerenommeerde cloud- en CDN-ruimte huren via illegale accounts en doorverkopen aan scammers zodat kwaadaardige sites legitiem lijken en moeilijk te verwijderen blijven. We behandelden de sancties en wat ze betekenen voor securityteams in Funnull gesanctioneerd: wat de Polyfill.io-aanval liet zien over infrastructuurwitwassen.
Wie er nog steeds blootgesteld is
Sancties verstoren een bedrijf. Ze verwijderen geen code van je site. Per 2026-05-18 vermeldde PublicWWW nog steeds 61.593 pagina's met polyfill.io, ruim een jaar nadat het domein was geschorst.
Die restanten zijn de echte les. Browserafhankelijkheden blijven lang nadat een domein is geblokkeerd ingebed, omdat mensen dingen niet verwijderen. Elk van die pagina's wijst nog steeds naar een domein dat al een keer is bewapend.
Hoe je Polyfill.io vandaag vindt en verwijdert
Begin met de pagina's die login, checkout, accountcreatie, betaling en persoonsgegevens raken.
- Doorzoek je broncode, tagmanagers, CMS-templates en oude snippets op
polyfill.io, plus de gerelateerde domeinenbootcdn[.]net,bootcss[.]com,staticfile[.]net,staticfile[.]orgenunionadjs[.]com. - Verwijder de verwijzingen. Moderne browsers hebben deze polyfills niet meer nodig, dus verwijderen is veiliger dan een mirror inwisselen.
- Koppel elk overgebleven script van derden aan een eigenaar, een doel, een page scope en een niveau van datatoegang.
- Markeer scripts die meer scripts laden, URLs dynamisch bouwen of zich anders gedragen per user agent, regio of sessie.
- Gebruik Subresource Integrity alleen waar een script statisch is en de provider stabiele hashes ondersteunt.
- Versterk je Content Security Policy op gevoelige flows, beginnend in report-only-modus.
- Monitor wat scripts runtime daadwerkelijk doen, zodat een eigenaarswissel of een nieuwe payload zichtbaar is wanneer echte gebruikers de pagina laden.
Wat deze aanval leert over client-side security
De Polyfill.io-aanval werkte omdat vertrouwen als permanent werd behandeld. Een script dat één keer was goedgekeurd, bleef draaien nadat het bedrijf erachter was veranderd en nadat de code die het serveerde was veranderd. Serverlogs zagen het niet. Vendorvragenlijsten betrapten het niet. De browser voerde het toch uit.
Die kloof, tussen vertrouwde insluiting en runtime-uitvoering, is precies wat cside is gebouwd om te dichten. cside werkt op de browserlaag, waar scripts van derden echt draaien. Het laat zien welke scripts op echte pagina's laden, wat ze aanroepen, hoe ze veranderen en of ze verdacht gedrag proberen, zoals onverwachte omleidingen of datatoegang. In het geval van Polyfill.io is die runtime-view wat een vertrouwde afhankelijkheid markeert op het moment dat die vijandig wordt.
De volgende polyfill.io staat al ergens op het web, ingebed en vertrouwd. De enige betrouwbare manier om die te betrappen, is kijken naar wat je scripts doen, niet alleen naar wie ze heeft geleverd. Beveilig je site gratis met cside en zie elk script dat je gebruikers echt laden.








