Sophie Bergmann
Sophie Bergmann
Pentester web & auditrice CMS — WebGuard Agency
| · 12 min de lecture

Comment auditer et securiser son CMS headless contre les exploits ClickFix en 7 etapes

Audit securite CMS headless contre exploits ClickFix
Resumer cet article avec : ChatGPT Claude Perplexity

TL;DR

La campagne ClickFix exploitant CVE-2026-26980 dans Ghost CMS (700+ sites compromis en mai 2026) montre que les CMS headless sont devenus des cibles prioritaires. Ce guide vous donne les 7 etapes concretes pour auditer et securiser votre CMS headless — Ghost, Strapi, Directus ou autre — contre les injections de code malveillant et les techniques d'ingenierie sociale de type ClickFix. De la cartographie initiale a l'audit continu, chaque etape est accompagnee d'instructions techniques actionnables.

7 ETAPES POUR SECURISER VOTRE CMS HEADLESS 1 Cartographier les instances 2 Hardener l'API Admin 3 Deployer une CSP stricte 4 Monitorer les injections 5 Configurer un WAF CMS 6 Former les equipes 7 Audits continus PREVENTION Etapes 1-3 DETECTION Etapes 4-5 RESILIENCE Etapes 6-7

Pourquoi les CMS headless sont devenus des cibles prioritaires

La campagne ClickFix contre Ghost CMS en mai 2026, avec plus de 700 sites compromis via CVE-2026-26980, a mis en lumiere un angle mort de la securite web : les CMS headless. Ces plateformes — Ghost, Strapi, Directus, Payload, KeystoneJS — offrent une flexibilite architecturale remarquable mais exposent une surface d'API beaucoup plus large que les CMS traditionnels.

Le probleme est structurel. Un CMS headless separe le back-office (API) du front-end (site public). Cette separation est un avantage architectural, mais elle cree un vecteur d'attaque specifique : si l'API Admin est compromise, l'attaquant peut injecter du contenu malveillant dans toutes les pages servies par le front-end, sans jamais toucher un fichier sur le serveur. C'est exactement ce qui s'est passe avec la campagne Ghost CMS/ClickFix.

Ce guide vous donne les 7 etapes concretes pour auditer votre posture actuelle et mettre en place les defenses necessaires. Chaque etape est applicable a Ghost, Strapi, Directus, et la majorite des CMS headless du marche. Pour le contexte complet sur la campagne ClickFix, consultez notre guide sur la securisation de site web et notre guide sur les tests de securite web.

Etape 1 : Cartographier toutes vos instances CMS headless

1

Objectif : obtenir une vue exhaustive de toutes les instances CMS headless deployes dans votre organisation.

Avant de securiser quoi que ce soit, vous devez savoir ce qui existe. La premiere etape consiste a inventorier toutes les instances CMS headless en production, staging, et developpement. C'est souvent la ou les surprises commencent : des instances Ghost oubliees pour un projet client termine il y a 6 mois, un Strapi de test encore accessible sur Internet, un Directus installe par un developpeur sans passer par l'equipe infra.

Comment inventorier : scannez vos ranges IP internes et externes pour les ports typiques des CMS headless : 2368 (Ghost), 1337 (Strapi), 8055 (Directus). Utilisez nmap ou Shodan pour identifier les instances exposees. Verifiez egalement vos configurations Docker/Kubernetes pour les conteneurs CMS. Pour chaque instance, documentez : version, responsable, URL d'acces, dernier patch applique, et nombre de sites/tenants heberges.

Metrique de succes : couverture de 100% des instances identifiees, avec une fiche d'identite complete pour chacune. Aucune instance « orpheline » sans responsable designe.

Etape 2 : Hardener l'API Admin de chaque instance

2

Objectif : reduire la surface d'attaque de l'API Admin pour empecher les acces non autorises, meme en cas de CVE non patchee.

L'API Admin est le talon d'Achille des CMS headless. C'est par elle que les attaquants ont compromis les 700+ sites Ghost : en accedant a l'endpoint /ghost/api/admin/settings/ sans authentification valide. Le hardening de l'API Admin est la mesure de protection la plus impactante que vous puissiez mettre en place.

Mesures de hardening par CMS :

Ghost CMS

  • Restreindre l'acces a /ghost/ par IP dans la configuration Nginx/Apache (allow/deny)
  • Activer l'authentification 2FA pour tous les comptes administrateurs
  • Regenerer toutes les API keys apres la mise a jour vers 5.114.2+
  • Desactiver les integrations non utilisees (chaque integration = une cle API supplementaire)

Strapi

  • Configurer admin.auth.secret avec une valeur forte et unique (pas la valeur par defaut)
  • Restreindre CORS a vos domaines de confiance dans config/middlewares.js
  • Desactiver l'acces public a l'API Admin via reverse proxy
  • Activer le rate limiting sur les endpoints d'authentification

Directus

  • Configurer ACCESS_TOKEN_TTL a une valeur courte (15 min max)
  • Desactiver le role « Public » sur toutes les collections sensibles
  • Placer l'interface d'administration derriere un VPN ou un tunnel zero-trust

Regle universelle : l'interface d'administration d'un CMS headless ne devrait jamais etre accessible directement depuis Internet. Utilisez un reverse proxy avec restriction IP, un VPN, ou une solution zero-trust (Cloudflare Access, Tailscale, etc.) pour limiter l'acces aux seules personnes autorisees.

Besoin d'un audit de securite de votre CMS headless ?

Nos pentesters specialises CMS peuvent evaluer votre posture en moins de 48h : test d'intrusion API, verification des configurations, scan des vulnerabilites connues, et recommandations de hardening prioritaires.

Demander un diagnostic gratuit →

Etape 3 : Deployer une Content Security Policy (CSP) stricte

3

Objectif : empecher l'execution de scripts malveillants injectes, meme si l'attaquant parvient a modifier le contenu du CMS.

La Content Security Policy est votre dernier filet de securite. Meme si un attaquant parvient a injecter du JavaScript via l'API Admin (comme dans la campagne Ghost CMS), une CSP bien configuree empechera le navigateur du visiteur d'executer ce code. C'est la defense la plus efficace contre ClickFix cote client.

CSP minimale anti-ClickFix :

Content-Security-Policy:

default-src 'self';

script-src 'self' https://cdn.yoursite.com;

style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;

img-src 'self' data: https://images.unsplash.com;

font-src 'self' https://fonts.gstatic.com;

connect-src 'self';

frame-src 'none';

object-src 'none';

base-uri 'self';

Points critiques : n'utilisez jamais 'unsafe-inline' pour script-src (cela anéantit la protection contre les scripts injectes). Si votre theme ou vos analytics necessitent des scripts inline, utilisez des nonces (script-src 'nonce-...') ou des hashes specifiques. Deployez d'abord en mode Content-Security-Policy-Report-Only pendant 2 semaines pour identifier les violations legitimes avant de passer en mode enforce.

Etape 4 : Monitorer les modifications de contenu et les injections

4

Objectif : detecter en temps reel toute modification suspecte du contenu ou des parametres du CMS.

Les outils classiques de file integrity monitoring (OSSEC, Tripwire) ne detectent pas les injections via base de donnees, qui sont le vecteur principal de la campagne ClickFix. Il faut mettre en place un monitoring specifique au CMS, au niveau de la base de donnees et de l'API.

Trois niveaux de monitoring a implementer :

  • Niveau 1 — Base de donnees : configurez des triggers SQL ou des hooks sur les tables sensibles (settings, posts) pour alerter sur toute modification des champs codeinjection_head, codeinjection_foot, et les champs HTML contenant des balises <script>.
  • Niveau 2 — API Admin : loguez toutes les requetes PUT/POST/PATCH vers les endpoints d'administration. Alertez sur les modifications effectuees depuis des IP inconnues ou en dehors des heures de bureau.
  • Niveau 3 — DOM public : mettez en place un scan periodique (toutes les heures) du DOM de vos pages publiques pour detecter la presence de scripts inattendus. Un simple curl | grep -i "eval\|atob\|clipboard\|powershell" sur vos pages cles peut suffire comme premiere couche d'alerte.
ARCHITECTURE DE MONITORING CMS HEADLESS CMS Headless API Admin Ghost / Strapi / Directus Base de donnees Monitoring DB triggers (niveau 1) API access logs (niveau 2) DOM scanner (niveau 3) Alertes SIEM / Slack / PagerDuty Severite haute : injection Severite critique : ClickFix Regles de detection ClickFix pour CMS headless eval(atob(...)) dans code_injection navigator.clipboard.writeText Domaines CDN inconnus dans <script src> Overlay fullscreen avec fake UI Modification de settings hors heures de bureau ou depuis IP non whitelistee

Etape 5 : Configurer un WAF adapte aux CMS headless

5

Objectif : bloquer les tentatives d'exploitation avant qu'elles n'atteignent votre CMS.

Un Web Application Firewall (WAF) place devant votre CMS headless peut bloquer les tentatives d'exploitation de vulnerabilites connues et inconnues. Cependant, la configuration par defaut de la plupart des WAF n'est pas adaptee aux API REST des CMS headless. Il faut des regles specifiques.

Regles WAF essentielles :

  • Bloquer les requetes a l'API Admin depuis des IP non autorisees. Configurez une whitelist d'IP pour tous les endpoints /ghost/api/admin/, /admin/ (Strapi), /admin/ (Directus).
  • Rate limiting sur les endpoints d'authentification. Maximum 5 tentatives par minute par IP sur /ghost/api/admin/session/ et equivalents.
  • Inspection du corps des requetes PUT/PATCH. Alertez ou bloquez les requetes contenant des patterns ClickFix (eval(, atob(, powershell, clipboard) dans les champs de contenu.
  • Geo-blocking si applicable. Si vos administrateurs sont tous en France, bloquez l'acces a l'API Admin depuis les autres pays.

Solutions recommandees : Cloudflare WAF (gratuit pour les regles de base, Pro pour les regles custom), AWS WAF (si vous hebergez sur AWS), ou ModSecurity avec des regles OWASP CRS adaptees.

Etape 6 : Former les equipes editoriales et techniques

6

Objectif : donner aux equipes les connaissances pour detecter les signaux d'alerte et reagir correctement en cas d'incident.

Les equipes editoriales (qui publient du contenu via le CMS) et les equipes techniques (qui administrent l'infrastructure) doivent comprendre les risques specifiques aux CMS headless et aux attaques ClickFix. La formation couvre deux axes : la reconnaissance des signaux d'alerte et la reaction en cas d'incident.

Contenu de formation pour les equipes editoriales :

  • Reconnaitre un popup ClickFix : aucun site web legitime ne demande de copier-coller une commande dans un terminal
  • Signaler immediatement tout contenu suspect apparu dans le CMS sans action editoriale
  • Ne jamais partager les credentials CMS par email ou messagerie non chiffree
  • Verifier systematiquement l'URL du back-office avant de se connecter (phishing du panel admin)

Contenu de formation pour les equipes techniques :

  • Comprendre la chaine d'attaque CVE + injection + ClickFix et les points de detection a chaque etape
  • Savoir auditer manuellement la base de donnees du CMS pour des injections (requetes SQL de verification)
  • Procedure de patch d'urgence : tester en staging, deployer en production, verifier le fonctionnement
  • Procedure de response a incident CMS : isolation, nettoyage, notification, forensic

Etape 7 : Mettre en place un programme d'audit continu

7

Objectif : inscrire la securite CMS dans un cycle continu pour maintenir la posture dans le temps.

La securite d'un CMS headless n'est pas un projet ponctuel. Les vulnerabilites sont decouvertes en continu, les configurations derivent, et les nouvelles fonctionnalites introduisent de nouvelles surfaces d'attaque. Un programme d'audit regulier est indispensable pour maintenir votre posture de securite.

Cadence d'audit recommandee :

Hebdomadaire Scan automatise des versions CMS + verification des CVE publiees dans la semaine. Scan DOM des pages publiques pour detecter les injections.
Mensuel Revue des logs d'acces API Admin. Verification de la configuration CSP et WAF. Test de la procedure de patch d'urgence sur une instance de staging.
Trimestriel Audit de securite complet : pentest API Admin, revue de configuration, verification de la cartographie des instances, mise a jour de la formation des equipes.
Exceptionnel Sous 48h apres chaque CVE critique affectant votre CMS, apres chaque mise a jour majeure, ou apres tout changement d'architecture significatif.

Documentation : chaque audit doit produire un rapport documente avec les constatations, les actions correctives, et les metriques d'evolution. Pour les entreprises soumises a NIS2, cette documentation est obligatoire et doit etre conservee au minimum 3 ans. Notre guide sur comment securiser un site web et notre article sur comment tester la securite de son site web fournissent des cadres complementaires pour structurer vos audits.

Synthese : construire une defense en profondeur pour votre CMS headless

Les 7 etapes de ce guide forment une defense en profondeur : meme si une couche echoue, les autres compensent. La cartographie (etape 1) et le hardening API (etape 2) reduisent la surface d'attaque. La CSP (etape 3) neutralise les injections cote client. Le monitoring (etape 4) et le WAF (etape 5) detectent et bloquent les tentatives d'exploitation. La formation (etape 6) et l'audit continu (etape 7) assurent la perennite de la posture.

Commencez par les etapes 1 et 2 cette semaine : elles apportent 80% de la reduction de risque. Deployez la CSP (etape 3) dans les 2 semaines suivantes. Les etapes 4 a 7 construisent la resilience sur le moyen terme et doivent etre en place dans le mois.

Besoin d'aide pour implementer ces 7 etapes ?

Les consultants WebGuard Agency vous accompagnent de A a Z : audit initial de votre CMS headless, hardening de l'API Admin, deploiement CSP, configuration WAF, mise en place du monitoring, formation des equipes et programme d'audit continu. Premier diagnostic gratuit.

Planifier un diagnostic gratuit →

FAQ

Quels CMS headless sont concernes par les attaques ClickFix ?

Tous les CMS headless auto-heberges sont potentiellement concernes : Ghost, Strapi, Directus, Sanity (self-hosted), Payload CMS, KeystoneJS, et tout CMS exposant une API Admin accessible depuis Internet. La campagne de mai 2026 cible specifiquement Ghost CMS via CVE-2026-26980, mais la technique ClickFix peut etre deployee sur n'importe quel CMS une fois qu'un attaquant obtient la capacite d'injecter du JavaScript dans les pages publiques.

Comment tester si mon Content Security Policy protege efficacement contre ClickFix ?

Utilisez l'outil securityheaders.com pour evaluer votre CSP actuelle. Ensuite, testez manuellement : essayez d'injecter une balise script inline dans votre CMS et verifiez que le navigateur la bloque (visible dans la console DevTools sous "Content Security Policy violation"). Une CSP efficace contre ClickFix doit au minimum interdire les scripts inline (pas de 'unsafe-inline'), restreindre les sources de scripts a vos domaines de confiance, et bloquer eval() et les fonctions assimilees.

Quel est le cout moyen d'un audit de securite CMS headless ?

Pour un audit complet couvrant les 7 etapes de ce guide (cartographie, hardening API, CSP, monitoring, WAF, formation, programme d'audit), comptez entre 3 000 et 8 000 euros HT selon la complexite de votre infrastructure et le nombre d'instances CMS a auditer. Un audit initial de securite CMS basique (etapes 1 a 3) peut etre realise a partir de 1 500 euros HT. WebGuard Agency propose un premier diagnostic gratuit pour evaluer votre posture actuelle.

A quelle frequence faut-il auditer la securite de son CMS headless ?

Nous recommandons un audit complet trimestriel, avec un scan automatise hebdomadaire entre les audits manuels. En complement, un audit exceptionnel doit etre declenche sous 48h apres chaque CVE critique affectant votre CMS, apres chaque mise a jour majeure, ou apres tout changement d'architecture (nouveau plugin, nouveau theme, migration). Pour les entreprises NIS2, la frequence minimale est semestrielle avec documentation formelle.
27 mai 2026 · 🕑 12 min
Certifications & accreditations
PASSI (ANSSI)
ISO 27001
CEH Certified
OSCP
CISSP
SOC 2 Type II

Pret a renforcer votre cybersecurite ?

Rejoignez les entreprises qui font confiance a WebGuard Agency pour proteger leurs actifs numeriques. Premier audit offert.

Voir nos tarifs
200+
Audits realises
99,9%
Disponibilite SOC
< 4h
Temps de reponse

🛡️ Audit de sécurité gratuit — réponse en 24h, sans engagement

Obtenir mon audit gratuit →