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érence | Nature | Rôle dans la chaîne |
|---|---|---|
| CVE-2026-96652 | SSRF sur `/player/timeline`, sans authentification | Point d'entrée : aucun compte n'est requis |
| CVE-2026-96654 | Injection d'URL dans `searchOne` | Permet d'appeler les fonctions d'autres plugins |
| CVE-2026-96655 | SSRF 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 transcodeur | Dernier maillon : exécution de code possible |
| Version corrigée | Plex Media Server 1.43.3.10861 ou ultérieure | Toute version antérieure est vulnérable |
| Score de 9,8 | Attribué à la chaîne entière par le chercheur | Pas 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
| Environnement | Lire la version installée | Mettre à 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 |
| Docker | Attribut `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
Mettre à jour d'abord
Appliquez la commande de votre environnement du tableau ci-dessus, puis
sudo systemctl restart plexmediaserver. Contrôlez ensuite la version aveccurl -s http://127.0.0.1:32400/identity: l'attributversiondoit afficher 1.43.3.10861 ou une version plus récente.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é.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.
Fermer le port au pare-feu
sudo ufw allow OpenSSHsudo ufw deny 32400/tcpsudo ufw enablesudo ufw status numbered
Autorisez SSH avant d'activerufw, sinon vous vous enfermez dehors.Sous Docker, publier sur la boucle locale
Dans le fichier Compose, remplacez le port publié par
127.0.0.1:32400:32400, puisdocker compose up -d --force-recreate. Une règleufwne suffit pas ici : Docker passe devant.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.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
Installer nginx et l'outil de mots de passe
Debian / Ubuntu :
sudo apt install nginx apache2-utils
RHEL / AlmaLinux :sudo dnf install nginx httpd-toolsCré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.Écrire le serveur virtuel
Dans
/etc/nginx/conf.d/plex.conf, un blocserveraveclisten 443 ssl;,server_name plex.votre-domaine.com;,auth_basic "Plex";etauth_basic_user_file /etc/nginx/.plex-htpasswd;. Danslocation /, ajoutezproxy_pass http://127.0.0.1:32400;,proxy_set_header Host $host;,proxy_http_version 1.1;,proxy_set_header Upgrade $http_upgrade;etproxy_set_header Connection "upgrade";pour les WebSockets.Obtenir le certificat et recharger
sudo certbot --nginx -d plex.votre-domaine.comsudo nginx -t && sudo systemctl reload nginx
Le DNS du sous-domaine doit déjà pointer vers le VPS avant le certificat.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/timelinedoit 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) ; unsh, unbash, uncurlou un binaire lancé depuis/tmpest 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 xmrigcherche 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 plexpuissudo 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/timelineou des erreurs de transcodage sans lecture en cours. - Persistance —
sudo crontab -l -u plex,sudo systemctl list-timers --alletsudo 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 pulltélécharge l'image mais ne remplace pas le conteneur en cours. Relancezdocker compose up -d --force-recreate. - Le port 32400 reste joignable malgré
ufw deny— Docker écrit ses propres règles et passe devantufw. Publiez le port sur127.0.0.1:32400:32400comme 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/