Tutorial

nginx CVE-2026-15176: auditar y actualizar a 1.30.6

Seguridad y monitorización12 min de lectura16 pasos

El 14 de octubre de 2026, nginx publicó las versiones 1.30.6 (stable) y 1.31.7 (mainline), que corrigen cinco vulnerabilidades, entre ellas CVE-2026-15176. Cada una solo afecta a ciertas configuraciones: alias combinado con rewrite, capturas de regex, HTTP/3, rotación de claves de tickets TLS, SSI con AIO. En un parque de servidores de clientes, la verdadera pregunta no es «¿están mis servidores al día?», sino «¿qué máquinas están expuestas y en qué orden las trato?». Esta guía le da los comandos para responderla en menos de una hora y para corregir cada entorno limitando el corte a unos segundos.

Contenido· Qué corrigen nginx 1.30.6 y 1.31.71/12
  1. 01Qué corrigen nginx 1.30.6 y 1.31.7
  2. 02Los cinco fallos y lo que le expone
  3. 03Versiones afectadas y versiones corregidas
  4. 04Paquete de distribución o Docker: el número no basta
  5. 05Inventariar la exposición de un servidor en diez minutos
  6. 06En qué orden tratar un parque de servidores
  7. 07Actualizar entorno por entorno
  8. 08Imposible parchear hoy: las mitigaciones publicadas por F5
  9. 09Detección: indicios, no pruebas
  10. 10Solución de problemas: errores tras la actualización
  11. 11Cinco fallos en veinte servidores: la carga de una agencia
  12. 12La documentación oficial

Qué corrigen nginx 1.30.6 y 1.31.7

Ambas versiones salieron el mismo día, el 14 de octubre de 2026, en la página de noticias de nginx.org. Corrigen cinco fallos del proceso worker: tres corrupciones de memoria, una inyección de datos en el cuerpo de las peticiones HTTP/3 y una falsificación de sesión TLS. Una versión mainline 1.31.8 salió el 21 de octubre de 2026; su anuncio no menciona ninguna vulnerabilidad, pero sucede a la 1.31.7 y, por tanto, contiene sus correcciones.

Sobre la gravedad conviven dos lecturas, y hay que citarlas tal cual. La página de avisos de seguridad de nginx.org clasifica los cinco fallos con severidad «medium». Las fichas CVE publicadas por F5, el editor de nginx, asignan una puntuación CVSS 3.1 de 8,1 a tres de ellos. Precisan el escenario: el worker se cae y se reinicia, y sigue siendo posible una ejecución de código si ASLR está desactivado o se elude. Todos exigen una configuración concreta para ser explotables. Eso es lo que hace rentable el inventario: en un parque, parte de los servidores simplemente no está afectada.

Los cinco fallos y lo que le expone

  • CVE-2026-15176, alias y rewrite — desbordamiento de heap en el worker cuando una location combina alias, rewrite y una directiva set o return que lee $request_filename, o cuando $request_filename aparece en un log_format. Rango vulnerable: de 0.1.29 a 1.31.6.
  • CVE-2026-93479, cadenas con variables — desbordamiento al calcular la raíz de documentos o al registrar, típicamente un map con regex cuyas capturas $1, $2 lee root o un log_format antes de la variable de salida. Rango vulnerable: 1.30.0 a 1.30.5 y 1.31.2 a 1.31.6.
  • CVE-2026-95101, cuerpo de petición HTTP/3 — parte de una trama desconocida puede leerse como cuerpo de la petición: elusión de client_max_body_size o inyección en la petición reenviada, con proxy_request_buffering on, el valor por defecto. Rango vulnerable: de 1.25.0 a 1.31.6.
  • CVE-2026-97629, tickets de sesión TLS — con ssl_session_cache shared:… y sin ssl_session_ticket_key, nginx rota sus claves por sí mismo; una de ellas quedaba sin inicializar, lo que permite falsificar una sesión y, según F5, eludir la verificación de un certificado de cliente. Rango vulnerable: de 1.23.2 a 1.31.6.
  • CVE-2026-97205, SSI con AIO — use-after-free cuando aio está activo y una página SSI contiene comandos include virtual. Rango vulnerable: de 0.8.11 a 1.31.6.
  • Severidad publicada — «medium» para los cinco en nginx.org. Según las fichas CVE de F5, la puntuación CVSS 3.1 es 8,1 para CVE-2026-15176, CVE-2026-93479 y CVE-2026-97205, 6,5 para CVE-2026-97629 y 5,3 para CVE-2026-95101.

Versiones afectadas y versiones corregidas

Desplace la tabla

Fallo o paqueteVersiones vulnerablesCorregido en
CVE-2026-15176 — alias y rewrite0.1.29 a 1.31.61.30.6 y 1.31.7
CVE-2026-93479 — cadenas con variables1.30.0 a 1.30.5, 1.31.2 a 1.31.61.30.6 y 1.31.7
CVE-2026-95101 — HTTP/31.25.0 a 1.31.61.30.6 y 1.31.7
CVE-2026-97629 — tickets TLS1.23.2 a 1.31.61.30.6 y 1.31.7
CVE-2026-97205 — SSI con AIO0.8.11 a 1.31.61.30.6 y 1.31.7
Paquete Debian 13 (trixie)Paquetes anteriores a `1.26.3-3+deb13u10``1.26.3-3+deb13u10` (DSA-6575-1)
Paquete Debian 12 (bookworm)Marcado vulnerable a 22 de octubre de 2026Aún no publicado
Paquetes Ubuntu«Needs evaluation» a 22 de octubre de 2026Aún no publicado

Paquete de distribución o Docker: el número no basta

Es la objeción más frecuente en un parque heterogéneo: nginx -v muestra 1.26.3 o 1.22.1, muy por debajo de 1.30.6, y sin embargo la máquina puede estar corregida. Las distribuciones retroportan las correcciones de seguridad a su propia rama sin cambiar el número upstream: solo cambia el sufijo del paquete. Debian lo hizo para trixie con el aviso DSA-6575-1, que cubre los cinco CVE. En cambio, a 22 de octubre de 2026, el seguimiento de seguridad de Debian aún marcaba bookworm como vulnerable, y Ubuntu mostraba «Needs evaluation» para todas sus versiones seguidas.

La única comprobación fiable es, por tanto, el changelog del paquete instalado: zgrep -l CVE-2026-15176 /usr/share/doc/nginx*/changelog.Debian.gz en Debian o Ubuntu, rpm -q --changelog nginx | grep CVE-2026-15176 en RHEL, AlmaLinux o Rocky. Una línea encontrada significa que la corrección está retroportada; nada en absoluto significa que todavía no lo está. Para Docker, lo que cuenta es la etiqueta: las imágenes oficiales nginx:1.30.6 y nginx:1.31.7 están disponibles en Docker Hub, y una imagen fijada en una etiqueta anterior sigue siendo vulnerable mientras no se sustituya.

Inventariar la exposición de un servidor en diez minutos

  1. Anotar la versión y la procedencia

    nginx -v da la versión del binario. La procedencia del paquete decide el procedimiento de actualización:
    apt-cache policy nginx en Debian o Ubuntu (repositorio nginx.org o distribución)
    rpm -qi nginx | grep -E 'Version|Release|Vendor' en RHEL y derivadas
    Si nginx corre en un contenedor: docker ps | grep -i nginx.

  2. Listar los módulos compilados

    nginx -V 2>&1 | tr ' ' '\n' | grep -E 'http_v3|ssi|threads|file-aio'
    Sin --with-http_v3_module, CVE-2026-95101 no le afecta. El módulo SSI se compila por defecto: solo la opción --without-http_ssi_module lo excluye.

  3. Exportar la configuración efectiva

    sudo nginx -T > /root/nginx-conf.txt 2>&1
    nginx -T prueba la configuración y la imprime entera, incluidos los archivos incluidos. Consulte este archivo en lugar de recorrer /etc/nginx a mano: basta un include olvidado para pasar por alto una directiva.

  4. Buscar alias y $request_filename (CVE-2026-15176)

    grep -nE '^\s*(alias|rewrite)\s' /root/nginx-conf.txt
    grep -n 'request_filename' /root/nginx-conf.txt
    Está expuesto si una misma location combina alias, rewrite y un set o return que lee $request_filename, o si un log_format contiene esa variable.

  5. Buscar los map con regex (CVE-2026-93479)

    grep -nA8 '^\s*map ' /root/nginx-conf.txt
    Localice las entradas que empiezan por ~ y busque $1, $2 en las directivas root y log_format. Este fallo solo afecta a las ramas 1.30 y 1.31: un servidor en 1.28 o inferior no está afectado.

  6. Comprobar HTTP/3 (CVE-2026-95101)

    grep -nE 'listen\s.*quic|http3' /root/nginx-conf.txt
    grep -n 'proxy_request_buffering' /root/nginx-conf.txt
    HTTP/3 activo delante de un proxy_pass, sin proxy_request_buffering off: expuesto.

  7. Comprobar los tickets TLS (CVE-2026-97629)

    grep -nE 'ssl_session_cache\s.*shared|ssl_session_ticket_key|ssl_session_tickets' /root/nginx-conf.txt
    Expuesto si shared: está presente sin ssl_session_ticket_key ni ssl_session_tickets off. El impacto descrito por F5 afecta sobre todo a los sitios que autentican a sus clientes por certificado (ssl_verify_client).

  8. Comprobar SSI y AIO (CVE-2026-97205)

    grep -nE '^\s*(ssi|aio)\s' /root/nginx-conf.txt
    Expuesto si ssi on y aio (valor on o threads) se aplican a las mismas páginas y esas páginas contienen comandos include virtual.

En qué orden tratar un parque de servidores

Con estas ocho comprobaciones, cada servidor cae en una de tres casillas. Primera casilla: hay una condición de exposición y el servidor recibe tráfico público. Se parchea hoy, o recibe una mitigación en la hora. Los reverse proxies que sirven HTTP/3 y los sitios que autentican por certificado de cliente van primero, porque el impacto descrito afecta a la petición reenviada o a la propia autenticación.

Segunda casilla: no hay ninguna condición, pero la versión está en el rango vulnerable. El riesgo inmediato es bajo y la actualización se planifica en la semana. Las configuraciones cambian, y basta un alias añadido mañana por un desarrollador para reabrir CVE-2026-15176.

Tercera casilla: versión ya corregida, o paquete de distribución cuyo changelog cita los CVE. Nada que hacer, salvo anotar la fecha de la comprobación. Conserve esta tabla por cliente: también es la respuesta que dar cuando un cliente le pregunta si estaba afectado.

Actualizar entorno por entorno

  1. Repositorio nginx.org en Debian o Ubuntu

    sudo apt update && sudo apt install --only-upgrade nginx
    Después, nginx -v debe mostrar 1.30.6 en la rama stable, 1.31.7 o superior en mainline.

  2. Repositorio nginx.org en RHEL, AlmaLinux o Rocky

    sudo dnf upgrade nginx
    Misma comprobación con nginx -v. Para ambas familias, la instalación del repositorio se describe en la página Linux packages de nginx.org.

  3. Paquete de la distribución

    En Debian 13, sudo apt update && sudo apt install --only-upgrade nginx debe traer 1.26.3-3+deb13u10 o una versión más reciente. En otros sistemas, aplique las actualizaciones de seguridad en cuanto se publiquen y compruebe el changelog como se indica más arriba. Si su distribución se retrasa, puede pasar al repositorio nginx.org; compruebe antes que los módulos dinámicos de los que depende existen allí.

  4. Contenedores Docker

    En el archivo compose, fije image: nginx:1.30.6 (o nginx:stable) y luego:
    docker compose pull && docker compose up -d
    Una imagen construida con FROM nginx:… se reconstruye: docker compose build --pull && docker compose up -d.

  5. Servidor gestionado por un panel o un proveedor

    Si nginx lo instaló un panel de administración o su proveedor de hosting, es su canal de actualización el que entrega la corrección. Compruebe nginx -v y el changelog del paquete tras su actualización y, ante la duda, pregunte al proveedor en qué fecha se aplicó la corrección.

  6. Probar la configuración

    sudo nginx -t
    La respuesta esperada contiene syntax is ok y test is successful. No reinicie nunca sin esta prueba: una configuración inválida deja el servicio detenido.

  7. Sustituir el binario en memoria

    Actualizar el paquete no sustituye el proceso maestro ya en marcha. sudo ls -l /proc/$(cat /run/nginx.pid)/exe muestra (deleted) mientras el binario antiguo siga en ejecución (adapte la ruta del archivo PID). sudo systemctl restart nginx corta unos segundos; la sustitución en caliente con la señal USR2, documentada por nginx, evita ese corte, pero exige conocer bien su configuración de systemd.

  8. Comprobar y después vigilar

    Vuelva a lanzar nginx -v y el comando de /proc: ya no aparece (deleted). Pruebe un sitio con curl -sI https://your-domain.com. Después añada una alerta sobre los reinicios de workers, como en nuestra guía monitorización y alertas proactivas en VPS.

Imposible parchear hoy: las mitigaciones publicadas por F5

Las fichas CVE de F5 describen una mitigación para cada uno de los cinco fallos. Eliminan la condición de exposición sin corregir el código: son medidas provisionales.

CVE-2026-15176: no usar alias en la location afectada, o no usar $request_filename.
CVE-2026-93479: sustituir las capturas sin nombre por capturas con nombre, del tipo (?<site>…), y limitar su uso al bloque donde se aplica la regex.
CVE-2026-95101: proxy_request_buffering off;. El cuerpo de las subidas se envía entonces en flujo a la aplicación, lo que cambia su comportamiento con archivos grandes.
CVE-2026-97629: retirar ssl_session_cache shared:…, o cargar claves estáticas con ssl_session_ticket_key (archivo creado con openssl rand 80 > /etc/nginx/ticket.key). Los servidores con ssl_session_tickets off; no están afectados.
CVE-2026-97205: desactivar aio, o dejar de servir páginas SSI.

Cada mitigación se valida con nginx -t y luego systemctl reload nginx. Aquí basta una recarga, ya que el binario no cambia.

Detección: indicios, no pruebas

Un worker que se cae deja una línea del tipo worker process 12345 exited on signal 11 en el registro de errores. Cuéntelas con grep -c 'exited on signal' /var/log/nginx/error.log y compare con las semanas anteriores. Caídas repetidas en un servidor expuesto son un indicio que investigar, no una prueba de compromiso; su ausencia tampoco prueba que no haya riesgo. Medida general, ajena al aviso del editor: restrinja en el cortafuegos los vhosts que no necesitan ser públicos, como detalla nuestra checklist de bastionado de un VPS Linux.

Solución de problemas: errores tras la actualización

nginx -v muestra 1.30.6, pero nada ha cambiado. El binario en disco es nuevo, el proceso maestro es el antiguo. El comando ls -l /proc/<pid>/exe lo muestra con la marca (deleted). Solución: reiniciar el servicio, o sustituirlo en caliente con USR2.

nginx: [emerg] "/etc/nginx/ticket.key" must be 48 or 80 bytes. El archivo de clave de tickets no tiene el tamaño correcto, a menudo porque se creó en base64 o con un salto de línea. Solución: openssl rand 80 > /etc/nginx/ticket.key, sin opción de codificación, y luego nginx -t.

nginx is already the newest version. El repositorio de su distribución aún no ofrece un paquete corregido. Solución: aplicar las mitigaciones anteriores y seguir el tracker de seguridad de la distribución, o pasar al repositorio nginx.org.

El contenedor sigue respondiendo con la versión antigua. La imagen se descargó, pero el contenedor no se recreó, o el servicio apunta a una etiqueta fijada. Solución: docker compose up -d --force-recreate y luego docker compose exec <service> nginx -v.

Cinco fallos en veinte servidores: la carga de una agencia

Para una agencia, esta corrección no es un comando: es una vuelta completa al parque. Un servidor por cliente, procedencias distintas (paquete Debian aquí, repositorio nginx.org allá, imagen Docker en otro sitio), configuraciones escritas por varias personas. Cada máquina exige el inventario, la actualización, el reinicio, la comprobación y luego la respuesta al cliente preocupado.

La forma más duradera de reducir esta carga es reducir el número de servidores web que administra usted mismo. Con el hosting de revendedor de ServOrbit.com, los sitios de sus clientes funcionan en cuentas cPanel que gestiona desde WHM, en marca blanca: usted conserva la relación con el cliente y sus precios, nosotros mantenemos la infraestructura. Para las máquinas que deben seguir con acceso root, la opción de administración está disponible en nuestros VPS Cloud. Y si aún duda sobre el reverse proxy de esas máquinas, nuestra comparativa de Caddy, Traefik y nginx plantea los criterios.

La documentación oficial

nginx.org — noticias del 14 de octubre de 2026
nginx security advisories
CHANGES-1.30
CVE-2026-15176 · CVE-2026-93479 · CVE-2026-95101 · CVE-2026-97629 · CVE-2026-97205
Debian DSA-6575-1 · Ubuntu CVE-2026-15176
nginx.org — Linux packages · Controlling nginx · ngx_http_ssl_module

Menos servidores web que parchear usted mismo

Con el hosting de revendedor de ServOrbit.com, los sitios de sus clientes funcionan con su marca, sobre una infraestructura que mantenemos nosotros. Usted conserva la relación con el cliente y sus precios; nosotros, la capa de servidor.

¿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