Tutoriel

Plex2Shell (CVE-2026-96652) : corriger Plex sur un VPS

Sécurité & Monitoring10 min de lecture12 étapes

Plex2Shell est le nom donné à une chaîne de quatre failles du serveur Plex Media Server, dont la première, CVE-2026-96652, ne demande aucune authentification. Selon BleepingComputer, les détails techniques ont été publiés en octobre 2026 et l'exploitation a suivi presque aussitôt, avec le déploiement d'un cryptomineur. Un VPS qui expose le port 32400 à Internet est la cible type. Ce guide donne les commandes pour lire votre version, fermer l'exposition directe, puis chercher les traces d'une intrusion antérieure au correctif.

Sommaire· Ce que contient la chaîne Plex2Shell1/14
  1. 01Ce que contient la chaîne Plex2Shell
  2. 02Les quatre failles et le correctif en un coup d'œil
  3. 03« Mon Plex est à jour » : pourquoi cela ne suffit pas
  4. 04Lire la version installée et mettre à jour, par environnement
  5. 05Le port 32400 : ce qui doit rester fermé
  6. 06Fermer l'exposition directe en sept étapes
  7. 07Reverse proxy ou VPN : lequel choisir
  8. 08Un exemple testable : nginx avec authentification
  9. 09Chercher une compromission antérieure au correctif
  10. 10Sept contrôles, avec la commande qui va avec
  11. 11Si une trace apparaît : reconstruire plutôt que nettoyer
  12. 12Dépannage : cinq situations rencontrées
  13. 13Sources, et ce qu'aucun avis éditeur ne dit
  14. 14La documentation officielle

Ce que contient la chaîne Plex2Shell

D'après BleepingComputer, qui relaie l'alerte de la CISA, la chaîne enchaîne quatre failles de Plex Media Server. La première, CVE-2026-96652, est une requête forgée côté serveur (SSRF) sur le point d'accès /player/timeline, joignable sans authentification : un inconnu peut faire émettre des requêtes par votre serveur. Les trois autres, CVE-2026-96654, CVE-2026-96655 et CVE-2026-96656, prolongent l'attaque jusqu'à une écriture de fichiers arbitraires dans les paramètres du transcodeur, qui peut mener à l'exécution de code. Le score critique de 9,8 est celui que donne le chercheur à l'ensemble de la chaîne, pas un score officiel attribué à chaque faille. Les détails sont publics depuis octobre 2026, l'exploitation est signalée dès le 17 octobre 2026, et la CISA a fixé au 23 octobre 2026 l'échéance de correction pour les agences fédérales américaines.

Les quatre failles et le correctif en un coup d'œil

Faites défiler le tableau

RéférenceNatureRôle dans la chaîne
CVE-2026-96652SSRF sur `/player/timeline`, sans authentificationPoint d'entrée : aucun compte n'est requis
CVE-2026-96654Injection d'URL dans `searchOne`Permet d'appeler les fonctions d'autres plugins
CVE-2026-96655SSRF authentifiée dans le point d'accès du transcodeurÉtend la portée des requêtes internes
CVE-2026-96656Écriture de fichiers arbitraires via les paramètres du transcodeurDernier maillon : exécution de code possible
Version corrigéePlex Media Server 1.43.3.10861 ou ultérieureToute version antérieure est vulnérable
Score de 9,8Attribué à la chaîne entière par le chercheurPas un score officiel pour chaque faille

« Mon Plex est à jour » : pourquoi cela ne suffit pas

Mettre à jour ferme les failles, pas la porte, et ne retire rien de ce qu'un intrus a déjà déposé. Trois cas se présentent. Le serveur a été corrigé après la publication des détails : s'il était exposé et vulnérable entre-temps, il a pu être compromis avant votre mise à jour. Le serveur n'a jamais été corrigé, parce que Plex sous Linux ne se met pas à jour tout seul et qu'un conteneur garde l'image avec laquelle il a démarré. Ou le serveur est à jour, mais le port 32400 reste ouvert à tous alors que seuls vos proches l'utilisent. Les trois étapes sont donc : vérifier la version, réduire l'exposition, chercher les traces.

Lire la version installée et mettre à jour, par environnement

Faites défiler le tableau

EnvironnementLire la version installéeMettre à jour
Debian / Ubuntu`dpkg -s plexmediaserver | grep Version``sudo apt update && sudo apt install --only-upgrade plexmediaserver`
RHEL / AlmaLinux`rpm -q plexmediaserver``sudo dnf upgrade plexmediaserver` si le dépôt Plex est configuré, sinon paquet .rpm de la page officielle de téléchargement
DockerAttribut `version` de `curl -s http://127.0.0.1:32400/identity` si le port est publié`docker pull plexinc/pms-docker` + `docker compose up -d --force-recreate`
Tous les cas`curl -s http://127.0.0.1:32400/identity` renvoie un court XML avec l'attribut `version`Redémarrer ensuite : `sudo systemctl restart plexmediaserver`

Le port 32400 : ce qui doit rester fermé

Plex écoute par défaut sur le port 32400. Sur un VPS, le pare-feu est le vôtre : sans règle, le port est joignable depuis Internet, et un conteneur Docker écrit ses propres règles qui contournent ufw. La commande ss -tlnp | grep 32400 montre si Plex écoute sur toutes les interfaces (0.0.0.0 ou *) ou seulement sur 127.0.0.1. Elle ne prouve pas que le port est joignable de l'extérieur, car le pare-feu peut le filtrer : le vrai test se joue depuis une autre machine. Pour une IPv4 dédiée, comme sur un VPS, c'est la première vérification à faire.

Fermer l'exposition directe en sept étapes

  1. Mettre à jour d'abord

    Appliquez la commande de votre environnement du tableau ci-dessus, puis sudo systemctl restart plexmediaserver. Contrôlez ensuite la version avec curl -s http://127.0.0.1:32400/identity : l'attribut version doit afficher 1.43.3.10861 ou une version plus récente.

  2. Mesurer l'exposition

    ss -tlnp | grep 32400
    Depuis une autre machine : nc -vz 203.0.113.10 32400 (remplacez l'adresse d'exemple par l'IPv4 de votre VPS). Une connexion réussie signifie que Plex est exposé.

  3. Couper l'accès à distance direct dans Plex

    Dans les réglages du serveur, désactivez l'accès à distance direct. Plex cesse ainsi de chercher à rendre le port joignable depuis Internet.

  4. Fermer le port au pare-feu

    sudo ufw allow OpenSSH
    sudo ufw deny 32400/tcp
    sudo ufw enable
    sudo ufw status numbered
    Autorisez SSH avant d'activer ufw, sinon vous vous enfermez dehors.

  5. Sous Docker, publier sur la boucle locale

    Dans le fichier Compose, remplacez le port publié par 127.0.0.1:32400:32400, puis docker compose up -d --force-recreate. Une règle ufw ne suffit pas ici : Docker passe devant.

  6. Revérifier de l'extérieur

    nc -vz 203.0.113.10 32400
    La connexion doit maintenant échouer ou expirer. Si elle réussit encore, le pare-feu n'est pas celui qui filtre, ou Docker publie toujours le port.

  7. Rebrancher l'accès légitime

    Les deux sections suivantes décrivent un reverse proxy authentifié pour le navigateur et un VPN pour les applications. Choisissez avant de rouvrir quoi que ce soit.

Reverse proxy ou VPN : lequel choisir

Les deux ferment le port 32400 au monde entier, mais ils ne servent pas les mêmes clients. Un reverse proxy avec authentification protège l'interface web de Plex dans un navigateur, avec TLS devant. Les applications Plex des téléviseurs et des mobiles, elles, ne savent pas répondre à une authentification HTTP Basic : placées derrière ce proxy, elles échouent. Pour elles, le VPN est la voie propre : après sudo apt install wireguard et la configuration des pairs, la règle sudo ufw allow in on wg0 to any port 32400 proto tcp n'ouvre Plex qu'à l'interface du tunnel. Retenez que le VPN couvre tous les clients, et le proxy seulement le navigateur.

Un exemple testable : nginx avec authentification

  1. Installer nginx et l'outil de mots de passe

    Debian / Ubuntu : sudo apt install nginx apache2-utils
    RHEL / AlmaLinux : sudo dnf install nginx httpd-tools

  2. Créer un utilisateur

    sudo htpasswd -c /etc/nginx/.plex-htpasswd alice
    La commande demande le mot de passe et écrit le fichier lu par nginx. Sans l'option -c, elle ajoute un utilisateur au fichier existant.

  3. Écrire le serveur virtuel

    Dans /etc/nginx/conf.d/plex.conf, un bloc server avec listen 443 ssl;, server_name plex.votre-domaine.com;, auth_basic "Plex"; et auth_basic_user_file /etc/nginx/.plex-htpasswd;. Dans location /, ajoutez proxy_pass http://127.0.0.1:32400;, proxy_set_header Host $host;, proxy_http_version 1.1;, proxy_set_header Upgrade $http_upgrade; et proxy_set_header Connection "upgrade"; pour les WebSockets.

  4. Obtenir le certificat et recharger

    sudo certbot --nginx -d plex.votre-domaine.com
    sudo nginx -t && sudo systemctl reload nginx
    Le DNS du sous-domaine doit déjà pointer vers le VPS avant le certificat.

  5. Tester les trois cas

    curl -sI https://plex.votre-domaine.com/ doit répondre 401.
    curl -s -o /dev/null -w '%{http_code}' https://plex.votre-domaine.com/player/timeline doit aussi répondre 401 sans identifiants.
    curl -sI -u alice https://plex.votre-domaine.com/ demande le mot de passe, puis répond 200 ou une redirection.

Chercher une compromission antérieure au correctif

BleepingComputer ne donne aucun indicateur précis, ni empreinte, ni adresse, ni domaine : nous ne pouvons donc pas vous fournir une liste de signatures à chercher. Il reste les comportements, et ils sont parlants. Un serveur multimédia ne lance pas de shell, ne télécharge rien en tâche de fond, ne consomme pas un cœur entier en continu et ne contacte pas des adresses inconnues. Examinez la période qui court depuis la version vulnérable, et au minimum depuis la publication des détails en octobre 2026. Une absence de trace ne prouve pas l'absence d'intrusion, parce qu'un mineur peut être renommé ; une trace, elle, vaut aveu.

Sept contrôles, avec la commande qui va avec

  • Processus enfants inattendus — ps -eo pid,ppid,user,lstart,args --forest | grep -B1 -A4 -i "plex media server". Les enfants normaux portent le nom de Plex (transcodeur, hôte de scripts) ; un sh, un bash, un curl ou un binaire lancé depuis /tmp est suspect.
  • Consommation processeur — ps aux --sort=-%cpu | head -5. Un processus étranger à Plex qui occupe le processeur en continu évoque un cryptomineur ; pgrep -a -i xmrig cherche le plus connu, sans exclure un nom d'emprunt.
  • Fichiers inconnus dans le dossier Codecs — sudo ls -lat "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Codecs". Plex y range ses codecs de transcodage : un nom que vous ne reconnaissez pas, ou une date sans rapport avec un transcodage, mérite examen. Sous Docker, le même chemin se trouve dans le volume monté sur /config.
  • Exécutables récents hors paquets — sudo find /tmp /var/tmp /dev/shm /var/lib/plexmediaserver -xdev -type f -perm /111 -mtime -60 2>/dev/null. Tout exécutable de ces dossiers que vous n'avez pas installé est à expliquer.
  • Connexions sortantes — sudo ss -tupn state established | grep -i plex puis sudo ss -tupn state established. Cherchez les connexions vers des adresses que vous ne reconnaissez pas, surtout si elles viennent d'un processus qui n'est pas Plex.
  • Journaux du service — sudo journalctl -u plexmediaserver --since "2026-10-01" | grep -iE "timeline|transcode|error". Cherchez des appels répétés à /player/timeline ou des erreurs de transcodage sans lecture en cours.
  • Persistance — sudo crontab -l -u plex, sudo systemctl list-timers --all et sudo find /etc/systemd/system /etc/cron.d -mtime -60. Une tâche planifiée ou un service récent que vous n'avez pas créé est le signe qu'on veut revenir.

Si une trace apparaît : reconstruire plutôt que nettoyer

Un cryptomineur trouvé prouve une intrusion, mais pas qu'elle se limitait au mineur. Isolez d'abord le serveur : sudo ufw default deny incoming, avec SSH autorisé depuis votre seule adresse. Exportez les journaux avant qu'ils ne tournent, par exemple avec sudo journalctl -u plexmediaserver > plex-journal.txt. Reconstruisez ensuite le VPS depuis une image saine, installez la version corrigée avant d'ouvrir quoi que ce soit, et ne restaurez que vos médias et la base de la bibliothèque après relecture. Changez enfin tout ce que le compte du service pouvait lire : clés SSH, mot de passe Plex, jetons et secrets d'environnement. Un serveur durci côté Plex reste exposé si le noyau ne suit pas : voyez notre article sur la faille noyau Fragnesia.

Dépannage : cinq situations rencontrées

  • « plexmediaserver is already the newest version » alors que la version est ancienne — le dépôt Plex n'est pas configuré sur la machine. Téléchargez le paquet depuis la page officielle de téléchargement de Plex, puis sudo apt install ./plexmediaserver_*.deb.
  • Le conteneur affiche toujours l'ancienne version après docker pull — docker pull télécharge l'image mais ne remplace pas le conteneur en cours. Relancez docker compose up -d --force-recreate.
  • Le port 32400 reste joignable malgré ufw deny — Docker écrit ses propres règles et passe devant ufw. Publiez le port sur 127.0.0.1:32400:32400 comme décrit plus haut.
  • Les applications Plex ne trouvent plus le serveur après la fermeture du port — elles cherchaient l'adresse publique. Passez par un VPN et ajoutez le serveur par l'adresse du tunnel.
  • nginx répond 401 aux applications, mais pas au navigateur — les applications ne gèrent pas l'authentification HTTP Basic. Réservez le proxy au navigateur et donnez le VPN aux applications.

Sources, et ce qu'aucun avis éditeur ne dit

Nous n'avons pas trouvé d'avis de sécurité de Plex qui liste ces CVE. Le seul élément éditeur retrouvé est l'annonce de la version 1.43.3.10861 sur le forum Plex, publiée le 4 août 2026 : elle ne mentionne ni faille ni CVE. Le numéro de version corrigée, le rattachement des quatre CVE et le score viennent de BleepingComputer, qui cite la CISA et le chercheur : à recouper avec l'éditeur dès qu'il publie. Nous n'indiquons pas de date d'ajout au catalogue KEV, faute de l'avoir confirmée sur le catalogue de la CISA. Et si vous préférez quitter Plex plutôt que le durcir, notre guide de migration vers Jellyfin traite ce sujet à part.

La documentation officielle

Article de BleepingComputer sur Plex2Shell : https://www.bleepingcomputer.com/news/security/cisa-hackers-chain-plex-flaws-in-plex2shell-attacks-to-breach-servers

Annonce de la version 1.43.3.10861 sur le forum Plex : https://forums.plex.tv/t/plex-media-server/30447/713

Catalogue des vulnérabilités exploitées de la CISA : https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Téléchargement de Plex Media Server : https://www.plex.tv/media-server-downloads/

Module auth_basic de nginx : https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

Docker et pare-feu : https://docs.docker.com/engine/network/packet-filtering-firewalls/

WireGuard, démarrage rapide : https://www.wireguard.com/quickstart/

Un VPS où vous décidez de ce qui est exposé

Avec un VPS ServOrbit.com, vous avez le root, une IPv4 dédiée et un pare-feu à vous : vous choisissez ce qui sort sur Internet et pouvez isoler le serveur multimédia. L'administration du VPS existe en option, pour qui ne veut pas durcir seul ; elle n'est pas incluse. Guide fourni, pas de prise en charge.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet