Vulnérabilités
Metabase : anatomie d'une vulnérabilité critique et d'une chaîne d'exploitation complexe
Le 6 août 2026, Metabase a publié le bulletin GHSA-vwf4-m7j8-wcjf, devenu CVE-2026-72898 quatre jours plus tard. Une injection SQL sur un point d'entrée non authentifié permettait d'obtenir un accès administrateur complet sur une instance, sans aucun identifiant. Le score CVSS retenu est 10.0, et l'éditeur a confirmé une exploitation réelle.
L'intérêt de ce dossier n'est pas la vulnérabilité elle-même mais l'analyse post-incident que l'éditeur a publiée. Elle montre une chaîne de quatre comportements, dont aucun n'est une faute manifeste prise isolément : une validation de schéma permissive, un changement de passage de paramètres lors d'une refonte, une recherche d'utilisateur par identifiant, et une échappatoire vers du SQL brut dans la bibliothèque de requêtes.
C'est ce qui rend ce cas utile bien au-delà de Metabase. La plupart des vulnérabilités critiques d'aujourd'hui ne naissent pas d'une ligne de code manifestement dangereuse, mais de la rencontre de plusieurs décisions raisonnables prises à des moments différents, par des personnes différentes, dans des parties différentes du code.

Faits, analyse et incertitudes
Faits confirmés
- Metabase a publié le 6 août 2026 le bulletin GHSA-vwf4-m7j8-wcjf, intitulé « SQL injection using an unauthenticated endpoint leading to admin access », sévérité critique, CVSS 10.0 avec le vecteur CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H.
- L'identifiant CVE-2026-72898 a été attribué le 10 août 2026.
- Le bulletin décrit un attaquant non authentifié capable d'injecter du SQL arbitraire dans la base applicative de Metabase, ce qui lui confère un accès administrateur : modification de la configuration, récupération des identifiants stockés des bases connectées, lecture et export des données accessibles par ces connexions.
- Les versions affectées sont v58.0 à v58.23, v59.0 à v59.20, v60.0 à v60.16, v61.0 à v61.10, v62.0 à v62.8 et v63.0 à v63.3 ; les versions corrigées sont v58.24, v59.21, v60.17, v61.11, v62.9 et v63.5.
- L'éditeur confirme une exploitation réelle et propose, à défaut de mise à jour immédiate, de bloquer temporairement l'accès au point d'entrée de réinitialisation de mot de passe.
- Dans son analyse post-incident, Metabase indique avoir reçu le 3 août 2026 un signalement de création non autorisée de clés d'API, et avoir publié les versions corrigées le 6 août 2026.
- L'éditeur écrit que toutes les installations en version 0.58 et ultérieures étaient vulnérables, et situe l'origine de la régression dans une refonte du système d'authentification du 11 novembre 2025.
- L'analyse décrit quatre éléments en cause : des annotations de type qui n'imposaient pas de schéma fermé, un changement de passage de paramètres transmettant le corps complet de la requête au lieu des seules clés attendues, une recherche d'utilisateur par identifiant via la couche d'accès aux données, et une clé de SQL brut insérée telle quelle par la bibliothèque de construction de requêtes.
- L'attaque décrite consistait à insérer un enregistrement dans la table des sessions avec l'identifiant de l'administrateur, puis à créer des clés d'API.
- L'éditeur indique que les premières requêtes portaient un agent utilisateur inhabituel avant de basculer vers des chaînes de navigateur classiques.
- Metabase a engagé un durcissement sur plusieurs couches : restriction des paramètres transmis, fermeture par défaut de la validation de schéma sur tous les points d'entrée, interdiction d'émission de SQL brut dans les processeurs de requêtes, et travaux sur le cloisonnement et l'usurpation de connexion.
Notre analyse
- Aucune des quatre couches ne constitue à elle seule une faute évidente. C'est précisément ce qui rend ce cas instructif : la revue de code ne pouvait pas trouver la vulnérabilité en examinant un seul fichier.
- La régression a été introduite lors d'une refonte, c'est-à-dire au moment où le code est le plus susceptible de changer de comportement sans changer d'intention. Les refontes d'authentification méritent un traitement à part.
- Le fait que l'attaquant écrive directement dans la table des sessions plutôt que de tenter de récupérer un mot de passe montre une bonne compréhension du modèle de données de l'application, et non une exploitation opportuniste.
Ce qui reste incertain
- L'éditeur ne publie pas le nombre d'instances compromises. Aucune source institutionnelle ne le fait non plus.
- Metabase évoque une hypothèse sur l'usage d'un modèle de langage par l'attaquant, à partir de la forme d'un agent utilisateur. Nous la rapportons comme telle : c'est une observation, pas une démonstration.
- Aucune attribution à un groupe identifié n'est publiée par une source de référence.
L'essentiel de la vulnérabilité
| Élément | Contenu publié |
|---|---|
| Identifiant | CVE-2026-72898, bulletin GHSA-vwf4-m7j8-wcjf |
| Type | Injection SQL sur un point d'entrée non authentifié |
| CVSS v3.1 | 10.0 — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Conséquence | Accès administrateur complet à l'instance |
| Versions affectées | v58.0 à v58.23, v59.0 à v59.20, v60.0 à v60.16, v61.0 à v61.10, v62.0 à v62.8, v63.0 à v63.3 |
| Versions corrigées | v58.24, v59.21, v60.17, v61.11, v62.9, v63.5 |
| Origine de la régression | Refonte du système d'authentification du 11 novembre 2025 |
| Exploitation | Confirmée par l'éditeur |
| Signalement initial | 3 août 2026, création non autorisée de clés d'API |
| Publication du correctif | 6 août 2026 |
Chronologie publiée par l'éditeur
- 11 novembre 2025Refonte de l'authentification
Le changement qui introduit la régression est livré. Il ne crée pas de vulnérabilité à lui seul : il modifie la façon dont les paramètres d'une requête sont transmis à la couche suivante.
- 3 août 2026Premier signalement
Metabase reçoit un signalement de création non autorisée de clés d'API sur une instance. Le symptôme précède l'identification de la cause.
- 6 août 2026Correctif et bulletin
Les versions corrigées sont publiées et le bulletin GHSA-vwf4-m7j8-wcjf paraît, avec un score de 10.0 et la confirmation d'une exploitation réelle.
- 10 août 2026Attribution du CVE
L'identifiant CVE-2026-72898 est attribué, quatre jours après la publication du bulletin.
Neuf mois séparent l'introduction de la régression de sa découverte. C'est l'ordre de grandeur habituel pour ce type de défaut, et c'est ce qui justifie que l'investigation porte sur toute la période, pas sur les jours précédant le correctif.
Quatre décisions raisonnables qui produisent une faille critique
Une injection SQL permet à un attaquant de modifier la requête envoyée à la base de données, lorsque l'application incorpore des données non maîtrisées dans sa logique SQL au lieu de les transmettre comme de simples valeurs. La formulation habituelle s'arrête là. Le cas Metabase mérite d'aller plus loin, parce qu'il montre comment une telle incorporation devient possible dans une application qui, sur le papier, ne construit pas de SQL à la main.
- Une validation qui laisse passer l'inattendu
Les schémas de validation décrivaient les champs attendus, sans interdire les champs supplémentaires. Une requête contenant des clés non prévues était donc considérée comme valide. C'est un choix courant, souvent défendu au nom de la compatibilité ascendante.
- Un passage de paramètres élargi
Lors de la refonte, le code est passé de la transmission des seules clés attendues à la transmission du corps complet de la requête. Pris isolément, c'est une simplification. Combiné au point précédent, cela signifie que tout ce qu'un client envoie parvient à la couche suivante.
- Une recherche par identifiant
Le flux d'authentification acceptait une recherche d'utilisateur par identifiant, résolue par la couche d'accès aux données. Rien d'anormal : c'est le fonctionnement attendu d'une couche de correspondance entre objets et base de données.
- Une échappatoire vers le SQL brut
La bibliothèque de construction de requêtes accepte une clé spéciale signifiant « ce qui suit est du SQL à insérer tel quel ». Cette échappatoire existe dans la plupart des bibliothèques équivalentes, parce qu'aucune abstraction ne couvre tous les besoins.
Mis bout à bout, ces quatre éléments produisent le résultat suivant : une requête non authentifiée peut transporter une structure contenant une clé de SQL brut, qui traverse la validation, puis le passage de paramètres, puis la recherche d'utilisateur, pour être finalement insérée telle quelle dans une requête. Chacun des quatre composants fait exactement ce qu'on lui a demandé.
Ce que l'attaquant a réellement fait
La partie la plus révélatrice de l'analyse publiée par Metabase n'est pas la vulnérabilité mais son usage. L'attaquant n'a pas cherché à obtenir un mot de passe, ni à contourner l'écran de connexion. Il a écrit directement dans la table des sessions un enregistrement associé à l'identifiant de l'administrateur.
Du point de vue de l'application, il n'y a alors plus d'attaque en cours : il y a une session valide, associée à un compte légitime. Toutes les actions suivantes sont autorisées, journalisées comme normales et indiscernables d'une activité d'administration réelle. C'est ce qui explique que le symptôme ayant déclenché le signalement ait été la création de clés d'API, et non une alerte de sécurité.
L'éditeur indique que la signature observable se résume à deux requêtes successives : un appel au point d'entrée de réinitialisation de mot de passe renvoyant un code d'erreur, immédiatement suivi d'un appel à l'interface renvoyant l'utilisateur courant, cette fois avec un code de succès. Le premier semble avoir échoué, le second prouve qu'il a réussi.
Ce que ce cas dit du développement sécurisé
Un incident de ce type invite moins à désigner un responsable qu'à examiner les pratiques qui auraient pu l'interrompre. Quatre d'entre elles se dégagent directement de l'analyse de l'éditeur.
Fermer les schémas par défaut
Un schéma de validation fermé rejette toute clé non déclarée. C'est plus contraignant, cela casse parfois des clients existants, et c'est ce que Metabase a mis en place après coup sur l'ensemble de ses points d'entrée. Le principe est simple : une application ne doit pas transporter ce qu'elle ne sait pas nommer.
Traiter les échappatoires comme des zones sensibles
Les bibliothèques de construction de requêtes offrent presque toutes un moyen d'insérer du SQL brut. Cette possibilité est légitime, et c'est précisément pour cela qu'elle doit être repérable : interdite dans les couches exposées, recherchée automatiquement dans le code, et justifiée là où elle subsiste. Metabase a choisi d'en interdire l'émission dans ses processeurs de requêtes.
Revoir les refontes comme des changements de sécurité
Une refonte ne modifie pas la fonctionnalité, ce qui la rend difficile à tester : les tests existants continuent de passer, puisque le comportement attendu n'a pas changé. Or c'est exactement dans cet angle mort que la régression a été introduite. Une refonte touchant l'authentification, l'autorisation ou l'accès aux données mérite une relecture spécifique, centrée sur les données qui traversent plutôt que sur le résultat produit.
Modéliser les menaces au niveau du flux, pas du fichier
Aucune relecture de l'un des quatre composants pris isolément n'aurait révélé la vulnérabilité. La modélisation de menaces répond à cette limite en suivant le trajet d'une donnée depuis son entrée jusqu'à son usage, en se demandant à chaque étape ce que le composant suppose de ce qu'il reçoit. C'est un exercice de conception, pas un outil.
Validation côté serveur
Les contrôles effectués côté client informent l'utilisateur ; ils ne protègent rien. Seule la validation exécutée par le serveur est une mesure de sécurité.
Tests de sécurité automatisés
Analyse statique du code, recherche de motifs sensibles, tests d'API envoyant des champs inattendus. Ces tests trouvent rarement une chaîne complète, mais ils repèrent les briques qui la rendent possible.
Revue de code ciblée
Une relecture systématique de tout ne tient pas dans la durée. Une relecture renforcée des chemins d'authentification, d'autorisation et d'accès aux données tient, et couvre l'essentiel du risque.
Défense en profondeur
Si l'instance n'avait pas été joignable depuis Internet, la même vulnérabilité aurait eu une portée très différente. La réduction d'exposition ne corrige rien mais change tout.
Ce qu'il faut faire sur une instance Metabase
Mesures publiées par l'éditeur
- Mettre à jour vers v58.24, v59.21, v60.17, v61.11, v62.9 ou v63.5 selon la branche utilisée
- À défaut de mise à jour immédiate, bloquer temporairement l'accès au point d'entrée de réinitialisation de mot de passe
- Après la mise à jour, révoquer les sessions existantes
- Auditer les clés d'API et supprimer celles qui ne sont pas justifiées
- Vérifier la liste des comptes administrateurs
- Faire tourner les identifiants des bases de données connectées à l'instance
- Examiner les journaux des entrepôts de données connectés
- Relire l'historique d'activité de l'instance
Le point le plus coûteux est l'avant-dernier. Metabase détient les identifiants des bases auxquelles il se connecte : un accès administrateur sur l'instance donne donc un accès aux données métier, potentiellement sans laisser de trace du côté de Metabase, puisque les requêtes partent ensuite directement vers l'entrepôt. Les journaux à examiner ne sont pas seulement ceux de l'outil, mais ceux des bases.
Les métiers concernés par ces sujets :
- Sécurité applicative et développementSpécialiste en développement sécuriséIl réduit les vulnérabilités avant que les applications n’arrivent en production, en travaillant avec les développeurs plutôt qu’après eux.
- Conseil, services et rechercheDéveloppeur de solutions de sécuritéIl ne sécurise pas les applications de son entreprise : il développe les produits de sécurité que d’autres déploieront.
- Sécurité offensive / Red TeamPentester / Hacker éthiqueIl attaque un système avec l’autorisation de son propriétaire, afin d’en découvrir les faiblesses avant un véritable cybercriminel.
- Réponse à incident et gestion de crise / Blue TeamAnalyste réponse à incidentQuand une attaque est avérée, c’est lui qui prend la main : comprendre ce qui s’est passé, arrêter l’attaquant et remettre l’entreprise debout.
- Conception et architecture de la sécuritéArchitecte cybersécuritéIl conçoit les principes et les architectures qui permettent de construire un système d’information sécurisé, avant même que les projets ne démarrent.
Pour situer ces métiers dans leur univers :
Questions fréquentes
Quelles versions de Metabase sont concernées ?
Les versions v58.0 à v58.23, v59.0 à v59.20, v60.0 à v60.16, v61.0 à v61.10, v62.0 à v62.8 et v63.0 à v63.3. Les versions corrigées sont v58.24, v59.21, v60.17, v61.11, v62.9 et v63.5. L'éditeur indique que toutes les installations en version 0.58 et ultérieures étaient vulnérables.
La vulnérabilité a-t-elle été exploitée ?
Oui. L'éditeur confirme une exploitation réelle et indique avoir été alerté le 3 août 2026 par un signalement de création non autorisée de clés d'API, trois jours avant la publication du correctif.
Pourquoi un score de 10.0 pour une injection SQL ?
Parce que le point d'entrée concerné ne demande aucune authentification, qu'aucune interaction utilisateur n'est nécessaire et que la conséquence est un accès administrateur complet, avec la possibilité de lire les identifiants des bases connectées. Le vecteur publié traduit également un changement de portée, l'impact dépassant le composant vulnérable.
Mettre à jour suffit-il ?
Non. L'éditeur demande, après la mise à jour, de révoquer les sessions, d'auditer les clés d'API, de vérifier les comptes administrateurs, de faire tourner les identifiants des bases connectées et d'examiner les journaux de ces bases. Une session ou une clé créée avant la mise à jour reste valide après.
Comment détecter une exploitation a posteriori ?
L'éditeur décrit une signature en deux requêtes : un appel au point d'entrée de réinitialisation de mot de passe renvoyant un code d'erreur, immédiatement suivi d'un appel renvoyant l'utilisateur courant avec un code de succès. S'y ajoutent les indices fonctionnels : clés d'API inconnues, comptes administrateurs inattendus, requêtes inhabituelles côté entrepôts de données.
Qu'est-ce qu'une chaîne d'exploitation ?
L'enchaînement de plusieurs comportements qui ne constituent pas, isolément, des vulnérabilités, mais dont la combinaison produit un effet critique. Dans ce cas précis, quatre éléments se succèdent : une validation qui accepte des champs inattendus, un passage de paramètres élargi, une recherche d'utilisateur par identifiant et une échappatoire vers du SQL brut.
Sources
- MetabaseGHSA-vwf4-m7j8-wcjf — « SQL injection using an unauthenticated endpoint leading to admin access », CVE-2026-72898, sévérité critique, CVSS 10.0 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)Publié le 6 août 2026. Versions affectées : v58.0 à v58.23, v59.0 à v59.20, v60.0 à v60.16, v61.0 à v61.10, v62.0 à v62.8 et v63.0 à v63.3. Versions corrigées : v58.24, v59.21, v60.17, v61.11, v62.9 et v63.5.
- MetabaseAugust 2026 Security Vulnerability: What happened? — analyse post-incident publiée par l'éditeur : origine de la régression, enchaînement des quatre couches en cause, signature des requêtes d'attaque et mesures de durcissement engagées
- MetabaseMetabase security advisories — bulletins de sécurité publiés par le projet
- CERT-FRCERT-FR — centre gouvernemental de veille, d'alerte et de réponse aux attaques informatiques
