En bref

  • CVE-2026-105209 (CVSS 9.6 Critical) : défaut d'autorisation dans ZITADEL IAM permettant à un attaquant disposant de droits user-write dans une organisation de prendre le contrôle de comptes dans d'autres organisations de la même instance — divulguée le 4 octobre 2026.
  • Systèmes affectés : ZITADEL 3.x avant 3.4.15 et ZITADEL 4.x avant 4.17.1 — instances multi-tenants auto-hébergées ou SaaS.
  • Action urgente : mettre à jour vers ZITADEL 3.4.15 ou 4.17.1 et auditer les logs d'inscription passkey pour détecter des enregistrements inter-organisations suspects.

Les faits

ZITADEL, plateforme open-source d'identité et d'accès (IAM/CIAM) basée sur Go, largement déployée comme alternative self-hosted à Auth0 ou Okta, a divulgué le 4 octobre 2026 — hier — une vulnérabilité critique CVE-2026-105209. Notée CVSS 9.6 Critical et classée CWE-862 (Missing Authorization), cette faille permet une prise de compte cross-organisationnelle via un abus du mécanisme d'enregistrement des passkeys et des codes d'inscription sans mot de passe dans les instances multi-tenants.

Le vecteur CVSS 3.1 est CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N — attaque réseau, faible complexité, faibles privilèges requis, aucune interaction utilisateur, Scope Changed (changement de périmètre). L'impact sur la confidentialité et l'intégrité est maximal. Le seul pré-requis est de disposer de droits user-write dans une organisation quelconque de l'instance ZITADEL ciblée, un niveau accessible à de nombreux comptes d'administration délégués dans les déploiements d'entreprise multi-tenants.

Techniquement, la faille repose sur une vérification d'autorisation incomplète lors de l'émission de codes d'inscription passkey ou passwordless. Quand un administrateur émet un tel code pour un utilisateur, ZITADEL vérifie que l'émetteur appartient à l'organisation spécifiée dans l'en-tête HTTP x-zitadel-orgid, mais ne vérifie pas que l'utilisateur cible appartient à cette même organisation. Un attaquant peut donc émettre un code d'inscription pour un utilisateur d'une autre organisation — y compris un super-administrateur global — en manipulant l'identifiant de l'utilisateur cible, tout en présentant un x-zitadel-orgid correspondant à son organisation légitime.

Une fois le code d'inscription obtenu, l'attaquant enregistre son propre authenticateur (clé passkey FIDO2) comme authenticateur de la victime. Il peut alors s'authentifier en tant que la victime depuis n'importe quel terminal, contournant tous les facteurs d'authentification existants (mot de passe, OTP, push notification) puisque la passkey est un moyen d'authentification de premier niveau. La compromission est totale et persistante jusqu'à révocation manuelle de la passkey malveillante par un administrateur, ce qui suppose d'abord de détecter l'intrusion.

ZITADEL versions 3.x avant 3.4.15 et 4.x avant 4.17.1 sont affectées. La faille a été identifiée lors d'un audit de sécurité et signalée de manière responsable à l'équipe ZITADEL. Selon le changelog, le correctif consiste à valider que l'utilisateur cible du code d'inscription appartient à l'organisation de l'émetteur ou à l'organisation spécifiée dans x-zitadel-orgid. Aucun PoC public n'est disponible au moment de la divulgation, ce qui limite temporairement la vitesse d'exploitation par des acteurs peu sophistiqués.

ZITADEL publie simultanément plusieurs CVE connexes : CVE-2026-105207 couvrant un binding IdP non authentifié menant à une prise de compte ; CVE-2026-105208 (CVSS 7.7) sur des problèmes de gestion de session dans les versions 4.x ; CVE-2026-105211 (CVSS 8.1) sur une divulgation d'informations ; et CVE-2026-105215 sur un bypass d'authentification IdP menant à une usurpation de compte. La concomitance de ces divulgations suggère un audit de sécurité approfondi, potentiellement commandé par un client entreprise ou réalisé dans le cadre d'un pentest externe.

ZITADEL est utilisé par des centaines d'organisations comme socle IAM dans des environnements cloud-native Kubernetes et Docker. Ses fonctionnalités de multi-tenancy (organisations, projets, rôles) en font un choix populaire pour les éditeurs SaaS hébergeant plusieurs clients. C'est précisément cette architecture qui rend CVE-2026-105209 dangereuse : dans une instance ZITADEL hébergeant dix organisations distinctes, un attaquant compromettant un compte user-write dans l'organisation la moins privilégiée peut potentiellement s'emparer des comptes admin de toutes les autres. Cette propriété de "lateral movement inter-organisation" dépasse le périmètre d'une prise de compte classique.

L'exploitation de CVE-2026-105209 dans un contexte de cyberespionnage ou de concurrence déloyale présente une valeur stratégique élevée : les plateformes IAM multi-tenants sont utilisées pour contrôler l'accès à l'ensemble des ressources applicatives des clients hébergés. Compromettre ZITADEL revient à obtenir les clés de tous les coffres-forts numériques de l'instance. D'après le portail NVD, CVE-2026-105209 a été publiée le 4 octobre 2026 avec une analyse CWE-862 confirmée. Le CERT-FR n'a pas encore publié d'advisory spécifique mais la criticité et l'impact sur les IAM d'entreprise laissent présager une publication dans les avis CERTFR-2026-AVI de la semaine courante.

Impact et exposition

L'impact est sévère dans les déploiements ZITADEL multi-tenants hébergeant des clients distincts. Un attaquant ayant obtenu un accès user-write dans n'importe quelle organisation — même une organisation de test ou peu privilégiée — peut escalader vers des comptes administrateurs de l'ensemble de l'instance. Les plateformes SaaS auto-hébergées offrant des comptes en self-service (inscription libre, invitations par email) sont particulièrement vulnérables : un client malveillant ou un compte client compromis peut déclencher la chaîne d'exploitation.

Les conditions d'exploitation sont simples : accès réseau à l'API ZITADEL, un compte avec droits user-write dans une organisation quelconque, et la connaissance de l'identifiant (user ID) du compte cible. Ces identifiants sont parfois déductibles via des endpoints API moins protégés, des réponses d'erreur verbeuses ou des exports SCIM. Bien qu'aucun PoC ne soit public, les acteurs ciblés (espionnage, concurrence malveillante) sont capables de développer leur propre exploit à partir des détails de l'advisory. La fenêtre de protection avant PoC public est typiquement de 2 à 7 jours pour ce niveau de complexité technique.

Les applications qui utilisent ZITADEL comme IdP SSO pour contrôler l'accès à des ressources critiques (données clients, systèmes financiers, R&D) sont particulièrement exposées. La prise de contrôle d'un compte admin ZITADEL permet d'ajouter des applications OAuth2/OIDC arbitraires, de modifier les redirections de tokens et d'exfiltrer silencieusement les sessions actives. La détection est difficile : les actions passkey apparaissent légitimes dans les logs ZITADEL si elles ne sont pas corrélées avec les organisations source et cible.

Recommandations immédiates

  • Mettre à jour ZITADEL vers 3.4.15 (branche 3.x) ou 4.17.1 (branche 4.x) — advisory GHSA-ZITADEL-2026-105209
  • Auditer les logs d'émission de codes passkey/passwordless : identifier les codes émis pour des utilisateurs d'organisations différentes de l'émetteur (requête sur l'event store ZITADEL)
  • Auditer les passkeys enregistrées sur les 30 derniers jours sur les comptes privilégiés et révoquer celles présentant un enregistrement suspect
  • Restreindre l'accès à l'endpoint user-write aux seuls rôles administrateurs légitimes via les politiques d'organisation ZITADEL
  • Appliquer simultanément les correctifs pour CVE-2026-105207, CVE-2026-105208, CVE-2026-105211 et CVE-2026-105215 inclus dans les versions 3.4.15 et 4.17.1
  • Notifier les clients hébergés de l'instance si une compromission cross-tenant est suspectée, conformément aux obligations RGPD (notification CNIL sous 72h)

⚠️ Urgence

CVE-2026-105209 CVSS 9.6 publiée le 4 octobre 2026 — moins de 48h. Dans les instances ZITADEL multi-tenants, un accès limité dans une organisation suffit à compromettre les comptes admin de toutes les organisations. Mise à jour immédiate et audit des passkeys enregistrées requis, en particulier sur les comptes super-administrateurs.

Comment savoir si je suis vulnérable ?

Vérifiez votre version ZITADEL via l'interface d'administration (Paramètres > Instance > Version) ou consultez l'image Docker déployée : docker inspect zitadel | grep -i version ou docker images | grep zitadel. Si inférieure à 3.4.15 (branche 3.x) ou 4.17.1 (branche 4.x), vous êtes vulnérable. Vérifiez également si les fonctionnalités passkey/passwordless sont activées dans les politiques d'authentification de vos organisations ZITADEL.

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités.

Demander un audit