CVE-2026-52855 : quand un serveur Minecraft peut voler les secrets de tout le nœud Pterodactyl
Une faille critique (CVSS 9.9) dans Wings, le démon de Pterodactyl, permettait à un simple utilisateur d’un serveur de jeu de récupérer le jeton secret du nœud entier. Explications et correctifs.
Une faille critique (CVSS 9.9) dans Wings, le démon de Pterodactyl, permettait à un simple utilisateur d’un serveur de jeu de récupérer le jeton secret du nœud entier. Explications et correctifs.
CVSS 9.9 — critique
Pterodactyl est un panel open source très utilisé pour héberger des serveurs de jeu, Minecraft en tête. Il repose sur deux briques : le Panel (l'interface web, en PHP) et Wings (le démon en Go qui tourne sur chaque nœud et pilote les conteneurs Docker des serveurs). En juin 2026, une faille critique a été publiée dans Wings : CVE-2026-52855. Elle permet à un simple utilisateur d'un serveur de récupérer le jeton secret du nœud entier.
Le contexte : les eggs et leurs fichiers de configuration
Dans Pterodactyl, chaque type de serveur est décrit par un egg. Un egg peut indiquer à Wings de modifier des fichiers de configuration du serveur de jeu (par exemple server.properties pour Minecraft) en y injectant des valeurs. Ces valeurs passent par un petit moteur de templates qui remplace des placeholders du type {{server.build.default.port}} ou {{config.*}}.
La faille
Avant la version 1.12.3, Wings résolvait tout placeholder {{config.<chemin>}} contre l'intégralité de sa propre configuration, sans aucune restriction sur les chemins lisibles. Or cette configuration contient des secrets :
config.token: le jeton du démon, qui sert à l'authentification entre le Panel et Wings et à la signature des JWT ;config.token_id: l'identifiant de ce jeton ;config.docker.registries: les identifiants des registres de conteneurs.
Le point clé : certaines valeurs de variables d'egg sont modifiables par l'utilisateur. Selon l'advisory, le propriétaire d'un serveur, ou un sous-utilisateur disposant de la permission startup.update, peut placer un placeholder {{config.*}} dans une variable de démarrage. Le Panel transmet la valeur telle quelle, Wings la résout, puis écrit le résultat dans un fichier de configuration… que l'utilisateur peut lire depuis son gestionnaire de fichiers.
Pourquoi c'est critique
Le vecteur CVSS résume bien le problème :
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
- AV:N / AC:L : exploitable à distance, sans difficulté particulière ;
- PR:L : un compte avec peu de privilèges suffit (un simple client d'hébergeur, par exemple) ;
- S:C : changement de périmètre. On part d'un seul serveur de jeu et on atteint le nœud entier.
Avec le jeton du démon, un attaquant peut forger des jetons d'authentification valides pour tous les serveurs hébergés sur ce nœud. Pour un hébergeur de serveurs Minecraft, cela veut dire qu'un seul client malveillant peut compromettre les serveurs de tous les autres clients de la machine.
Se protéger
- Mettre à jour Wings en version 1.12.3 ou supérieure sur chaque nœud.
- Régénérer le jeton du démon de chaque nœud après la mise à jour : un jeton déjà volé reste valable tant qu'il n'est pas changé.
- En attendant la mise à jour, auditer les eggs : aucune variable modifiable par l'utilisateur ne doit être injectée dans un fichier de configuration, ou bien ces variables doivent être rendues non modifiables.
- Réduire les permissions des sous-utilisateurs au strict nécessaire, en particulier
startup.update.
Ce que j'en retiens
Je gère un serveur Minecraft avec Pterodactyl et je développe des outils autour du panel. Cette CVE rappelle deux principes de base en SISR :
- Ne jamais faire confiance à une entrée utilisateur, même lorsqu'elle transite par un composant « de confiance » comme le Panel. Ici, le Panel relaie la valeur et c'est Wings qui l'interprète.
- Moindre privilège : un moteur de templates n'a aucune raison d'avoir accès aux secrets du démon. Le correctif restreint justement les chemins de configuration résolvables.
Et un réflexe d'exploitation : suivre les advisories des logiciels qu'on héberge (onglet Security des dépôts GitHub) et appliquer les mises à jour rapidement.