Skip to main content
Blog
Blog

Qu'est-ce qu'une attaque de la chaîne d'approvisionnement ? La chaîne d'approvisionnement du navigateur expliquée

cside est un produit de cybersécurité qui évolue dans l'espace de la chaîne d'approvisionnement du navigateur. Nous et les autres fournisseurs opérant dans ce domaine aimons parler de cette chaîne d'approvisionnement. Mais qu'entendons-nous exactement par là ? La chaîne d'approvisionnement du navigateur est la combinaison de composants et de processus qui s'assemblent pour afficher des pages web, exécuter des scripts et assurer un bon fonctionnement. Cette chaîne comprend tout, depuis la requête initiale d'une page web jusqu'au rendu final de cette page dans le navigateur de l'utilisateur. Ainsi que les comportements dynamiques qui se produisent après le rendu du site.

Jul 02, 2024 9 min read
Qu'est-ce que la chaîne d'approvisionnement du navigateur, chaque script chargé par votre site en production
Table des matières

En bref : qu'est-ce que la chaîne d'approvisionnement du navigateur

  • Ce qu'elle inclut : Chaque source de code exécutable que le navigateur de votre visiteur atteint réellement. Bundles first-party, tag manager, analytics, chat, ad-tech, et tout ce dont ceux-ci dépendent.
  • Un maillon, chaque visiteur : Un maillon compromis atteint chaque visiteur. Polyfill.io est le cas de référence : une seule vente de CDN a mis du code malveillant sur 490 000+ sites.
  • Pourquoi les WAF le manquent : Les WAF et allowlists CSP ne peuvent pas le voir parce qu'un domaine autorisé le sert. C'est cette brèche qui justifie l'existence de 6.4.3 et 11.6.1.

Peu de temps ? Découvrez le blocage de Magecart et de skimmers dans le navigateur de cside. Elle couvre tout ce qui suit en un seul déploiement.

Voici la chaîne d'approvisionnement du navigateur dans son intégralité et comment la sécuriser correctement

1. L'utilisateur effectue une action : Un utilisateur initie une requête en saisissant une URL dans le navigateur ou en cliquant sur un lien.

Composants : Navigateur.

2. Résolution DNS : Le navigateur interroge un serveur DNS pour traduire le nom de domaine en adresse IP.

Composants : Serveurs DNS et cache du navigateur.

Utilisez DNSSEC (Domain Name System Security Extensions) pour sécuriser le processus de résolution DNS. Cela valide l'authenticité de la réponse DNS et protège contre les attaques de DNS spoofing et d'empoisonnement du cache. Bien que la mise en cache DNS puisse améliorer les temps de chargement, assurez-vous que le TTL d'un enregistrement DNS est suffisamment bas pour pouvoir effectuer des modifications rapidement. Enfin, optez pour des fournisseurs DNS ayant un solide historique en matière de sécurité.

3. Connexion TCP/IP : Le navigateur établit une connexion TCP avec le serveur web en utilisant l'adresse IP obtenue lors de la résolution DNS.

Composants : Infrastructure Internet, FAI et routeurs réseau.

Configurez des pare-feux au niveau de la couche réseau pour surveiller et contrôler le trafic réseau entrant et sortant en fonction des politiques de sécurité. Cela contribue à prévenir les accès non autorisés.

4. Handshake SSL/TLS : Si la connexion est sécurisée (HTTPS), le navigateur et le serveur effectuent un handshake SSL/TLS pour établir une connexion chiffrée.

Composants : Certificats SSL/TLS et Autorités de Certification (CA).

Utilisez toujours Transport Layer Security (TLS) pour chiffrer les données transmises sur le réseau. Cela empêche les attaquants d'intercepter ou de falsifier les données en transit.

5. Requête HTTP : Le navigateur envoie une requête HTTP au serveur pour la page web.

Composants : Serveur web et équilibreurs de charge.

Implémentez HTTPS sur toutes vos pages pour sécuriser les requêtes HTTP en chiffrant les données en transit. Utilisez HTTP Strict Transport Security (HSTS) pour garantir que les navigateurs n'établissent que des connexions sécurisées avec votre serveur. Le cas échéant, envisagez d'implémenter une limitation de débit pour prévenir les abus sur les API de votre service.

6. Réponse du serveur : Le serveur traite la requête et répond avec un document HTML et le JavaScript associé. Souvent, la livraison de la réponse initiale amènera le navigateur à récupérer du contenu depuis d'autres serveurs tiers. Cependant, les réponses ici peuvent être dynamiques, il est donc recommandé de disposer d'un outil comme cside pour surveiller les ressources tierces récupérées côté client.

Composants : Serveur web, serveur d'application et serveur de base de données.

Pour prévenir les attaques Cross-Site Scripting (XSS), encodez correctement tout contenu généré par les utilisateurs dans les réponses du serveur. Cela implique de transformer les caractères potentiellement dangereux en équivalents encodés sûrs avant de les renvoyer au client.

7. Réseaux de diffusion de contenu (CDN) : Les ressources statiques telles que les images, les fichiers CSS et JavaScript sont souvent servies depuis des CDN pour réduire la latence.

Composants : Serveurs CDN.

Beaucoup de personnes pensent que sécuriser la chaîne d'approvisionnement du navigateur nécessite uniquement de sécuriser le début de la chaîne. Cette hypothèse est incorrecte. Notre campagne de lancement, Supply Chain Risk Doesn't End At NPM, explique pourquoi ce n'est pas le cas. Se contenter de sécuriser cet aspect est insuffisant, comme l'a démontré l'incident de 2021 avec cdnjs. Bien qu'il soit utilisé sur 12 % de tous les sites web mondiaux, cdnjs était exposé à une vulnérabilité significative.

Ici, l'utilisation d'un fournisseur CDN robuste est bien entendu nécessaire. Assurez-vous simplement que ce n'est pas votre seule barrière de sécurité et suivez les autres recommandations.

Photo d'un panneau publicitaire cside affiché à Times Square, New York

8. Analyse et rendu HTML : Le navigateur analyse le document HTML pour construire le DOM (Document Object Model).

Composants : Moteur de rendu du navigateur.

De la même manière, ne vous reposez pas uniquement sur les Content Security Policies (CSP), mais configurez-les ici. Si des scripts inline sont nécessaires, utilisez un nonce (un jeton à usage unique) dans la balise script. Le nonce doit correspondre à celui présent dans l'en-tête Content Security Policy (CSP). Cette approche garantit que seuls les scripts disposant du bon nonce peuvent s'exécuter, ce qui contribue à empêcher l'exécution de scripts non autorisés ou malveillants.

9. Analyse CSS : Le navigateur analyse les fichiers CSS pour construire le CSSOM (CSS Object Model).

Composants : Moteur de rendu du navigateur.

Les expressions CSS peuvent exécuter du code dans le contexte du navigateur, ce qui peut entraîner des vulnérabilités de sécurité. Même si elles sont largement obsolètes et non prises en charge par de nombreux navigateurs modernes. Si votre application permet aux utilisateurs de saisir du CSS directement ou indirectement (via un CMS ou similaire), assurez-vous que cette saisie est validée et assainie pour empêcher l'exécution de CSS malveillant. Cela peut inclure la suppression des URL basées sur JavaScript, des expressions et des propriétés potentiellement dangereuses.

10. Exécution JavaScript et scripts tiers : Le navigateur télécharge et exécute les fichiers JavaScript, modifiant le DOM et le CSSOM selon les besoins. Des scripts supplémentaires provenant de sources tierces (par exemple, analytics, publicités, widgets de réseaux sociaux) sont récupérés et exécutés.

Composants : Moteur JavaScript du navigateur, serveurs tiers, paramètres Content Security Policy (CSP) et cside.

Nous traitons tous les scripts tiers via notre moteur de détection, en améliorant leur vitesse pour éviter toute latence supplémentaire. Nous vous fournissons ces données, vous permettant de surveiller leur activité, ce qui est essentiel pour la conformité aux réglementations PCI DSS 4.0. Nous pouvons également bloquer de manière autonome les acteurs malveillants, renforçant ainsi la sécurité de votre site. Commencez gratuitement avec nous dès aujourd'hui pour être plus proche de la conformité et plus en sécurité immédiatement.

Pour les autres fournisseurs et comment nous nous comparons, lisez ici.

11. Récupération des ressources : Le navigateur effectue des requêtes HTTP supplémentaires pour les ressources référencées dans le HTML, le CSS et le JavaScript (par exemple, polices, images supplémentaires).

Composants : Serveur web et CDN.

Il est important de noter ici que cside détecte toute activité malveillante dans le domaine tiers avant qu'elle ne soit rendue par le navigateur. D'autres outils de surveillance ne font souvent pas cela. À notre avis, c'est la meilleure façon de sécuriser cette étape.

12. Mise en cache côté client : Le navigateur met en cache les ressources localement pour améliorer les performances lors des visites ultérieures.

Composants : Cache du navigateur et Service Workers.

Définissez des directives de cache appropriées pour éviter de stocker des informations sensibles dans le cache. Pour les pages particulièrement sensibles, utilisez la directive no-store pour vous assurer qu'elles ne sont pas mises en cache. Utilisez toujours HTTPS pour toutes les transactions. Implémentez des sommes de contrôle ou des hachages pour vérifier l'intégrité des données mises en cache avant leur utilisation.

13. Service Workers : Le cas échéant, les service workers peuvent intercepter les requêtes réseau, gérer la mise en cache et activer les fonctionnalités hors ligne.

Composants : Scripts Service Worker et environnement du navigateur.

Définissez des règles de mise en cache strictes dans vos scripts service worker pour vous assurer que seul le contenu non sensible et immuable est mis en cache.

14. Rendu et affichage : Le navigateur construit l'arbre de rendu et dessine les pixels à l'écran, créant la représentation visuelle de la page web.

Composants : Moteur de rendu du navigateur (et GPU).

Assurez-vous que les ressources chargées depuis des sources cross-origin ne peuvent pas interférer avec le rendu de votre site. Utilisez l'attribut crossorigin pour contrôler la façon dont ces ressources interagissent avec votre document.

15. Étape d'interaction utilisateur : L'utilisateur interagit avec la page web (par exemple, en cliquant, en tapant), déclenchant des écouteurs d'événements et une exécution supplémentaire de scripts.

Composants : DOM du navigateur, mécanismes de gestion des événements et moteur JavaScript.

Implémentez des jetons anti-CSRF dans les formulaires pour vous protéger contre les attaques Cross-Site Request Forgery. Assurez-vous que les gestionnaires d'événements JavaScript sont codés de manière sécurisée pour éviter l'exposition d'informations ou de fonctionnalités sensibles. Évitez d'utiliser du JavaScript inline dans les attributs HTML tels que onclick. Si votre site autorise les téléversements de fichiers, assurez-vous d'effectuer une analyse antimalware approfondie des fichiers téléversés. Appliquez des restrictions strictes de taille et de type pour empêcher le téléversement de fichiers potentiellement dangereux.

Sécurisez votre chaîne d'approvisionnement au maximum

Nous vous encourageons à entamer ce processus dès aujourd'hui. De nombreuses organisations ont subi des attaques, des amendes ou des atteintes à leur réputation en négligeant la sécurité de leur chaîne d'approvisionnement web. Cela découle souvent de problèmes de conformité liés au non-respect des normes de sécurisation des sites.

Les normes évoluent fréquemment, généralement en réponse à des attaques ou à des problèmes identifiés. Anticipez ces problèmes potentiels en faisant preuve de proactivité dès aujourd'hui. Utilisez la liste complète fournie ci-dessus pour sécuriser chaque partie de votre chaîne d'approvisionnement au plus haut niveau possible.

Envisagez également d'utiliser cside. Avec notre offre gratuite, vous pouvez surveiller et sécuriser les scripts tiers sur votre site, garantissant que cette partie de votre site web est entièrement sécurisée.

Lectures associées

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

Une attaque de la chaîne d'approvisionnement du navigateur compromet un script, un CDN ou un service tiers qu'un site charge et en qui il fait déjà confiance, puis exploite cette confiance pour atteindre le navigateur de chaque visiteur. L'incident Polyfill.io (2024, plus de 490 000 sites affectés) en est l'exemple canonique : un CDN de polyfill largement intégré a été vendu, puis a commencé à servir du JavaScript malveillant à des centaines de milliers de sites.

La chaîne d'approvisionnement du logiciel, c'est le code que vous compilez et livrez (npm, PyPI, images de conteneurs). La chaîne d'approvisionnement du navigateur, c'est chaque source de code exécutable que le navigateur du visiteur atteint réellement à l'exécution : vos propres bundles, les règles du tag manager, l'analytics, les widgets de chat, les outils A/B, l'ad-tech, ainsi que leurs dépendances transitives de quatrième et cinquième rang. Une seule règle de tag manager peut injecter du code dans chaque page sans aucun commit dans votre dépôt.

Un WAF inspecte les requêtes avant qu'elles n'atteignent votre origine ; les attaques de la chaîne d'approvisionnement du navigateur s'exécutent après que la page a déjà été servie et sont déclenchées côté client par des domaines de confiance. La Content Security Policy (CSP) peut restreindre les domaines autorisés à charger des scripts, mais si l'attaquant compromet un domaine déjà autorisé (comme dans Polyfill.io), CSP laisse passer. PCI DSS 4.0.1 §6.4.3 et §11.6.1 existent précisément parce que les contrôles côté origine ne voient pas cette couche.

Chargez vos pages principales dans une session de navigateur neuve et enregistrez chaque requête réseau ; tout ce qui renvoie du JavaScript, dépose un cookie ou ouvre un WebSocket fait partie de la chaîne d'approvisionnement. Faites-le depuis plusieurs régions et types d'appareils : les règles géolocalisées du tag manager font varier l'inventaire selon les pays. Pour un inventaire continu (imposé par PCI DSS 4.0.1 §6.4.3), un monitor en session réelle est la seule source fiable ; la vue DevTools ne montre que ce qu'une seule machine a vu à un seul instant.

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.

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

Envie de passer tout ça en revue avec un ingénieur ?

Trente minutes, sur votre propre site. Pas de slides.

Nous vous montrerons :

Quels scripts tiers s'exécutent actuellement sur votre site
Où vous en êtes sur les exigences PCI DSS 6.4.3 et 11.6.1
Quelle part de votre trafic provient de bots et d'agents IA

Vous préférez simplement poser une question ?

Recherche de créneaux…

Humains uniquement. On le saurait.

Un problème pour réserver ? Ouvrir le calendrier dans un nouvel onglet

Quel problème cherchez-vous à résoudre ?

Dites-le-nous en une ligne et nous reviendrons vers vous avec quelque chose d'utile, pas un discours générique.

Nous aidons souvent sur :

Voir quels scripts tiers s'exécutent sur votre site
Les preuves pour PCI DSS 6.4.3 et 11.6.1
Les bots, les agents IA et le vol de comptes

Vous préférez réserver un créneau ? Choisir un créneau