Pourquoi Pterodactyl 1.15.2 est une mise à jour critique
Le 21 octobre 2026, l'équipe Pterodactyl a publié la version 1.15.2 du panel, un correctif de sécurité direct en réponse aux deux failles PHP baptisées PHP2Shell : CVE-2026-109618 et CVE-2026-109619. Ces deux vulnérabilités, notées 9.2/10 (CVSS v4.0), permettent une exécution de code à distance (Remote Code Execution) sans authentification sur tout serveur qui fait tourner PHP. Pterodactyl est un panel écrit en PHP : chaque installation est concernée.
Les deux failles exploitent le mécanisme session.upload_progress de PHP. La première (CVE-2026-109618) provoque une corruption mémoire lors d'un dépassement de memory_limit pendant le traitement d'un upload. La seconde (CVE-2026-109619) réutilise un état interne devenu invalide après la libération de la mémoire d'une requête précédente. Dans les deux cas, une requête HTTP multipart/form-data suffit pour déclencher l'attaque. Des tentatives d'exploitation ont été détectées dès le 17 octobre 2026, quatre jours avant la publication des correctifs PHP.
Ce tutoriel détaille la procédure complète pour mettre à jour PHP, puis Pterodactyl, sur votre VPS Linux ou votre serveur dédié, que vous soyez admin d'un seul panel ou que vous gériez plusieurs serveurs chez votre hébergeur. Si vous n'avez pas encore installé Pterodactyl, consultez d'abord notre guide installer Pterodactyl pour gérer ses serveurs de jeu.
Prérequis
- Un serveur Unix/Linux sous Ubuntu 22.04 LTS / 24.04 LTS ou Debian 12 (distributions supportées par Pterodactyl) ;
- Pterodactyl Panel 1.x déjà installé (répertoire
/var/www/pterodactyl) ; - Un accès shell via un terminal SSH à l'adresse IP du serveur, avec les droits
rootou un utilisateur disposant desudo; - Composer 2.x installé (
composer --versionen ligne de commande pour vérifier) ; - PHP 8.2 ou 8.3 (Pterodactyl 1.x ne supporte pas PHP 8.4+) ;
- Le pare-feu du serveur configuré pour autoriser le trafic HTTP/HTTPS vers le panel.
Sauvegarder avant de commencer
Une mise à jour modifie les bases de données et les fichiers du panel. En cas de problème, une sauvegarde permet de revenir à l'état précédent en quelques minutes. Pour une procédure détaillée, consultez notre guide sauvegardes Pterodactyl : planifier et restaurer.
Sauvegarde rapide de la base de données
mysqldump -u root -p --single-transaction pterodactyl > ~/pterodactyl-backup-$(date +%F).sql
Remplacez pterodactyl par le nom de votre base si vous l'avez personnalisé (visible dans le fichier de configuration /var/www/pterodactyl/.env, clé DB_DATABASE). Si vous utilisez MariaDB au lieu de MySQL, la commande mysqldump fonctionne de la même manière : MariaDB maintient la compatibilité avec les outils MySQL.
Sauvegarde des fichiers
cp -a /var/www/pterodactyl/.env ~/pterodactyl-env-backup-$(date +%F)
Le fichier .env contient la clé de chiffrement de la base de données (APP_KEY). Sans cette clé, les données chiffrées (mots de passe SFTP, clés API) sont irrécupérables.
Mettre à jour PHP
La première étape consiste à installer la version corrigée de PHP. Les versions qui corrigent PHP2Shell sont : PHP 8.2.35 et PHP 8.3.36. L'équipe Pterodactyl recommande PHP 8.2 ou 8.3 pour le panel 1.x.
Identifier votre version actuelle
php -v
Si la sortie affiche une version antérieure à 8.2.35 (branche 8.2) ou 8.3.36 (branche 8.3), la mise à jour est nécessaire.
Mettre à jour PHP sur Ubuntu / Debian
sudo apt update && sudo apt install --only-upgrade 'php8.*' -y
Cette commande met à jour tous les packages PHP 8.x installés d'un coup : le moteur, les extensions et PHP-FPM. Sur les distributions Ubuntu, si vous utilisez le PPA ondrej/php, les packages corrigés sont disponibles depuis le 21 octobre 2026. Sur Debian 12, les correctifs sont publiés dans les dépôts officiels de la distribution.
Vérifier la version après mise à jour
php -v
php -r "echo PHP_VERSION . PHP_EOL;"
Confirmez que la version affichée est au minimum 8.2.35 ou 8.3.36.
Redémarrer PHP-FPM
Les workers PHP-FPM chargent la configuration au démarrage. Après une mise à jour du moteur PHP, un redémarrage est indispensable pour que les processus utilisent la nouvelle version :
sudo systemctl restart php8.2-fpm
Adaptez php8.2-fpm à votre branche (php8.3-fpm si vous êtes en PHP 8.3). Sur un serveur qui utilise Apache avec mod_php au lieu de PHP-FPM, redémarrez Apache : sudo systemctl restart apache2.
Mettre à jour Pterodactyl vers 1.15.2
La mise à jour du panel suit la procédure officielle documentée par Pterodactyl. L'archive est téléchargée depuis le dépôt Git du projet sur GitHub. Chaque commande est exécutée en ligne de commande dans le répertoire d'installation du panel.
Passer en mode maintenance
cd /var/www/pterodactyl
sudo php artisan down
Le mode maintenance affiche une page d'erreur 503 aux visiteurs. Vos serveurs de jeu continuent de tourner : c'est le panel web qui est indisponible, pas Wings.
Télécharger et extraire la version 1.15.2
curl -L https://github.com/pterodactyl/panel/releases/download/v1.15.2/panel.tar.gz | sudo tar -xzv
Cette commande télécharge l'archive officielle depuis l'URL du dépôt Git sur GitHub et l'extrait dans le répertoire courant. Les fichiers existants sont remplacés, mais le fichier de configuration .env n'est pas écrasé.
Restaurer les permissions
sudo chmod -R 755 storage/* bootstrap/cache
Installer les dépendances
sudo composer install --no-dev --optimize-autoloader
Si Composer demande de passer en root, ajoutez COMPOSER_ALLOW_SUPERUSER=1 devant la commande.
Appliquer les migrations de base de données
sudo php artisan migrate --seed --force
Vider les caches
sudo php artisan view:clear
sudo php artisan config:clear
Corriger le propriétaire des fichiers
Le serveur web configuré en reverse proxy (Nginx ou Apache) doit pouvoir lire et écrire dans le répertoire du panel :
# Nginx sur Ubuntu / Debian
sudo chown -R www-data:www-data /var/www/pterodactyl/*
# Nginx sur RHEL / Rocky Linux / AlmaLinux
sudo chown -R nginx:nginx /var/www/pterodactyl/*
# Apache sur RHEL / Rocky Linux / AlmaLinux
sudo chown -R apache:apache /var/www/pterodactyl/*
Redémarrer la file d'attente et quitter la maintenance
sudo php artisan queue:restart
sudo php artisan up
Le panel est de retour en ligne. Connectez-vous à l'interface d'administration pour vérifier que tout fonctionne.
Vérifier que la mise à jour est bien appliquée
Trois vérifications permettent de confirmer que le panel et PHP sont à jour :
| Vérification | Commande | Résultat attendu |
|---|---|---|
| Version de PHP | php -v | 8.2.35+ ou 8.3.36+ |
| Version du panel | Pied de page du panel ou cat /var/www/pterodactyl/config/app.php | grep "'version'" | 1.15.2 |
| Upload progress désactivé (Docker) | php -i | grep session.upload_progress.enabled | Off |
Si php -v affiche toujours l'ancienne version, vérifiez que le redémarrage de PHP-FPM a bien été effectué et qu'il n'y a pas un second binaire PHP dans le PATH (which php).
Résolution de problèmes courants
Après la mise à jour, certains problèmes peuvent survenir. Voici les diagnostics les plus fréquents, exécutables depuis votre terminal.
Le panel affiche une erreur 500
Consultez les logs applicatifs du panel pour identifier la cause. Le fichier de log principal est /var/www/pterodactyl/storage/logs/laravel.log :
sudo tail -50 /var/www/pterodactyl/storage/logs/laravel.log
Si le log mentionne Allowed memory size exhausted, la valeur de memory_limit dans la configuration PHP est trop basse pour les migrations. Sur un VPS avec au moins 2 Go de RAM, configurez 512M dans un fichier de configuration dédié :
# Créer /etc/php/8.2/fpm/conf.d/99-pterodactyl.ini
memory_limit = 512M
Redémarrez ensuite PHP-FPM pour appliquer cette configuration.
Le nom de domaine du panel n'est plus accessible
Vérifiez que l'enregistrement DNS de votre nom de domaine pointe toujours vers l'adresse IP du serveur. Un changement d'adresse IP (migration vers un autre hébergeur, redémarrage du VPS) nécessite la mise à jour de l'enregistrement DNS de type A. Vérifiez aussi que l'URL configurée dans .env (clé APP_URL) correspond bien à votre domain :
grep APP_URL /var/www/pterodactyl/.env
Connexion SFTP impossible vers les serveurs de jeu
Le service SFTP de Pterodactyl dépend de Wings, pas du panel web. Si les connexions SFTP échouent après la mise à jour, vérifiez que le daemon Wings est démarré et que le port SFTP configuré (par défaut 2022) est ouvert dans le pare-feu :
sudo systemctl status wings
sudo ufw status | grep 2022
Pterodactyl n'utilise pas de serveur FTP classique. Les transferts de fichiers passent par le protocole SFTP intégré à Wings.
Les scripts d'installation des eggs échouent
Les scripts d'installation des eggs (Minecraft, Rust, FiveM) sont exécutés dans des conteneurs Docker par Wings. Si un script d'installation échoue, consultez les logs de Wings depuis le terminal :
sudo journalctl -u wings --since "1 hour ago" --no-pager
Le problème vient généralement de l'image Docker utilisée par l'egg, pas de la mise à jour du panel.
Mesure supplémentaire : désactiver session.upload_progress
Le panel Pterodactyl n'utilise pas la fonctionnalité session.upload_progress de PHP. La désactiver supprime le vecteur d'attaque de CVE-2026-109619, même si une future régression réintroduisait le bug dans PHP. L'image Docker officielle de Pterodactyl 1.15.2 applique cette mesure par défaut.
Si vous n'utilisez pas Docker, ajoutez cette directive dans votre configuration PHP-FPM ou dans php.ini :
; /etc/php/8.2/fpm/conf.d/99-disable-upload-progress.ini
session.upload_progress.enabled = 0
Puis redémarrez PHP-FPM :
sudo systemctl restart php8.2-fpm
Vérifiez que la directive est prise en compte :
php -i | grep session.upload_progress.enabled
La sortie doit afficher Off. Cette mesure n'affecte pas le fonctionnement du panel ni de ses API.
Mise à jour avec Docker
Si vous utilisez l'image Docker officielle ghcr.io/pterodactyl/panel, la mise à jour se résume à tirer la nouvelle image :
docker pull ghcr.io/pterodactyl/panel:v1.15.2
docker compose down && docker compose up -d
L'image 1.15.2 embarque PHP 8.3.36 et désactive session.upload_progress dans PHP-FPM. Aucune action supplémentaire n'est nécessaire côté PHP. Les migrations de bases de données sont exécutées automatiquement au démarrage du conteneur. Docker utilise la virtualisation au niveau du noyau : le panel tourne dans un conteneur virtuel isolé du système hôte, ce qui simplifie les mises à jour et les retours arrière.
Pour automatiser ces mises à jour de sécurité à l'avenir, pensez à configurer les mises à jour automatiques de vos paquets système : automatiser les mises à jour de sécurité sur VPS Ubuntu.
Wings est-il concerné
Non. Wings, le daemon qui fait tourner les conteneurs de serveurs de jeu, est écrit en Go. Il n'utilise pas PHP et n'est pas affecté par les failles PHP2Shell. Seul le panel web (l'interface d'administration) nécessite une mise à jour. Vos serveurs FiveM, Minecraft ou Rust continuent de fonctionner normalement pendant la procédure, et les plugins ou mods installés sur vos serveurs de jeu ne sont pas concernés.
Aller plus loin : durcir la sécurité de votre serveur
La mise à jour de Pterodactyl et PHP corrige les failles connues, mais la sécurité d'un serveur repose sur plusieurs couches. Voici les guides complémentaires pour renforcer la protection de votre infrastructure :
- Sécuriser un VPS Ubuntu : SSH, UFW et Fail2ban : les trois mesures de base sur tout VPS ;
- Certbot et Let's Encrypt sur VPS Linux : un certificat TLS pour chiffrer l'accès au panel ;
- Nginx en reverse proxy sur VPS Linux : configurer Nginx comme proxy devant le panel Pterodactyl ;
- Ouvrir les ports d'un serveur de jeu Linux avec UFW : configurer le pare-feu pour vos serveurs de jeu et le panel ;
- Sauvegarder un VPS avec rsync : des sauvegardes hors site pour ne rien perdre en cas de compromission.
FiveM
Minecraft
Rust
RedM
Hytale