Examen de l'attaque Polyfill du point de vue d'Akamai
Commentaires éditoriaux et additionnels de Tricia Howard
Attaque de la chaîne d'approvisionnement polyfill.io : présentation
La communauté de sécurité a récemment été alertée d'une attaque de la chaîne d'approvisionnement d'envergure, impliquant polyfill.io, un service qui fournit des polyfills (un morceau de code JavaScript qui permet d'intégrer des fonctionnalités récentes aux anciens navigateurs ne les prenant pas en charge nativement) aux applications Web. Selon des rapports détaillés, cette attaque a touché plus de 100 000 sites Web, abusant de la confiance et de l'utilisation généralisée du service polyfill.io afin de propager du code malveillant.
Dans le cadre de cette attaque, un acteur malveillant qui semble se trouver en Chine a acquis l'un des projets open source les plus populaires de polyfill il y a quelques mois et a infecté le code JavaScript de polyfill en injectant des scripts malveillants dans les polyfills distribués. L'attaque ciblait principalement les terminaux mobiles, et échantillonnait les sessions de manière sélective pour rester furtive et plus difficile à détecter. Le code malveillant a ensuite été utilisé pour une attaque de redirection pour détourner les utilisateurs vers des sites d'escroquerie.
Lorsque les développeurs ont intégré ces polyfills compromis dans leurs sites Web, ils ont introduit sans le savoir du code malveillant dans leurs applications. Dans ce billet de blog, nous aborderons cette attaque spécifique, les attaques de la chaîne d'approvisionnement en général, ainsi que les données exclusives que nous avons observées du point de vue de Client-Side Protection & Compliance d'Akamai.
Qu'est-ce qu'une attaque de la chaîne d'approvisionnement ?
Une attaque de la chaîne d'approvisionnement cible les vulnérabilités au sein de la chaîne d'approvisionnement d'une organisation. Dans le contexte des applications Web en ligne, les sites Web d'aujourd'hui chargent des dizaines de ressources tierces dans le cadre du fonctionnement normal du site. Ces ressources sont approuvées par les propriétaires de sites Web et ont généralement un accès complet à la page, y compris le modèle d'objet document, les cookies et les informations sensibles saisies par les utilisateurs finaux.
La surveillance et le suivi de ces ressources sont extrêmement difficiles en raison de leur nombre élevé, de leurs changements fréquents et du manque de visibilité côté client. Cette confiance peut être exploitée par des attaquants, qui utilisent ces services tiers pour compromettre les applications Web. Ces attaques impliquent généralement l'injection de code malveillant dans des bibliothèques ou des services tiers légitimes, qui sont ensuite distribués aux utilisateurs finaux sans que personne ne le sache.
Selon une étude menée par le groupe Security Intelligence d'Akamai, 50 % du code JavaScript utilisé dans les sites Web de commerce électronique provient de sources tierces. En moyenne, nous observons du code de dizaines de fournisseurs tiers différents sur les pages de paiement de nos clients, qui doivent maintenant se conformer aux nouvelles exigences des normes PCI DSS v4.0 6.4.3 et 11.6.1.
L'attaque polyfill du point de vue d'Akamai
L'attaque polyfill est livrée via le site Web ciblé sous forme de code JavaScript provenant de cdn.polyfill.io. L'attaque utilise à la fois l'échantillonnage côté serveur et côté client. Côté serveur, elle examine les en-têtes de requête, tels que l'agent utilisateur, pour cibler uniquement les terminaux mobiles avec des conditions spécifiques. Pour les autres terminaux, le serveur polyfill donne le code polyfill d'origine ou une réponse vide pour les navigateurs récents.
Le processus d'échantillonnage n'est pas limité au côté serveur. Pendant l'exécution, le code vérifie également le type de terminal côté client à l'aide de son propre code JavaScript. En outre, il sélectionne des cibles en fonction du référent de page et de l'heure locale du terminal. Lorsque le code JavaScript malveillant exécute son attaque, il communique avec un serveur à l'adresse googie-anaiytics[.]com.
Nous avons pu surveiller l'exécution du code JavaScript malveillant sur la page Web, y compris sa communication avec son serveur. Lorsqu'une activité suspecte a été détectée, une alerte a été déclenchée pour les clients concernés. La clé pour faire face à n'importe quelle menace est l'agilité ; la capacité de réagir rapidement est primordiale pour limiter le champ d'action d'une attaque.
Les règles de comportement des scripts de Client-Side Protection & Compliance ont été définies pour bloquer cette communication, empêchant ainsi la poursuite de l'attaque. La figure 1 en montre un exemple réel : Le refus de ce chemin d'attaque s'est produit en temps réel, immédiatement après l'activation de la règle.
Polyfill.io utilise les tendances avant et après l'attaque
Nous avons observé que plus de 40 clients avaient des ressources chargées à partir de polyfill.io. Certains de ces clients ont connu des dizaines de milliers de pages impactées quotidiennement (figure 2). Ce nombre inclut les clients qui ont directement utilisé les ressources JavaScript de polyfill.io, les tiers qui ont inclus ce code dans le cadre de leur exécution et les ressources provenant des extensions de navigateur des utilisateurs finaux.
Nos données ont été extraites de Client-Side Protection & Compliance d'Akamai, qui surveille et analyse activement les exécutions JavaScript en temps réel. Cela permet de réduire le temps de correction, qu'il s'agisse d'une première partie ou d'une tierce partie.
Akamai travaille en étroite collaboration avec ses clients pour répondre efficacement à l'attaque et en atténuer l'impact, notamment en envoyant une notification aux clients concernés avec un bulletin de sécurité sur l'attaque. Cette approche proactive a entraîné une diminution significative des ressources provenant du nom de domaine infecté, réduisant ainsi l'exposition aux risques pour les clients d'Akamai.
Besoin d'aide pour les attaques de la chaîne d'approvisionnement ?
La solution Client-Side Protection & Compliance d'Akamai est conçue pour protéger les clients contre les attaques côté client, provenant à la fois de sources internes et tierces, y compris les attaques de la chaîne d'approvisionnement.
La solution surveille les ressources JavaScript dans les applications Web, analyse leur exécution en temps réel et détermine si elles se comportent de manière suspecte. Elle détecte également les anomalies de comportement des scripts, fournissant une analyse détaillée de chaque ressource JavaScript chargée et exécutée dans les applications Web.
En outre, Client-Side Protection & Compliance offre des capacités d'atténuation en temps réel qui empêchent l'exécution de scripts malveillants en quelques secondes. Sans avoir à modifier le code de l'application Web pour bloquer les comportements suspects, les équipes de sécurité peuvent considérablement améliorer le temps de réponse à une attaque. La solution est capable de détecter l'attaque polyfill.io et les sessions utilisateur impactées, puis d'arrêter l'exécution de l'attaque.
Avantages de la détection et de l'atténuation dans le navigateur
Cette attaque ne ciblait qu'un petit nombre de sessions, en particulier en filtrant les sessions sur les navigateurs d'agent utilisateur peu communs, de sorte que les solutions qui n'effectuent que des analyses synthétiques sur le site Web pourraient avoir manqué ce flux d'attaque. L'un des principaux avantages de la solution Client-Side Protection & Compliance d'Akamai est qu'elle s'exécute à l'intérieur du navigateur pour chaque session utilisateur ;elle a su détecter des exécutions de code JavaScript malveillant même lorsque ces sessions spécifiques ciblées étaient lancées et, plus important encore, elle a empêché l'exécution d'attaques sur la page une fois la règle de protection activée (figure 3).
Conclusion
L'attaque de la chaîne d'approvisionnement polyfill.io souligne les vulnérabilités critiques inhérentes au développement d'applications Web aujourd'hui. Le recours à des ressources tierces peut introduire par inadvertance des risques de sécurité, même lorsque toutes les protections appropriées sont en place. Cet incident, impliquant plus de 100 000 sites Web, a mis en évidence la facilité avec laquelle les services de confiance peuvent être compromis pour distribuer du code malveillant, diminuant la sécurité et la confiance des utilisateurs.
La surveillance des menaces de ce type est l'essence même du groupe Security Intelligence d'Akamai, tant pour nos clients que pour la communauté de sécurité en général. Nous continuerons d'observer l'écosystème des menaces et de fournir des comptes-rendus de nos observations. Pour connaître les dernières informations en temps réel, suivez-nous sur X(anciennement Twitter) ou consultez notre page consacrée aux études sur la sécurité.