Tutorial

Plex2Shell (CVE-2026-96652): corregir Plex en un VPS

Seguridad y monitorización10 min de lectura12 pasos

Plex2Shell es el nombre que recibe una cadena de cuatro fallos de Plex Media Server, el primero de los cuales, CVE-2026-96652, no exige autenticación. Según BleepingComputer, los detalles técnicos se publicaron en octubre de 2026 y la explotación llegó casi de inmediato, con el despliegue de un criptominero. Un VPS que expone el puerto 32400 a Internet es el objetivo típico. Esta guía da los comandos para leer su versión, cerrar la exposición directa y buscar después rastros de una intrusión anterior al parche.

Contenido· Qué contiene la cadena Plex2Shell1/14
  1. 01Qué contiene la cadena Plex2Shell
  2. 02Los cuatro fallos y la corrección de un vistazo
  3. 03«Mi Plex está al día»: por qué no basta
  4. 04Leer la versión instalada y actualizar, por entorno
  5. 05El puerto 32400: lo que debe seguir cerrado
  6. 06Cerrar la exposición directa en siete pasos
  7. 07Proxy inverso o VPN: cuál elegir
  8. 08Un ejemplo comprobable: nginx con autenticación
  9. 09Buscar un compromiso anterior al parche
  10. 10Siete comprobaciones, con su comando
  11. 11Si aparece un rastro: reconstruir en lugar de limpiar
  12. 12Solución de problemas: cinco situaciones encontradas
  13. 13Fuentes, y lo que ningún aviso del editor dice
  14. 14La documentación oficial

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

ReferenciaNaturalezaPapel en la cadena
CVE-2026-96652SSRF en `/player/timeline`, sin autenticaciónPunto de entrada: no hace falta ninguna cuenta
CVE-2026-96654Inyección de URL en `searchOne`Permite llamar a funciones de otros plugins
CVE-2026-96655SSRF autenticada en el punto de acceso del transcodificadorAmplía el alcance de las peticiones internas
CVE-2026-96656Escritura de archivos arbitrarios mediante los parámetros del transcodificadorÚltimo eslabón: ejecución de código posible
Versión corregidaPlex Media Server 1.43.3.10861 o posteriorToda versión anterior es vulnerable
Puntuación de 9,8Asignada a toda la cadena por el investigadorNo 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

EntornoLeer la versión instaladaActualizar
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
DockerAtributo `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

  1. Actualizar primero

    Aplique el comando de su entorno de la tabla anterior y luego sudo systemctl restart plexmediaserver. Compruebe después la versión con curl -s http://127.0.0.1:32400/identity: el atributo version debe mostrar 1.43.3.10861 o una versión más reciente.

  2. 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.

  3. 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.

  4. Cerrar el puerto en el cortafuegos

    sudo ufw allow OpenSSH
    sudo ufw deny 32400/tcp
    sudo ufw enable
    sudo ufw status numbered
    Permita SSH antes de activar ufw, o se quedará fuera.

  5. Con Docker, publicar en el bucle local

    En el archivo Compose, sustituya el puerto publicado por 127.0.0.1:32400:32400 y ejecute docker compose up -d --force-recreate. Una regla de ufw no basta aquí: Docker pasa por delante.

  6. 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.

  7. 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

  1. Instalar nginx y la herramienta de contraseñas

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

  2. Crear 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.

  3. Escribir el host virtual

    En /etc/nginx/conf.d/plex.conf, un bloque server con listen 443 ssl;, server_name plex.your-domain.com;, auth_basic "Plex"; y auth_basic_user_file /etc/nginx/.plex-htpasswd;. En location /, añada proxy_pass http://127.0.0.1:32400;, proxy_set_header Host $host;, proxy_http_version 1.1;, proxy_set_header Upgrade $http_upgrade; y proxy_set_header Connection "upgrade"; para los WebSockets.

  4. Obtener el certificado y recargar

    sudo certbot --nginx -d plex.your-domain.com
    sudo nginx -t && sudo systemctl reload nginx
    El DNS del subdominio debe apuntar ya al VPS antes del certificado.

  5. 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/timeline debe 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); un sh, un bash, un curl o un binario lanzado desde /tmp es 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 xmrig busca 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 plex y después sudo 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/timeline o errores de transcodificación sin reproducción en curso.
  • Persistencia — sudo crontab -l -u plex, sudo systemctl list-timers --all y sudo 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 pull descarga la imagen pero no sustituye el contenedor en marcha. Ejecute docker compose up -d --force-recreate.
  • El puerto 32400 sigue accesible pese a ufw deny — Docker escribe sus propias reglas y pasa por delante de ufw. Publique el puerto en 127.0.0.1:32400:32400 como 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/

Un VPS donde usted decide qué queda expuesto

Con un VPS ServOrbit.com dispone de root, una IPv4 dedicada y un cortafuegos propio: usted elige lo que sale a Internet y puede aislar el servidor multimedia. La administración del VPS existe como opción, para quien no quiera reforzarlo solo; no está incluida. Guía facilitada, sin asistencia directa.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva