L'attaque de chaîne d'approvisionnement contre Brevo a injecté le malware ClickFix via une clé Cloudflare volée
Brevo a confirmé qu'une clé API Cloudflare volée a permis d'injecter le malware ClickFix à la périphérie de son CDN pendant 5 h 30 le 14 septembre, touchant plus de 100 000 sites clients.

Sur cette page
À retenir
- Brevo a confirmé qu'une clé API Cloudflare volée et de longue durée a permis aux attaquants de déployer un Worker malveillant qui injectait des scripts ClickFix à la périphérie du CDN pendant environ cinq heures et demie le 14 septembre 2026.
- Les surfaces touchées incluaient brevo.com, sendinblue.com, plusieurs sous-domaines de brevo.com et sibforms.com, ainsi que le script des formulaires Brevo, le widget Conversations et le chargeur de SDK intégrés aux sites clients.
- Sansec estime que l'attaque a servi du malware aux visiteurs du site de Brevo lui-même et à plus de 100 000 sites clients ; Brevo affirme qu'app.brevo.com, son API, l'envoi d'e-mails et les données de ses clients n'ont pas été touchés.
- Sur les sites WordPress où un administrateur était connecté, le script injecté tentait d'installer une extension que BleepingComputer a trouvée déguisée en « Web Media Optimizer » mais qui agit comme une porte dérobée persistante.
- Un incident SSO distinct chez Brevo le 10 septembre a précédé une campagne d'hameçonnage que SecurityWeek dit avoir atteint environ 347 000 adresses e-mail Trezor, avec au moins 2 500 utilisateurs ayant cliqué ; les pertes confirmées de portefeuilles restent floues.
Brevo, l'entreprise française de gestion de la relation client et de marketing par e-mail connue auparavant sous le nom de Sendinblue, a confirmé que des attaquants ont volé une clé API Cloudflare et l'ont utilisée pour injecter le malware ClickFix dans ses propres sites et dans du JavaScript que des milliers de clients intègrent à leurs sites. La falsification a eu lieu à la périphérie du CDN et a duré environ cinq heures et demie le 14 septembre 2026, selon le post-mortem de Brevo et l'analyse indépendante de la société de sécurité néerlandaise Sansec.
À lire aussi: Des attaquants ont poussé une porte dérobée via les propres serveurs de mise à jour d'AOMEI Backupper · Capcom : une intrusion expose 11,7 millions d'enregistrements CAPCOM ID et permet à un attaquant de changer 196 mots de passe.
La révélation dépasse le cas d'un seul fournisseur. Un identifiant de longue durée, présent dans le code source d'une plateforme marketing, a donné à un attaquant un accès en écriture à la couche périphérique qui se trouve devant environ 100 000 sites clients. C'est le risque par définition des scripts tiers intégrés : une compromission en amont est héritée par chaque site qui fait confiance au tag du fournisseur.
Ce que Brevo a confirmé
Brevo a indiqué qu'une clé API Cloudflare de longue durée, dotée de toutes les permissions du compte, avait été codée en dur dans le code source de l'application et a été obtenue par l'attaquant. Avec elle, l'attaquant pouvait créer des Workers, des routes et des enregistrements DNS Cloudflare sur les zones de Brevo sans déclencher d'alerte, écrit l'entreprise dans son post-mortem.
Le Worker malveillant réécrivait les réponses à leur passage dans Cloudflare, si bien que les serveurs d'origine et les fichiers de Brevo n'ont jamais été modifiés. Le Worker supprimait aussi des en-têtes de sécurité comme la Content-Security-Policy, précise l'entreprise, de sorte que les contrôles d'intégrité standards n'ont rien remarqué. L'enquête de Brevo indique que la clé a été détournée pour la première fois fin août 2026, mais n'a trouvé aucune injection malveillante avant le 14 septembre.
La chronologie de Brevo situe la fenêtre d'impact globale entre 15 h 01 et 20 h 30 UTC, soit 5 heures et 29 minutes. Le Worker a été routé vers l'ensemble de brevo.com à 15 h 01, puis mis à jour à 16 h 07 pour ajouter un chargeur à trois fichiers JavaScript intégrés et couvrir sibforms.com. Brevo a retiré le Worker et ses routes à 20 h 30, et indique avoir révoqué la clé et tous les identifiants créés avec elle, supprimé les noms d'hôte de l'attaquant, purgé les caches de périphérie et remplacé l'identifiant codé en dur par des jetons à portée étroite et à courte durée de vie.
Domaines et scripts touchés
Brevo cite comme surfaces touchées brevo.com, sendinblue.com, les sous-domaines login, account, my et onboarding de brevo.com, ainsi que sibforms.com. Les trois fichiers intégrés chez les clients étaient le script des formulaires Brevo, le widget de discussion Brevo Conversations et le chargeur du SDK Brevo.
Sansec, qui a été le premier à signaler la campagne, a documenté le code injecté et nommé directement deux fichiers : https://cdn.brevo.com/js/sdk-loader.js et https://conversations-widget.brevo.com/brevo-conversations.js. Dans chaque cas, le fichier falsifié gagnait une courte fonction qui créait un nouvel élément script et chargeait du malware depuis un nom d'hôte tournant cdn*.sendibt1.com. Sansec a noté que sendibt1.com appartient à Brevo et est exploité par elle, et qu'un certificat pour cdn.sendibt1.com a été créé le 25 août, ce qui montre selon elle que l'attaquant disposait d'un accès en écriture au DNS de Brevo.
Les deux sociétés décrivent des fenêtres horaires légèrement différentes. Sansec a observé le premier sdk-loader.js malveillant à 16 h 05 min 18 s UTC et la dernière activité malveillante depuis un domaine Brevo à 20 h 12 min 53 s UTC. Brevo décrit la phase d'injection comme ayant duré jusqu'à 20 h 30. Les deux s'accordent sur le fait que l'activité est terminée : Sansec indique que tous les hôtes malveillants ont cessé de résoudre le 15 septembre et que les fichiers d'origine sont propres, et Brevo affirme qu'une vérification indépendante a confirmé que toutes les pages et tous les scripts touchés étaient propres à 20 h 42 le 14 septembre.
Brevo souligne qu'app.brevo.com, son API, l'envoi d'e-mails et les données de comptes clients hébergées chez elle n'ont pas été touchés. Le contenu malveillant a été ajouté en transit, pas stocké à la source.
Ce que les visiteurs et les clients ont vu
BleepingComputer a rapporté que Brevo avait confirmé la campagne, et Sansec a indiqué que l'attaque avait servi du malware aux visiteurs du site de Brevo lui-même et à plus de 100 000 sites clients intégrant des composants Brevo. Le chiffre de 100 000 provient du scan par Sansec de données web publiques, pas de Brevo, et doit se lire comme une estimation de l'exposition plutôt qu'un décompte d'infections confirmées.
Le malware avait deux comportements. Quand un visiteur ordinaire chargeait une page touchée, une surcouche ClickFix plein écran s'affichait : une fausse invite Cloudflare « vérifiez que vous êtes humain » qui demandait à la personne d'appuyer sur Win+R, puis Ctrl+V, puis Entrée. Le rapport de Brevo indique qu'une commande avait déjà été placée dans le presse-papiers, si bien que suivre les étapes exécutait le code de l'attaquant et téléchargeait un malware sur la machine Windows du visiteur. La surcouche n'était affichée que de façon sélective, de sorte que de nombreux visiteurs, et les visites répétées, ne voyaient rien.
Quand le visiteur était connecté à WordPress en administrateur, Sansec a constaté que le même script tentait plutôt d'installer une extension depuis https://cdn10.sendibt1.com/p/wm.zip en utilisant la session de l'administrateur lui-même. Sansec n'a pas pu récupérer l'archive. BleepingComputer en a ensuite trouvé une copie sur VirusTotal et a rapporté qu'elle se fait passer pour une extension WordPress nommée « Web Media Optimizer » mais agit comme une porte dérobée persistante et un chargeur JavaScript, se cachant de la liste des extensions et se copiant dans le répertoire des extensions must-use. La recommandation de Sansec est de comparer le répertoire des extensions sur le disque avec l'écran d'administration, car une extension peut se cacher de cet écran.
ClickFix, expliqué
ClickFix est une technique d'ingénierie sociale plutôt qu'un exploit logiciel. La page imite une marque de confiance, généralement Cloudflare ou un fournisseur de captcha, et présente une étape de vérification qui oblige l'utilisateur à exécuter une commande localement. Comme c'est l'utilisateur qui accomplit l'action, le malware arrive par un chemin légitime que les blocages automatiques et les avertissements du navigateur ne sont pas conçus pour arrêter.
L'attaque intégrait aussi une véritable case à cocher Cloudflare dans l'appât, si bien qu'un visiteur ayant passé un vrai défi pouvait se voir présenter la fausse suite. Cela réduisait les soupçons au moment précis où l'utilisateur était le plus susceptible d'obtempérer.
Plusieurs propriétés du cas Brevo ont rendu ClickFix efficace. La fausse invite apparaissait sur le domaine du fournisseur lui-même ou sur celui d'un client, de sorte que la barre d'adresse semblait correcte. Le script malveillant s'exécutait en dernier dans la chaîne de chargement, si bien qu'un contrôle rapide des premières lignes du widget ne montrait rien d'anormal. Le kit refusait aussi de s'activer pour les robots d'exploration, les développeurs et les scanners automatiques, ce qui retardait la détection et réduisait la probabilité qu'un outil de sécurité voie la même page qu'un humain.
Pourquoi les scripts marketing intégrés sont un risque systémique
Les plateformes d'e-mail et de marketing occupent une position que peu d'autres fournisseurs occupent. Leur JavaScript s'exécute sur les sites de leurs clients, et leurs formulaires hébergés et pages de désabonnement reçoivent du trafic de chaque destinataire d'une campagne. Quand la couche périphérique d'une plateforme est compromise, le rayon d'impact est la base de clients de la plateforme, pas la plateforme seule.
Le rapport de Sansec explicite l'amplification : un visiteur ou un destinataire d'e-mail n'avait qu'à atterrir sur une page de désabonnement ou de formulaire hébergée par Brevo, ou à charger le traceur ou le widget de discussion d'un client. Aucun identifiant client volé n'était nécessaire pour atteindre un utilisateur final. C'est ce qui transforme une seule clé API volée en campagne contre des centaines de milliers de sites.
L'architecture de la compromission aggrave le problème opérationnel. Comme le code malveillant vivait dans un Worker Cloudflare et modifiait les réponses à la sortie, la surveillance de l'intégrité des fichiers à l'origine voyait un système de fichiers propre. Le post-mortem de Brevo note que le Worker supprimait l'en-tête Content-Security-Policy, l'un des contrôles qui auraient pu limiter ce qu'un script injecté était autorisé à faire. Une défense appliquée par la même couche que celle que contrôle l'attaquant n'est pas vraiment une défense.
L'incident SSO antérieur et l'hameçonnage Trezor
La compromission Cloudflare a suivi un incident distinct que Brevo a divulgué le 10 septembre 2026. Dans ce cas, selon Brevo, un attaquant a exploité la façon dont la plateforme gère l'authentification unique SAML pour atteindre 138 comptes, et l'accès n'était pas correctement limité à l'organisation où le SSO était activé. Toujours selon Brevo, l'attaquant a envoyé des messages d'hameçonnage à des adresses stockées sous six comptes compromis et a exfiltré des contacts de 43 comptes.
Une victime nommée est le fabricant de portefeuilles matériels Trezor, qui utilise Brevo pour ses newsletters. SecurityWeek a rapporté que Trezor a déclaré que les e-mails d'hameçonnage avaient atteint environ 347 000 adresses clients et qu'environ 2 500 utilisateurs avaient cliqué sur le lien avant que le site malveillant ne soit mis hors ligne environ 20 minutes après la détection. Trezor a averti que saisir une sauvegarde de portefeuille sur le site pouvait coûter leurs fonds aux clients. SecurityWeek a noté qu'on ignorait combien d'utilisateurs avaient perdu des fonds, et pour quel montant.
Cette distinction compte. Une large portée d'hameçonnage et un nombre plus faible de clics ne sont pas la même chose que des pertes de portefeuilles confirmées. Les chiffres confirmés sont 347 000 adresses ciblées et au moins 2 500 personnes ayant cliqué. Le nombre de portefeuilles compromis n'a pas été établi publiquement, et les articles ne devraient pas le présenter comme réglé. SecurityWeek a aussi rapporté que le fabricant de matériel crypto BitBox et l'outil fiscal CoinTracking semblaient avoir été touchés, sans que ces entreprises nomment Brevo comme source.
Brevo n'a pas répondu aux questions de BleepingComputer sur un éventuel lien entre l'incident SSO et la compromission Cloudflare. Les deux événements sont à quatre jours d'écart et impliquent tous deux un accès à l'infrastructure de Brevo, mais aucune preuve publique ne les relie.
Leçons pour les défenseurs
Le cas Brevo renforce un ensemble de contrôles qui s'appliquent à toute organisation disposant d'une présence en périphérie, dans le cloud ou en SaaS.
L'hygiène des identifiants vient en premier. La clé volée était de longue durée, à portée large et stockée dans le code source. La remédiation de Brevo est instructive : déplacer les secrets vers un coffre géré, les faire tourner automatiquement et émettre des jetons à portée étroite et à courte durée de vie. Brevo a indiqué adopter HashiCorp Vault comme coffre unique pour les clés et jetons Cloudflare, alerter sur chaque événement d'audit Cloudflare qui modifie des Workers, des routes, le DNS ou l'accès au compte, et verser les journaux Cloudflare dans sa surveillance de sécurité.
Inventoriez vos scripts tiers. Un site ne peut pas défendre un script qu'il ignore charger. Chaque balise intégrée est une décision de confiance, et la posture de sécurité du fournisseur devient une partie de la surface d'attaque du client.
Encadrez le JavaScript tiers là où la plateforme le permet. Le Subresource Integrity épingle un script à un hachage connu, de sorte qu'un fichier remplacé ne se charge pas, même s'il est difficile à appliquer aux scripts mis à jour fréquemment. Une Content-Security-Policy stricte limite les domaines autorisés à s'exécuter et bloque l'injection en ligne. Les deux augmentent le coût et raccourcissent la fenêtre face à un attaquant qui contrôle la périphérie.
Détectez à la périphérie, pas seulement à l'origine. Comme la compromission de Brevo laissait les fichiers d'origine intacts, les seuls hachages ne suffisaient pas. Surveiller les réponses rendues, guetter les changements d'en-têtes inattendus et scanner de l'extérieur les pages et scripts publics aurait plus de chances d'attraper une réécriture en transit.
Ce que les clients de Brevo doivent faire
Les consignes de Brevo sont directes. Toute personne ayant exécuté la commande collée doit considérer son ordinateur comme compromis, le déconnecter, lancer une analyse antivirus complète et changer les mots de passe utilisés dessus, en commençant par le mot de passe Brevo. Les administrateurs WordPress dont les sites chargent des scripts Brevo et qui ont visité ces sites en étant connectés le 14 septembre doivent chercher les extensions installées ou activées ce jour-là, retirer tout élément suspect et faire tourner les mots de passe administrateur. Les clients qui se sont connectés à Brevo via brevo.com ce jour-là sont invités à changer leur mot de passe et à revoir leurs clés API par précaution.
Brevo a aussi précisé que le widget Conversations, le SDK et les formulaires sont sûrs à utiliser car ils n'ont jamais été modifiés à la source, et que son application, son API, la livraison d'e-mails et les données de comptes n'ont pas été touchées.
Ce qu'il faut surveiller
Deux questions restent ouvertes. La première est de savoir si le vol de la clé Cloudflare est lié à l'incident SSO du 10 septembre, ce que Brevo n'a pas éclairci publiquement. La seconde est le total final des pertes de portefeuilles confirmées à la suite de l'hameçonnage Trezor, que Trezor et les chercheurs en sécurité ont jusqu'ici laissé en suspens.
Pour l'instant, l'enseignement le plus clair est structurel. Une plateforme marketing se trouve dans la chaîne de confiance d'un immense nombre de sites et de boîtes de réception, et un seul identifiant fuité à sa périphérie peut retourner cette confiance contre tous ceux qui en dépendent. Le correctif n'est pas un contrôle unique mais plusieurs : des secrets éphémères à portée limitée, une intégrité des scripts appliquée, une visibilité en périphérie et un inventaire à jour de chaque balise tierce chargée par un site.
Couverture : le logo Brevo. Image de Brevo via Wikimedia Commons (CC BY-SA 4.0).
Étiquettes
Questions fréquentes
- Qu'est-ce que ClickFix ?
- ClickFix est une technique d'ingénierie sociale dans laquelle une fausse page de vérification, souvent imitant Cloudflare, demande à un visiteur de coller et d'exécuter une commande. L'utilisateur exécute lui-même le code de l'attaquant, ce qui contourne de nombreux blocages automatiques et avertissements du navigateur.
- Combien de temps l'attaque de chaîne d'approvisionnement contre Brevo a-t-elle duré ?
- Brevo situe la fenêtre d'impact globale entre 15 h 01 et 20 h 30 UTC le 14 septembre 2026, soit environ cinq heures et demie. Sansec a observé le premier fichier malveillant à 16 h 05 min 18 s UTC et la dernière activité malveillante depuis un domaine Brevo à 20 h 12 min 53 s UTC.
- Quels domaines et scripts Brevo ont été touchés ?
- Brevo cite brevo.com, sendinblue.com, les sous-domaines login, account, my et onboarding de brevo.com, ainsi que sibforms.com, avec le script des formulaires Brevo, le widget Brevo Conversations et le chargeur du SDK Brevo que les clients intègrent à leurs propres sites.
- L'incident SSO de Brevo et l'attaque Cloudflare sont-ils liés ?
- Brevo ne l'a pas dit. L'entreprise n'a pas répondu aux questions de BleepingComputer sur un éventuel lien entre l'incident SSO du 10 septembre et la compromission Cloudflare du 14 septembre, et aucune preuve publique ne relie les deux.








