Skip to main content
Blog
Blog Attacks

Attaque de la chaîne d'approvisionnement Polyfill.io : chronologie complète, analyse et leçons (2024–2026)

Une chronologie complète et sourcée de l'attaque Polyfill.io, de la vente du domaine en 2024 aux sanctions contre Funnull en 2025, et comment la supprimer aujourd'hui.

Jun 14, 2026 11 min read
Attaque de la chaîne d'approvisionnement Polyfill.io : chronologie complète, analyse et leçons (2024–2026)

Réponse rapide : l'attaque de la chaîne d'approvisionnement Polyfill.io a commencé lorsque le domaine polyfill.io, très largement intégré, a été vendu à Funnull en février 2024 et a commencé à servir du JavaScript malveillant dès juin. cside a été le premier à signaler l'ampleur réelle de l'attaque : plus de 490 000 sites web, et non les 100 000 que presque tous les médias ont repris. Ce chiffre inférieur correspondait simplement à l'endroit où l'outil de recherche cessait de compter. Un an plus tard, le Trésor américain a sanctionné Funnull pour cette opération. Voici la chronologie complète, ce que faisait le code, et comment le trouver et le supprimer.

L'attaque Polyfill.io est l'un des incidents de chaîne d'approvisionnement dans le navigateur les plus clairs jamais documentés. Un utilitaire gratuit et de confiance était installé sur des centaines de milliers de sites depuis des années. De nouveaux propriétaires l'ont transformé en surface d'attaque du jour au lendemain. Aucun propriétaire de site n'a changé une ligne de code, et pourtant leurs visiteurs ont été exposés.

Cette page rassemble toute l'histoire en un seul endroit : une chronologie datée, la vérité derrière le chiffre des « 100 000 sites », ce que la charge utile faisait réellement, le CVE, les sanctions contre Funnull qui ont suivi, et une checklist de nettoyage pratique. Pour aller plus loin, chaque section renvoie à nos articles d'origine de 2024 et 2025.

La version courte

  • Le domaine polyfill.io a été vendu à Funnull en février 2024. Dès juin, il servait des redirections malveillantes.
  • Il n'existe aucun CVE couvrant l'ensemble de l'incident ; le plus proche, CVE-2024-38526, se limite à l'outil de documentation pdoc qui chargeait polyfill.io — et non à l'attaque elle-même.
  • L'ampleur réelle était de 490 000+ sites web, et non les 100 000 largement cités. Ce chiffre correspondait au plafond de résultats par défaut de PublicWWW. cside a signalé le vrai chiffre en premier.
  • La charge utile capturée était une redirection mobile uniquement vers des sites d'escroquerie et de paris, conçue pour échapper aux chercheurs.
  • Le 2025-05-29, l'OFAC a sanctionné Funnull et son administrateur Liu Lizhi.
  • Au 2026-05-18, plus de 61 000 pages intègrent encore polyfill.io. Si la vôtre en fait partie, supprimez-le.

Chronologie complète (2009–2026)

DateÉvénement
2009–2010Remy Sharp invente le terme « polyfill » ; l'idée se répand dans la communauté du développement web
2014Andrew Betts crée le service polyfill.io aux Financial Times Labs ; une seule balise de script adapte les polyfills à chaque navigateur
2014-10-28HTML5 devient une recommandation du W3C ; les navigateurs evergreen, à mise à jour automatique, rendent bientôt polyfill.io largement inutile
~2023Le Financial Times confie le projet à son mainteneur de longue date, Jake Champion
Févr. 2024Le domaine polyfill.io et le dépôt GitHub sont vendus à Funnull, une société exploitée depuis la Chine
2024-02-25Andrew Betts avertit publiquement : « Si votre site web utilise polyfill.io, supprimez-le IMMÉDIATEMENT »
2024-02-29Cloudflare publie un miroir cdnjs sûr pour réduire le risque de chaîne d'approvisionnement ; Fastly avait mis en place son propre miroir quelques jours plus tôt
2024-06-24Le chercheur japonais « piyokango » signale le comportement malveillant
2024-06-25Sansec publie sa divulgation forensique ; cside publie le même jour et signale l'ampleur réelle de 490 000+
2024-06-26Cloudflare commence à réécrire automatiquement polyfill.io vers son miroir ; Google avertit les annonceurs concernés
2024-06-27Namecheap suspend le domaine polyfill.io
2024-07-02Censys compte de son côté 384 773 hôtes affectés
2025-05-29L'OFAC sanctionne Funnull et l'administrateur Liu Lizhi ; le FBI relie 548 CNAMEs Funnull à plus de 332 000 domaines
2026-05-1861 593 pages intègrent encore polyfill.io

Le chiffre des « 100 000 sites » était faux

Presque tous les articles sur cette attaque ont utilisé le même chiffre : environ 100 000 sites. Ce nombre est un artefact de l'outil, pas une mesure de l'attaque.

Les chercheurs, cside inclus, ont utilisé PublicWWW pour trouver chaque page contenant le snippet polyfill.io. PublicWWW plafonne les résultats à 100 000 par défaut. Ainsi, chaque comptage qui s'y appuyait s'arrêtait à « 100 000+ ». Lorsque nous avons poussé la recherche au-delà du plafond, le chiffre réel était de plus de 490 000 sites web.

Cela compte, car l'ensemble des sites affectés n'était pas aléatoire. Il était fortement concentré sur des destinations à fort trafic et à forte confiance : banques, sites gouvernementaux, grands éditeurs et marques connues. Annoncer « 100 000 » sous-estimait une attaque près de cinq fois plus grande. Le fait que cside ait mis en lumière le vrai chiffre de 490 000+ est la correction dont le récit public avait besoin, et le comptage indépendant de 384 773 hôtes par Censys le 2024-07-02 confirme que l'échelle dépassait largement 100 000.

Ce que faisait réellement le code malveillant

Le comportement qui a été capturé, décodé et publié était une redirection. Le rapport forensique de Sansec du 2024-06-25 a montré que le script trafiqué envoyait certains visiteurs mobiles via un typosquat de Google Analytics, googie-anaiytics[.]com (notez les lettres permutées), puis vers des sites de paris sportifs et pour adultes.

C'est le savoir-faire opérationnel qui l'a rendu dangereux et difficile à repérer. La redirection :

  • ne se déclenchait que sur les appareils mobiles, jamais sur ordinateur ;
  • variait selon la région géographique et selon l'heure de la journée ;
  • ne frappait chaque appareil ou IP qu'une seule fois, de sorte que ni une victime ni un chercheur ne pouvait la reproduire en rafraîchissant ;
  • se taisait lorsqu'elle détectait un utilisateur administrateur ou la présence d'outils d'analyse web ;
  • était dotée d'une armure anti-rétro-ingénierie.

Comme polyfill.io était par conception un service dynamique, l'opérateur pouvait servir du code propre à un visiteur et du code malveillant au suivant. La Subresource Integrity ne pouvait pas aider, car elle épingle le hash d'un fichier fixe, et ce service n'avait aucun fichier fixe. Le script s'exécutait en first-party dans l'origine de chaque site, il avait donc accès au DOM, aux formulaires et aux cookies de cette page, et il figurait sur les allowlists CSP de centaines de milliers de domaines de confiance.

N'était-ce qu'une redirection ? C'est la part honnête et non résolue. La désobfuscation indépendante de la charge utile récupérée n'a trouvé qu'une logique de redirection et rien d'autre : aucune capture de frappes, aucun vol d'identifiants. Mais la conception par requête signifie qu'une variante visant un seul visiteur de grande valeur n'a jamais besoin d'apparaître dans un scan public. La redirection est ce qui a été attrapé. Ce qui a pu s'exécuter d'autre durant ces mois ne peut être prouvé ni dans un sens ni dans l'autre. Nous avons détaillé l'argument de la capacité dans L'attaque Polyfill.io : bien plus qu'une simple attaque de redirection.

Pour le compte rendu complet de l'incident à l'époque, voir L'attaque Polyfill expliquée et notre rapport publié le même jour, Plus de 490 000 sites web ciblés dans une attaque de la chaîne d'approvisionnement web.

Existe-t-il un CVE pour l'attaque Polyfill.io ?

Aucun CVE unique n'est attribué à l'incident Polyfill.io lui-même. L'identifiant le plus proche dans la National Vulnerability Database est CVE-2024-38526, mais il se limite à pdoc — un outil de documentation d'API Python qui établissait un lien vers polyfill.io dans la documentation qu'il générait (corrigé dans pdoc 14.5.1). Il ne couvre pas cdn.polyfill[.]io ni l'ensemble plus large des sites affectés. Si vous gérez un programme de gestion des vulnérabilités, suivez cet incident par ses domaines affectés (cdn.polyfill[.]io, ainsi que les domaines liés bootcdn[.]net, bootcss[.]com, staticfile[.]net, staticfile[.]org et unionadjs[.]com) plutôt que par un seul CVE, et ne référencez CVE-2024-38526 que pour l'exposition liée à pdoc.

Le lien avec Funnull et les sanctions de 2025

Polyfill.io n'était pas un cas isolé. L'acheteur du domaine, Funnull, exploitait une opération bien plus vaste.

Le 2025-05-29, l'Office of Foreign Assets Control du Trésor américain a sanctionné Funnull Technology Inc. et son administrateur, Liu Lizhi. Le Trésor a relié l'infrastructure de Funnull à plus de 200 millions de dollars de pertes déclarées par des victimes aux États-Unis dans des escroqueries à l'investissement, le schéma souvent appelé pig butchering. Son avis décrivait le lien avec polyfill sans nommer le service : en 2024, Funnull « a acheté un dépôt de code utilisé par des développeurs web et a modifié de manière malveillante ce code pour rediriger les visiteurs de sites légitimes vers des sites d'escroquerie et des sites de jeux d'argent en ligne ».

Le même jour, le FBI a relié 548 CNAMEs Funnull à plus de 332 000 domaines. C'est du blanchiment d'infrastructure : louer un espace cloud et CDN réputé via des comptes illicites et le revendre à des escrocs pour que les sites malveillants paraissent légitimes et restent difficiles à supprimer. Nous avons couvert les sanctions et ce qu'elles signifient pour les équipes de sécurité dans Funnull sanctionnée : ce que l'attaque Polyfill.io a révélé sur le blanchiment d'infrastructure.

Qui est encore exposé

Les sanctions perturbent une société. Elles ne suppriment pas le code de votre site. Au 2026-05-18, PublicWWW listait encore 61 593 pages contenant polyfill.io, bien plus d'un an après la suspension du domaine.

Ce résidu est la véritable leçon. Les dépendances navigateur restent intégrées longtemps après le blocage d'un domaine, parce que les gens ne suppriment pas les choses. Chacune de ces pages pointe encore vers un domaine qui a déjà été instrumentalisé une fois.

Comment trouver et supprimer Polyfill.io aujourd'hui

Commencez par les pages qui touchent la connexion, le checkout, la création de compte, le paiement et les données personnelles.

  1. Recherchez polyfill.io dans votre code source, vos tag managers, vos modèles CMS et vos anciens snippets, ainsi que les domaines liés bootcdn[.]net, bootcss[.]com, staticfile[.]net, staticfile[.]org et unionadjs[.]com.
  2. Supprimez les références. Les navigateurs modernes n'ont plus besoin de ces polyfills, donc la suppression est plus sûre que le remplacement par un miroir.
  3. Associez chaque script tiers restant à un propriétaire, un objectif, un périmètre de pages et un niveau d'accès aux données.
  4. Signalez les scripts qui chargent d'autres scripts, construisent des URLs dynamiquement ou se comportent différemment selon le user agent, la région ou la session.
  5. Utilisez la Subresource Integrity uniquement là où un script est statique et où le fournisseur prend en charge des hashes stables.
  6. Renforcez la Content Security Policy sur les parcours sensibles, en commençant en mode report-only.
  7. Surveillez ce que les scripts font réellement au runtime, afin qu'un changement de propriétaire ou une nouvelle charge utile soit visible lorsque de vrais utilisateurs chargent la page.

Ce que cette attaque enseigne sur la sécurité côté client

L'attaque Polyfill.io a fonctionné parce que la confiance était traitée comme permanente. Un script approuvé une fois a continué de s'exécuter après le changement de la société derrière lui et après le changement du code qu'il servait. Les logs serveur ne l'ont pas vu. Les questionnaires fournisseurs ne l'ont pas attrapé. Le navigateur l'a exécuté malgré tout.

Cet écart, entre l'inclusion approuvée et l'exécution au runtime, est exactement ce que cside a été conçu pour combler. cside travaille à la couche navigateur, là où les scripts tiers s'exécutent réellement. Il montre quels scripts se chargent sur les vraies pages, ce qu'ils appellent, comment ils changent, et s'ils tentent un comportement suspect comme des redirections inattendues ou des accès aux données. Dans le cas Polyfill.io, c'est cette vue au runtime qui signale une dépendance de confiance dès l'instant où elle devient hostile.

Le prochain polyfill.io est déjà quelque part sur le web, intégré et digne de confiance. La seule façon fiable de l'attraper est de surveiller ce que vos scripts font, pas seulement qui les a livrés. Sécurisez votre site gratuitement avec cside et voyez chaque script que vos utilisateurs chargent réellement.

Simon Wijckmans
Founder & CEO

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

Polyfill.io était un service populaire qui livrait des polyfills JavaScript aux sites web via une simple balise de script. En février 2024, le domaine et son dépôt GitHub ont été vendus à Funnull, une société exploitée depuis la Chine. En juin 2024, le service servait du code malveillant qui redirigeait les utilisateurs mobiles vers des sites d'escroquerie et de paris sportifs. Comme le script s'exécutait en first-party sur chaque site qui l'intégrait, l'opérateur pouvait modifier à tout moment ce qu'il servait.

La plupart des médias ont parlé de 100 000. Ce chiffre était faux. Il s'agissait du plafond de résultats par défaut de PublicWWW, l'outil de recherche de code utilisé par les chercheurs pour compter les intégrations. cside a poussé la même recherche au-delà du plafond et a trouvé plus de 490 000 sites web hébergeant le script. Censys a compté de son côté 384 773 hôtes affectés le 2024-07-02. L'empreinte réelle était bien plus large que le chiffre des gros titres, et concentrée sur des sites à fort trafic et à forte confiance.

Non. Il n'existe aucun CVE unique pour l'incident Polyfill.io lui-même. CVE-2024-38526 est l'identifiant le plus proche dans la National Vulnerability Database, mais il se limite à pdoc — un outil de documentation Python qui chargeait polyfill.io dans la documentation qu'il générait (corrigé dans pdoc 14.5.1) — et non au domaine cdn.polyfill[.]io ni aux centaines de milliers d'autres sites qui intégraient le script.

Le comportement qui a été capturé et décodé était une redirection. Il envoyait certains visiteurs mobiles vers un typosquat de Google Analytics (googie-anaiytics[.]com), puis vers des sites de paris et pour adultes. La redirection ne se déclenchait que sur mobile, variait selon la région et l'heure de la journée, frappait chaque appareil une seule fois et se taisait lorsqu'elle détectait un utilisateur administrateur ou des outils d'analyse. Une désobfuscation indépendante n'a trouvé qu'une logique de redirection dans l'échantillon récupéré. Comme le service générait du code à chaque requête, une variante de vol de données ciblant des visiteurs précis n'a jamais pu être totalement exclue, mais aucune n'a jamais été capturée publiquement.

Funnull a acheté le domaine polyfill.io début 2024. Le 2025-05-29, l'OFAC du Trésor américain a sanctionné Funnull Technology Inc. et son administrateur Liu Lizhi pour avoir fourni une infrastructure liée à plus de 200 millions de dollars de pertes déclarées par des victimes aux États-Unis. L'avis du Trésor décrivait Funnull achetant un dépôt de code utilisé par des développeurs web et le modifiant pour rediriger les visiteurs, ce qui correspond à l'incident Polyfill.io.

Recherchez polyfill.io dans votre code source, vos tag managers, vos modèles CMS et vos anciens snippets, ainsi que les domaines liés bootcdn[.]net, bootcss[.]com, staticfile[.]net, staticfile[.]org et unionadjs[.]com. Supprimez toute référence. Les navigateurs modernes n'ont plus besoin de ces polyfills, donc la solution la plus sûre est la suppression. Surveillez ensuite quels scripts tiers se chargent réellement au runtime, car un domaine fournisseur de confiance peut changer de mains ou changer de comportement après son approbation.

Surveillez et sécurisez vos scripts tiers

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

Commencez gratuitement, ou essayez Business avec un essai de 14 jours.

cside Interface du tableau de bord affichant la surveillance des scripts et les analyses de sécurité
Related Articles
Réserver une démonstration