Une clé Cloudflare volée a transformé les widgets Brevo en canal de diffusion pour ClickFix

Le 14 septembre, une clé Cloudflare volée a permis d'injecter ClickFix via les widgets Brevo pendant 5h30, exposant jusqu'à 100 000 sites.

Une clé Cloudflare volée a transformé les widgets Brevo en canal de diffusion pour ClickFix
Cloud Security

Image d’illustration générée par IA

Brevo a confirmé une compromission de la chaîne d’approvisionnement qui a permis à des attaquants d’injecter du contenu malveillant dans des pages hébergées par l’entreprise et dans des composants JavaScript intégrés à des sites web clients.

L’opération n’a pas nécessité de modifier les serveurs d’origine de Brevo. Les attaquants ont utilisé une clé d’API Cloudflare volée pour créer un Worker malveillant qui réécrivait les réponses HTTP lors de leur passage par le réseau périphérique de Cloudflare.

Les modifications non autorisées sont restées actives pendant environ cinq heures et demie, le 14 septembre 2026. La société de sécurité Sansec estime que jusqu’à 100 000 sites utilisant des composants Brevo concernés pourraient avoir été exposés, même si cette exposition ne signifie pas nécessairement que chaque site ou visiteur a été compromis.

Une manipulation au niveau du réseau périphérique a touché des pages et des scripts intégrés de Brevo

Brevo a identifié la principale période d’exposition entre 16 h 07 et 20 h 30 UTC le 14 septembre. Sansec a fait état d’un intervalle légèrement différent, de 16 h 05 à 20 h 13 UTC.

Les pages concernées comprenaient du contenu fourni via :

  • brevo.com
  • sendinblue.com
  • login/account/my/onboarding.brevo.com
  • sibforms.com

La compromission a également atteint des ressources Brevo chargées par des sites web tiers, notamment le script des formulaires Brevo, le widget Brevo Conversations et les scripts de chargement du SDK Brevo. Les versions précises des composants n’ont pas été communiquées.

L’attaque ne s’est donc pas limitée aux personnes consultant directement les propriétés web de Brevo. Tout site client chargeant l’un des composants manipulés pouvait devenir un point de diffusion indirect du code des attaquants.

Brevo a indiqué que plusieurs systèmes essentiels n’avaient pas été touchés, notamment app.brevo.com, son API, l’infrastructure d’envoi d’e-mails et les données des comptes clients. Rien n’indique que les attaquants aient modifié le contenu stocké sur les serveurs d’origine de Brevo.

Sansec a ensuite signalé que les sous-domaines malveillants avaient cessé de répondre le 15 septembre et que les fichiers Brevo concernés avaient été nettoyés.

Un identifiant Cloudflare intégré en dur a permis la compromission

Les attaquants ont obtenu une clé d’API Cloudflare à longue durée de validité, intégrée en dur dans le code source de l’application. Cet identifiant disposait de permissions complètes sur le compte, plutôt que d’un accès strictement limité.

Ces permissions permettaient de créer des Cloudflare Workers, des règles de routage et des enregistrements DNS sur les zones de Brevo. Selon Brevo, cette activité n’a déclenché aucune alerte.

Les attaquants ont ensuite déployé un Worker capable d’intercepter et de réécrire les réponses au niveau périphérique du CDN. Le Worker supprimait également des en-têtes HTTP de protection, notamment Content-Security-Policy, qui aurait autrement limité les scripts et les ressources qu’un navigateur peut exécuter.

Cette architecture explique pourquoi les contrôles classiques d’intégrité des fichiers n’ont pas détecté le contenu injecté. Les fichiers hébergés par Brevo sont restés inchangés, tandis que les visiteurs recevaient des réponses modifiées par l’infrastructure Cloudflare.

L’identifiant pourrait avoir été exposé dès la fin du mois d’août. Brevo a toutefois indiqué n’avoir trouvé aucune trace d’utilisation malveillante avant la période d’attaque du 14 septembre.

Après la détection, l’entreprise a supprimé le Worker malveillant et les routes associées, révoqué la clé volée et invalidé les identifiants créés à l’aide de celle-ci. Brevo a également retiré le secret intégré en dur dans son code source, supprimé les noms d’hôte contrôlés par les attaquants et purgé le contenu mis en cache sur le réseau périphérique.

De fausses vérifications Cloudflare ont incité les utilisateurs de Windows à suivre les instructions de ClickFix

Les visiteurs recevant le contenu modifié voyaient une fausse page de vérification Cloudflare. Le leurre affichait ensuite des instructions ClickFix visant à convaincre les utilisateurs de Windows d’exécuter eux-mêmes une commande.

Les attaques ClickFix reposent sur l’ingénierie sociale plutôt que sur une exploitation directe du navigateur. La victime est invitée à copier et à exécuter une commande pour terminer une vérification, corriger une erreur ou passer un contrôle de sécurité. Le respect de ces instructions peut entraîner l’installation d’un logiciel malveillant.

Les informations disponibles ne permettent pas d’identifier la commande exacte affichée pendant cette campagne ni la charge utile finale pour Windows. Il reste donc impossible de déterminer quelles familles de logiciels malveillants ont été distribuées aux utilisateurs ayant suivi les étapes.

Cette technique est également apparue dans d’autres campagnes de compromission de sites web. Une opération distincte a récemment utilisé de fausses invites de vérification sur des milliers de sites WordPress et PrestaShop compromis, illustrant l’ampleur que peuvent prendre ces leurres lorsque des ressources web de confiance sont altérées.

Les administrateurs WordPress ont été exposés à une porte dérobée persistante

Le code injecté effectuait des vérifications supplémentaires sur les sites WordPress exécutant un widget Brevo concerné. Il tentait notamment de déterminer si le visiteur actuel était authentifié en tant qu’administrateur.

Lorsque cette condition était remplie, le code tentait de télécharger une archive de plugin malveillant depuis :

https://cdn10.sendibt1[.]com/p/wm.zip

Sansec n’a pas pu récupérer l’archive pendant son enquête. Toutefois, une copie disponible sur VirusTotal a montré que le paquet se faisait passer pour un plugin appelé Web Media Optimizer.

Son objectif réel était d’assurer la persistance, de charger du JavaScript distant et de maintenir l’accès des attaquants. L’infrastructure associée utilisée pour distribuer le plugin ou les scripts correspondants comprenait notamment :

  • https://yelahaye[.]surf
  • https://boiseno[.]club

Après son installation, le plugin se dissimulait dans la liste standard des plugins WordPress. Il se copiait également dans le répertoire des plugins obligatoires, dans lequel WordPress charge automatiquement les plugins sans nécessiter leur activation habituelle.

La porte dérobée contactait périodiquement :

https://glegchner.com/ads.php

Au moment de l’analyse, ce point d’accès renvoyait une adresse encodée en Base64 qui se résolvait vers :

https://corralos[.]beer/a412dkoq.js

Le JavaScript provenant de cette adresse était injecté dans les pages visibles par les visiteurs afin d’afficher un autre leurre ClickFix. Le plugin conservait une copie de la dernière URL JavaScript valide, ce qui lui permettait de continuer à charger du code malveillant si le serveur de commande devenait temporairement indisponible.

Plus grave encore, le plugin contenait une clé d’authentification intégrée en dur. Les attaquants disposant de cette clé pouvaient générer une session d’administrateur WordPress valide sans connaître le mot de passe de l’administrateur. La simple rotation des mots de passe peut donc s’avérer insuffisante tant que le plugin reste installé.

Les propriétaires de sites doivent vérifier les plugins, la configuration périphérique et les identifiants

Les administrateurs WordPress qui ont consulté un site concerné alors qu’ils étaient connectés le 14 septembre doivent examiner tous les plugins installés ou activés ce jour-là. Cette vérification doit inclure le répertoire des plugins obligatoires, car le paquet malveillant peut ne pas apparaître dans la liste habituelle du tableau de bord.

Les équipes de défense doivent rechercher Web Media Optimizer, les domaines et URL indiqués, les fichiers PHP inattendus ainsi que les sessions d’administrateur inhabituelles. Tout plugin suspect doit être supprimé immédiatement, puis les mots de passe des administrateurs doivent être renouvelés et les sessions existantes doivent être révoquées.

Les organisations utilisant des composants Brevo doivent également :

  • Examiner les pages et les modèles à la recherche de formulaires Brevo, de composants Conversations et de scripts de chargement du SDK concernés.
  • Vérifier les activités de création, de modification et de routage des Cloudflare Workers.
  • Examiner les modifications DNS et les noms d’hôte nouvellement créés.
  • Auditer l’utilisation des clés d’API et les identifiants générés par des jetons privilégiés.
  • Révoquer les clés potentiellement exposées au lieu de s’appuyer uniquement sur les calendriers de rotation.
  • Supprimer les secrets intégrés au code source et aux artefacts de déploiement.
  • Purger les caches du CDN et de l’application après avoir confirmé la suppression des routes malveillantes.
  • Rechercher l’infrastructure identifiée dans les journaux réseau, proxy, DNS et web.
  • Enquêter sur les utilisateurs ayant rencontré des invites de vérification de type Cloudflare et exécuté ensuite des commandes.

Aucun bilan d’infections n’a été communiqué. L’estimation de Sansec, qui évoque jusqu’à 100 000 sites exposés, décrit l’empreinte potentielle de la diffusion, et non le nombre d’installations réussies du plugin ou de compromissions de systèmes Windows.

L’incident survient après une campagne distincte de détournement de comptes Brevo

La compromission de Cloudflare est survenue peu après un autre incident de sécurité impliquant Brevo. Le 10 septembre, l’entreprise a révélé une campagne liée au SSO au cours de laquelle des attaquants avaient détourné des comptes clients pour envoyer des messages d’hameçonnage.

Le fournisseur de portefeuilles de cryptomonnaies Trezor a indiqué le 11 septembre que la campagne avait atteint 347 000 adresses e-mail d’utilisateurs et entraîné la compromission d’au moins 2 500 comptes.

Brevo n’a pas confirmé de lien entre cette activité de détournement de comptes et la clé d’API Cloudflare volée. En l’absence d’éléments reliant les opérateurs, l’infrastructure ou les méthodes d’accès, les deux incidents doivent être traités comme des enquêtes distinctes.

La dernière compromission met néanmoins en évidence une frontière de confiance à fort impact : un seul identifiant CDN doté de privilèges excessifs a permis aux attaquants de manipuler du contenu sur des domaines contrôlés par Brevo et potentiellement sur des milliers de sites clients, tout en laissant les fichiers d’origine intacts.

À lire aussi

Sources

Cet article est une réécriture originale fondée sur les sources ci-dessous.

Sujets liésBrevoCloudflareClickFixcybersécuritésupply chainwidget compromis
Retour à l'accueil