Qué contiene la cadena Plex2Shell
Según BleepingComputer, que recoge la alerta de la CISA, la cadena encadena cuatro fallos de Plex Media Server. El primero, CVE-2026-96652, es una falsificación de petición del lado del servidor (SSRF) en el punto de acceso /player/timeline, accesible sin autenticación: un desconocido puede hacer que su servidor emita peticiones. Los otros tres, CVE-2026-96654, CVE-2026-96655 y CVE-2026-96656, prolongan el ataque hasta una escritura de archivos arbitrarios en los parámetros del transcodificador, que puede llevar a la ejecución de código. La puntuación crítica de 9,8 es la que da el investigador a toda la cadena, no una puntuación oficial asignada a cada fallo. Los detalles son públicos desde octubre de 2026, la explotación se señala desde el 17 de octubre de 2026 y la CISA fijó el 23 de octubre de 2026 como plazo de corrección para las agencias federales estadounidenses.
Los cuatro fallos y la corrección de un vistazo
Desplace la tabla
| Referencia | Naturaleza | Papel en la cadena |
|---|---|---|
| CVE-2026-96652 | SSRF en `/player/timeline`, sin autenticación | Punto de entrada: no hace falta ninguna cuenta |
| CVE-2026-96654 | Inyección de URL en `searchOne` | Permite llamar a funciones de otros plugins |
| CVE-2026-96655 | SSRF autenticada en el punto de acceso del transcodificador | Amplía el alcance de las peticiones internas |
| CVE-2026-96656 | Escritura de archivos arbitrarios mediante los parámetros del transcodificador | Último eslabón: ejecución de código posible |
| Versión corregida | Plex Media Server 1.43.3.10861 o posterior | Toda versión anterior es vulnerable |
| Puntuación de 9,8 | Asignada a toda la cadena por el investigador | No es una puntuación oficial para cada fallo |
«Mi Plex está al día»: por qué no basta
Actualizar cierra los fallos, no la puerta, y no retira nada de lo que un intruso ya haya dejado. Se dan tres casos. El servidor se corrigió después de publicarse los detalles: si estaba expuesto y vulnerable entretanto, pudo comprometerse antes de su actualización. El servidor nunca se corrigió, porque Plex en Linux no se actualiza solo y un contenedor conserva la imagen con la que arrancó. O el servidor está al día, pero el puerto 32400 sigue abierto a todos cuando solo lo usan sus allegados. Los pasos son, pues, tres: comprobar la versión, reducir la exposición, buscar rastros.
Leer la versión instalada y actualizar, por entorno
Desplace la tabla
| Entorno | Leer la versión instalada | Actualizar |
|---|---|---|
| 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 el repositorio de Plex está configurado; si no, el paquete .rpm de la página oficial de descargas |
| Docker | Atributo `version` de `curl -s http://127.0.0.1:32400/identity` si el puerto está publicado | `docker pull plexinc/pms-docker` + `docker compose up -d --force-recreate` |
| Todos los casos | `curl -s http://127.0.0.1:32400/identity` devuelve un XML breve con el atributo `version` | Reinicie después: `sudo systemctl restart plexmediaserver` |
El puerto 32400: lo que debe seguir cerrado
Plex escucha por defecto en el puerto 32400. En un VPS el cortafuegos es suyo: sin regla, el puerto es accesible desde Internet, y un contenedor Docker escribe sus propias reglas, que se saltan ufw. El comando ss -tlnp | grep 32400 muestra si Plex escucha en todas las interfaces (0.0.0.0 o *) o solo en 127.0.0.1. No prueba que el puerto sea accesible desde fuera, pues el cortafuegos puede filtrarlo: la prueba real se hace desde otra máquina. Con una IPv4 dedicada, como en un VPS, es la primera comprobación que conviene hacer.
Cerrar la exposición directa en siete pasos
Actualizar primero
Aplique el comando de su entorno de la tabla anterior y luego
sudo systemctl restart plexmediaserver. Compruebe después la versión concurl -s http://127.0.0.1:32400/identity: el atributoversiondebe mostrar 1.43.3.10861 o una versión más reciente.Medir la exposición
ss -tlnp | grep 32400
Desde otra máquina:nc -vz 203.0.113.10 32400(sustituya la dirección de ejemplo por la IPv4 de su VPS). Una conexión satisfactoria significa que Plex está expuesto.Cortar el acceso remoto directo en Plex
En los ajustes del servidor, desactive el acceso remoto directo. Plex deja así de intentar que el puerto sea accesible desde Internet.
Cerrar el puerto en el cortafuegos
sudo ufw allow OpenSSHsudo ufw deny 32400/tcpsudo ufw enablesudo ufw status numbered
Permita SSH antes de activarufw, o se quedará fuera.Con Docker, publicar en el bucle local
En el archivo Compose, sustituya el puerto publicado por
127.0.0.1:32400:32400y ejecutedocker compose up -d --force-recreate. Una regla deufwno basta aquí: Docker pasa por delante.Volver a comprobar desde fuera
nc -vz 203.0.113.10 32400
La conexión debe fallar o agotar el tiempo de espera. Si todavía se establece, el cortafuegos no es el que filtra, o Docker sigue publicando el puerto.Reconectar el acceso legítimo
Las dos secciones siguientes describen un proxy inverso autenticado para el navegador y una VPN para las aplicaciones. Elija antes de volver a abrir nada.
Proxy inverso o VPN: cuál elegir
Ambos cierran el puerto 32400 al mundo entero, pero no sirven a los mismos clientes. Un proxy inverso con autenticación protege la interfaz web de Plex en un navegador, con TLS por delante. Las aplicaciones de Plex de televisores y móviles no saben responder a una autenticación HTTP Basic: detrás de ese proxy, fallan. Para ellas, la VPN es la vía limpia: tras sudo apt install wireguard y la configuración de los pares, la regla sudo ufw allow in on wg0 to any port 32400 proto tcp abre Plex solo a la interfaz del túnel. Recuerde que la VPN cubre a todos los clientes, y el proxy solo al navegador.
Un ejemplo comprobable: nginx con autenticación
Instalar nginx y la herramienta de contraseñas
Debian / Ubuntu:
sudo apt install nginx apache2-utils
RHEL / AlmaLinux:sudo dnf install nginx httpd-toolsCrear un usuario
sudo htpasswd -c /etc/nginx/.plex-htpasswd alice
El comando pide la contraseña y escribe el archivo que lee nginx. Sin la opción-c, añade un usuario al archivo existente.Escribir el host virtual
En
/etc/nginx/conf.d/plex.conf, un bloqueserverconlisten 443 ssl;,server_name plex.your-domain.com;,auth_basic "Plex";yauth_basic_user_file /etc/nginx/.plex-htpasswd;. Enlocation /, añadaproxy_pass http://127.0.0.1:32400;,proxy_set_header Host $host;,proxy_http_version 1.1;,proxy_set_header Upgrade $http_upgrade;yproxy_set_header Connection "upgrade";para los WebSockets.Obtener el certificado y recargar
sudo certbot --nginx -d plex.your-domain.comsudo nginx -t && sudo systemctl reload nginx
El DNS del subdominio debe apuntar ya al VPS antes del certificado.Probar los tres casos
curl -sI https://plex.your-domain.com/debe responder 401.curl -s -o /dev/null -w '%{http_code}' https://plex.your-domain.com/player/timelinedebe responder también 401 sin credenciales.curl -sI -u alice https://plex.your-domain.com/pide la contraseña y luego responde 200 o una redirección.
Buscar un compromiso anterior al parche
BleepingComputer no da ningún indicador concreto, ni huella, ni dirección, ni dominio: no podemos, por tanto, darle una lista de firmas que buscar. Quedan los comportamientos, y hablan. Un servidor multimedia no lanza un intérprete de comandos, no descarga nada en segundo plano, no consume un núcleo entero de forma continua y no contacta con direcciones desconocidas. Examine el periodo que va desde la versión vulnerable y, como mínimo, desde la publicación de los detalles en octubre de 2026. La ausencia de rastros no prueba que no hubo intrusión, porque un minero puede renombrarse; un rastro, en cambio, vale como confesión.
Siete comprobaciones, con su comando
- Procesos hijos inesperados —
ps -eo pid,ppid,user,lstart,args --forest | grep -B1 -A4 -i "plex media server". Los hijos normales llevan nombres de Plex (transcodificador, host de scripts); unsh, unbash, uncurlo un binario lanzado desde/tmpes sospechoso. - Consumo de procesador —
ps aux --sort=-%cpu | head -5. Un proceso ajeno a Plex que ocupa el procesador de forma continua apunta a un criptominero;pgrep -a -i xmrigbusca el más conocido, sin descartar un nombre prestado. - Archivos desconocidos en la carpeta Codecs —
sudo ls -lat "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Codecs". Plex guarda ahí sus códecs de transcodificación: un nombre que no reconoce, o una fecha sin relación con una transcodificación, merece examen. Con Docker, la misma ruta está en el volumen montado en/config. - Ejecutables recientes fuera de paquetes —
sudo find /tmp /var/tmp /dev/shm /var/lib/plexmediaserver -xdev -type f -perm /111 -mtime -60 2>/dev/null. Todo ejecutable de estas carpetas que usted no haya instalado debe explicarse. - Conexiones salientes —
sudo ss -tupn state established | grep -i plexy despuéssudo ss -tupn state established. Busque conexiones hacia direcciones que no reconozca, sobre todo si proceden de un proceso que no es Plex. - Registros del servicio —
sudo journalctl -u plexmediaserver --since "2026-10-01" | grep -iE "timeline|transcode|error". Busque llamadas repetidas a/player/timelineo errores de transcodificación sin reproducción en curso. - Persistencia —
sudo crontab -l -u plex,sudo systemctl list-timers --allysudo find /etc/systemd/system /etc/cron.d -mtime -60. Una tarea programada o un servicio reciente que usted no creó indica que alguien quiere volver.
Si aparece un rastro: reconstruir en lugar de limpiar
Un criptominero hallado prueba una intrusión, pero no que se limitara al minero. Aísle primero el servidor: sudo ufw default deny incoming, con SSH permitido solo desde su dirección. Exporte los registros antes de que roten, por ejemplo con sudo journalctl -u plexmediaserver > plex-journal.txt. Reconstruya después el VPS desde una imagen limpia, instale la versión corregida antes de abrir nada y restaure solo sus medios y la base de la biblioteca tras revisarlos. Cambie por último todo lo que la cuenta del servicio podía leer: claves SSH, contraseña de Plex, tokens y secretos de entorno. Un servidor reforzado en el lado de Plex sigue expuesto si el kernel no sigue el ritmo: vea nuestro artículo sobre el fallo del kernel Fragnesia.
Solución de problemas: cinco situaciones encontradas
- «plexmediaserver is already the newest version» aunque la versión es antigua — el repositorio de Plex no está configurado en la máquina. Descargue el paquete desde la página oficial de descargas de Plex y ejecute
sudo apt install ./plexmediaserver_*.deb. - El contenedor sigue mostrando la versión antigua tras
docker pull—docker pulldescarga la imagen pero no sustituye el contenedor en marcha. Ejecutedocker compose up -d --force-recreate. - El puerto 32400 sigue accesible pese a
ufw deny— Docker escribe sus propias reglas y pasa por delante deufw. Publique el puerto en127.0.0.1:32400:32400como se describe arriba. - Las aplicaciones de Plex ya no encuentran el servidor tras cerrar el puerto — buscaban la dirección pública. Pase por una VPN y añada el servidor con la dirección del túnel.
- nginx responde 401 a las aplicaciones, pero no al navegador — las aplicaciones no gestionan la autenticación HTTP Basic. Reserve el proxy para el navegador y dé la VPN a las aplicaciones.
Fuentes, y lo que ningún aviso del editor dice
No hemos encontrado un aviso de seguridad de Plex que enumere estos CVE. El único elemento del editor que hallamos es el anuncio de la versión 1.43.3.10861 en el foro de Plex, publicado el 4 de agosto de 2026: no menciona ningún fallo ni CVE. El número de versión corregida, la asignación de los cuatro CVE y la puntuación proceden de BleepingComputer, que cita a la CISA y al investigador: conviene contrastarlos con el editor en cuanto publique. No damos fecha de inclusión en el catálogo KEV, al no haberla podido confirmar en el catálogo de la CISA. Y si prefiere dejar Plex en lugar de reforzarlo, nuestra guía de migración a Jellyfin trata ese tema aparte.
La documentación oficial
Artículo de BleepingComputer sobre Plex2Shell: https://www.bleepingcomputer.com/news/security/cisa-hackers-chain-plex-flaws-in-plex2shell-attacks-to-breach-servers
Anuncio de la versión 1.43.3.10861 en el foro de Plex: https://forums.plex.tv/t/plex-media-server/30447/713
Catálogo de vulnerabilidades explotadas de la CISA: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Descarga de Plex Media Server: https://www.plex.tv/media-server-downloads/
Módulo auth_basic de nginx: https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
Docker y cortafuegos: https://docs.docker.com/engine/network/packet-filtering-firewalls/
WireGuard, inicio rápido: https://www.wireguard.com/quickstart/