FlawOpen

flawopen.com/Incidents/polyfill-io-supply-chain-incident-june-2024

● Polyfill.io service · CWE-829 · June 2024 · Haute
Recherche · FlawOpen

Attaque de Polyfill.io (2024)

Incident de 2024 : polyfill.io a redirigé certains visiteurs. Supprimez la référence au CDN ; aucune CVE n’a été attribuée.

💡 Explication en Langage Simple (ELI5)

Imaginez un restaurant qui place sur chaque table une bouteille d’un fournisseur externe. Si celui-ci en change le contenu, les clients peuvent être touchés même si le restaurant ne modifie pas son menu.

Concepts Clés et Termes

Dynamic User-Agent Polyfilling
Distribution de paquets JavaScript sur mesure selon les en-têtes du navigateur client, rendant impossible l'utilisation de hachages SRI (Subresource Integrity).
Conditional Payload Evasion
Analyse du Referer HTTP, de la taille d'écran, du user-agent et des devtools pour servir des scripts sains aux développeurs tout en attaquant les utilisateurs mobiles réels.
Domain Ownership Transfer Risk
Le danger inhérent à l'intégration de scripts tiers provenant de domaines pouvant être rachetés, expirés ou transférés sans consentement.
Subresource Integrity (SRI)
Mécanisme cryptographique du navigateur qui valide les empreintes (hashes) des scripts avant leur exécution.

Correspondances de référentiels

  • Référence CWE pour la faiblesse décrite dans ce guide : CWE-829

Chronologie de l'Incident

Février 2024

Sansec a signalé le changement de propriétaire du domaine et du compte GitHub ; Fastly a proposé une solution préventive.

25 juin 2024

Sansec a publié son analyse et estimé que plus de 100 000 sites étaient exposés selon ses propres mesures.

26–27 juin 2024

Cloudflare a annoncé des réécritures automatiques vers son miroir ; le domaine a ensuite été suspendu. Supprimez les anciennes références au lieu de dépendre de réécritures temporaires.

Déroulement de l'Attaque Étape par Étape

Étape 1

Changement de contrôle

Sansec a indiqué que le domaine polyfill.io et le compte GitHub avaient changé de mains en février 2024. Fastly a proposé une solution préventive avant les signalements de réponses malveillantes. Fastly a ensuite indiqué avoir appris l’attaque à la publication du rapport de Sansec ; son alternative de février relevait de la précaution et ne prouve pas qu’elle connaissait une activité malveillante.

Étape 2

Le site charge le CDN

Une page référençant cdn.polyfill.io fait récupérer puis exécuter par le navigateur le JavaScript reçu dans le contexte de cette page.

Étape 3

Redirection conditionnelle observée

L’échantillon étudié par Sansec redirigeait conditionnellement certains visiteurs mobiles. Cela décrit cet échantillon, pas toutes les réponses du CDN.

Étape 4

Mesures et réponse

Cloudflare a réécrit les références vers son miroir ; Fastly a proposé une solution distincte. Sansec a signalé le refus de certaines annonces Google Ads de sites marchands, pas une pénalité générale dans les résultats naturels.

Code Source : Vulnérable vs Sécurisé

IMPLÉMENTATION VULNÉRABLE
<!-- VULNERABLE: Direct 3rd-party CDN script without integrity verification -->
<!DOCTYPE html>
<html>
<head>
  <title>Production Web App</title>
  <!-- Polyfill CDN serves arbitrary dynamic code controlled by third party -->
  <script src="https://cdn.polyfill.io/v3/polyfill.min.js?features=default,Array.prototype.flat"></script>
</head>
<body>
  <h1>Welcome</h1>
</body>
</html>
PATCH SÉCURISÉ ET ROBUSTE
<!-- Build this file from a reviewed, version-pinned dependency. -->
<script defer src="/assets/vendor/polyfills.min.js"></script>

Liste de Contrôle de Sécurité pour l'Ingénierie

Sources