ClickFix : une clé d’API oubliée, et 100 000 sites piégés
Une clé d'API oubliée dans du code a suffi pour injecter un leurre ClickFix et une extension WordPress cachée sur des sites parfaitement bien tenus.

Le 14 septembre, pendant quelques heures, des milliers de sites parfaitement sains ont affiché à leurs visiteurs une fausse page de vérification Cloudflare, avec l’instruction devenue classique : copier une commande, ouvrir la boîte de dialogue Exécuter de Windows, coller, valider. Aucun de ces sites n’avait été piraté. Le code malveillant venait d’un prestataire que beaucoup ont installé sans y penser : Brevo, la plateforme d’emailing française anciennement connue sous le nom de Sendinblue.
Le CDN réécrit, les fichiers d’origine restent propres
Le point de départ est un grand classique : une clé d’API Cloudflare disposant de tous les droits sur le compte, écrite en dur dans du code. Avec elle, l’attaquant n’a eu besoin de toucher à aucun serveur. Il a déployé un Worker Cloudflare, un bout de code qui s’exécute en bordure de réseau, et lui a demandé de réécrire les réponses au vol. Les fichiers stockés chez Brevo n’ont jamais bougé d’un octet ; c’est la copie livrée au navigateur qui changeait. Le Worker retirait au même moment les en-têtes de sécurité, dont le Content-Security-Policy qui aurait pu bloquer ces scripts étrangers.
Chronologie publiée par Brevo, en heure UTC : 14 h 28, le Worker est testé sur des domaines à faible trafic. 15 h 01, il couvre tout brevo.com. 16 h 07, il atteint les scripts que les clients embarquent sur leurs propres pages, formulaires et widget de conversation compris, et le leurre entre en action. 19 h 33, l’incident est ouvert. 20 h 30, le Worker est supprimé et la clé révoquée.
ClickFix, ou l’art de faire taper la commande par la victime
La technique porte un nom, ClickFix, et elle contourne tout ce que l’on a construit depuis 20 ans pour empêcher un site d’exécuter du code sur une machine : elle ne l’exécute pas, elle demande à l’internaute de le faire lui-même. Une fausse vérification anti-robot, une commande déjà copiée dans le presse-papiers, et c’est l’utilisateur qui ouvre la porte avec ses propres droits.
Le second étage vise les gestionnaires de sites. Le script injecté regardait si le visiteur était un administrateur WordPress connecté. Si oui, il tentait d’installer et d’activer silencieusement une extension nommée Web Media Optimizer, récupérée sur un domaine contrôlé par l’attaquant. Une fois en place, celle-ci se cachait de la liste des extensions et contactait périodiquement un serveur de commande. Un site pouvait donc rester compromis bien après la fin de l’incident, sans que rien ne dépasse dans l’administration.
(Une clé d’API aux droits complets, écrite en dur dans du code livré au navigateur : le genre de détail qui donne envie d’aller relire ses propres dépôts avant de juger qui que ce soit ! 😅)
Ce qu’il faut regarder si vous gérez un site
Lister les extensions présentes sur le disque, en FTP ou en ligne de commande plutôt que depuis l’administration, puisque celle qui nous intéresse s’y masquait, et chercher tout dossier apparu autour du 14 septembre. Relire ensuite les comptes administrateurs et les tâches planifiées. Pour la suite, regarder si vos scripts tiers acceptent un attribut d’intégrité : Brevo dit vouloir en proposer un, ce qui aurait bloqué net la version réécrite.
Ce que les chiffres ne disent pas
Le chiffre de 100 000 sites touchés circule partout, mais il vient d’une seule source, la société de sécurité Sansec, qui vend précisément des scanners de code malveillant aux boutiques en ligne : aucune vérification indépendante n’a été publiée depuis. La durée d’exposition varie aussi d’un récit à l’autre, entre un peu plus de 4 heures pour les seuls scripts clients et près de 6 heures pour l’ensemble de l’opération, selon ce que l’on décide de compter. Quant à l’affirmation que l’application, l’API, l’infrastructure d’envoi et les données clients n’ont pas été touchées, elle vient du rapport d’incident de Brevo, la partie qui a le plus à perdre. Elle est plausible vu le mécanisme, elle n’est pas auditée.
En bref
- Une clé d’API Cloudflare aux droits complets, trouvée dans du code, a permis de réécrire les scripts de Brevo en bordure de réseau.
- Fenêtre d’exposition le 14 septembre, de 14 h 28 à 20 h 30 UTC, dont les scripts clients à partir de 16 h 07.
- Deux charges : un leurre ClickFix pour les visiteurs, l’extension cachée Web Media Optimizer pour les administrateurs WordPress connectés.
- À vérifier : les extensions présentes sur le disque, les comptes administrateurs, les tâches planifiées.
Sources : rapport d’incident de Brevo, recherche Sansec, IT-Connect, BleepingComputer.
Le Bien Heureux · Redaction Capibara · Dimanche 20 septembre 2026