Offre Durée limitée : -10% sur tout le site* avec le code WELCOME10

Mettre à jour Pterodactyl 1.15.2 : corriger les failles PHP2Shell sur votre panel

Mis à jour le 23 octobre 2026 9 min de lecture 11 sections

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 root ou un utilisateur disposant de sudo ;
  • Composer 2.x installé (composer --version en 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érificationCommandeRésultat attendu
Version de PHPphp -v8.2.35+ ou 8.3.36+
Version du panelPied 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.enabledOff

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 :

FAQ

Pterodactyl 1.15.2 corrige-t-il lui-même les failles PHP2Shell ?

Pterodactyl 1.15.2 ne corrige pas le bug dans PHP lui-même. La mise à jour du panel désactive session.upload_progress dans l'image Docker officielle et met l'image à jour vers PHP 8.3.36. Si vous n'utilisez pas Docker, vous devez aussi mettre à jour PHP manuellement vers 8.2.35 ou 8.3.36 sur votre serveur.

Mes serveurs de jeu seront-ils coupés pendant la mise à jour ?

Non. Wings, le daemon qui fait tourner les conteneurs de serveurs de jeu (FiveM, Minecraft, Rust), est indépendant du panel web. Pendant la mise à jour, vos serveurs de jeu continuent de fonctionner. Seule l'interface d'administration du panel est temporairement indisponible (mode maintenance 503).

Quelle version de PHP utiliser avec Pterodactyl 1.x ?

Pterodactyl 1.x supporte PHP 8.2 et PHP 8.3. Les versions corrigées pour PHP2Shell sont PHP 8.2.35 et PHP 8.3.36. PHP 8.4 et supérieur ne sont pas encore officiellement supportés par le panel 1.x.

Comment savoir si mon panel est vulnérable ?

Connectez-vous en SSH et exécutez php -v. Si la version affichée est antérieure à 8.2.35 (branche 8.2) ou 8.3.36 (branche 8.3), votre installation PHP est vulnérable aux failles PHP2Shell. Vérifiez aussi la version du panel dans le pied de page de l'interface web ou dans le fichier config/app.php.

Faut-il aussi mettre à jour Wings ?

Non. Wings est écrit en Go et n'utilise pas PHP. Il n'est pas affecté par les failles PHP2Shell. Vous pouvez toutefois vérifier que Wings est à jour pour bénéficier d'autres correctifs de sécurité et de stabilité.

La mise à jour efface-t-elle mes eggs ou ma configuration ?

Non. Le fichier .env et la base de données ne sont pas écrasés par la mise à jour. Les eggs personnalisés restent en place. Cependant, les eggs par défaut (Minecraft, Source Engine) peuvent être mis à jour par la commande artisan migrate --seed. Sauvegardez votre base de données avant la mise à jour pour pouvoir restaurer en cas de problème.

Puis-je désactiver session.upload_progress sans mettre à jour PHP ?

Désactiver session.upload_progress.enabled bloque le vecteur d'attaque principal de CVE-2026-109619, mais ne corrige pas CVE-2026-109618 qui exploite un chemin de code différent. C'est une mesure temporaire utile, mais la mise à jour de PHP reste indispensable pour une correction complète des deux vulnérabilités.

Pterodactyl fonctionne-t-il avec MariaDB ?

Oui. Pterodactyl supporte MySQL 5.7.22+ et MariaDB 10.2+ comme moteurs de bases de données. La commande de sauvegarde mysqldump fonctionne avec les deux. Vérifiez la clé DB_CONNECTION dans le fichier de configuration .env pour identifier le moteur configuré sur votre panel.

Comment consulter les logs du panel après la mise à jour ?

Les logs applicatifs de Pterodactyl se trouvent dans /var/www/pterodactyl/storage/logs/laravel.log. Consultez-les depuis le terminal avec la commande tail -100 storage/logs/laravel.log. Les logs du serveur web (Nginx en reverse proxy ou Apache) sont dans /var/log/nginx/ ou /var/log/apache2/. Ces fichiers de log permettent de diagnostiquer les erreurs de configurations après une mise à jour.

Faut-il reconfigurer le DNS du nom de domaine après la mise à jour ?

Non. La mise à jour de Pterodactyl et de PHP ne modifie ni la configuration DNS ni le nom de domaine du panel. Si le panel n'est plus accessible via son URL, vérifiez que PHP-FPM est bien redémarré et que l'adresse IP du serveur n'a pas changé.