← Blog

Nginx 1.30.5 y 1.31.6: el desbordamiento de HTTP/3 (CVE-2026-90439) y cómo saber en dos comandos si te afecta

Nginx ha publicado versiones que corrigen un desbordamiento de búfer en el módulo de HTTP/3, con gravedad media. Solo afecta a quien tiene HTTP/3 activado y compila contra OpenSSL 3.5.0 o anterior, pero si es tu caso un atacante puede tumbar workers sin autenticarse. Te contamos cómo comprobarlo y qué hacer.

Otra vez HTTP/3

El 15 de septiembre nginx publicó 1.30.5 (stable) y 1.31.6 (mainline). Las dos llegan con un único motivo de urgencia: el CVE-2026-90439, un desbordamiento de búfer en ngx_http_v3_module, el módulo que da soporte a HTTP/3.

La buena noticia es que esta vez el fallo no es universal. La mala, que si usas HTTP/3 —y cada vez más gente lo activa porque el navegador lo agradece— conviene que lo mires hoy y no "cuando toque".

En una frase

Con HTTP/3 activado y nginx enlazado contra OpenSSL 3.5.0 o anterior, un atacante remoto y sin credenciales puede provocar, durante el saludo TLS, un desbordamiento limitado de memoria en un worker, que acaba reiniciándolo y puede corromper algún dato. Gravedad media: CVSS 6.5 en la escala v3.1 y 6.9 en v4.0, según la propia F5.

Qué se sabe del fallo

  • Dónde está: en el procesamiento del saludo TLS de las conexiones HTTP/3 (QUIC).
  • Qué provoca: reinicios del worker y, como mucho, corrupción de datos limitada. F5 no le atribuye fuga de información ni ejecución de código, y precisa que el efecto no es determinista ni lo controla el atacante.
  • Qué no toca: solo el plano de datos. No hay exposición del plano de control.
  • Quién lo encontró: Banny Liao, según el registro de cambios de nginx.
  • ¿Se está explotando? A día de hoy no hay constancia de explotación ni de prueba de concepto pública. Pero el análisis de CISA lo marca como automatizable: no hace falta nada del otro mundo para lanzarlo en masa contra servidores expuestos.

Además del parche, las dos versiones cambian un comportamiento: la extensión de parámetros de transporte de QUIC que llega en una conexión SSL normal ahora se ignora siempre. La mainline 1.31.6 trae también varias correcciones de errores sin relación con la seguridad.

A quién afecta

Se tienen que dar las dos condiciones a la vez:

  1. Versión vulnerable: de la 1.29.2 a la 1.31.5. En la rama stable eso incluye las 1.30.x anteriores a la 1.30.5. NGINX Plus también está afectado; el arreglo está en 37.1.1.2 y 37.0.6.2.
  2. HTTP/3 activado (alguna directiva listen con quic) y OpenSSL 3.5.0 o anterior.

Si tu nginx es anterior a la 1.29.2, el código vulnerable no está. Es lo habitual en los paquetes de las distribuciones estables, que suelen ir varias versiones por detrás; aun así, compruébalo en vez de suponerlo. Y si no usas HTTP/3, este fallo no te alcanza aunque tu versión esté en el rango.

Qué tienes que hacer hoy

1. Mira versión y OpenSSL

nginx -V 2>&1 | head -3

La primera línea te dice la versión de nginx, y otra de las líneas, la de OpenSSL con la que se compiló ("built with OpenSSL…"). Comprueba también la que tiene el sistema:

openssl version

2. Mira si tienes HTTP/3 activado

nginx -T 2>/dev/null | grep -E "listen.*quic|http3"

Si no sale nada, no tienes HTTP/3 activado y puedes respirar tranquilo con este CVE (y actualizar igualmente en tu siguiente ventana).

3. Si te afecta: actualiza y recarga sin cortar el servicio

  • Rama stable: el objetivo es 1.30.5 o superior.
  • Rama mainline: el objetivo es 1.31.6 o superior.
# Debian / Ubuntu (repositorio oficial de nginx.org)
sudo apt update && sudo apt install --only-upgrade nginx
sudo nginx -t && sudo systemctl reload nginx

# RHEL / AlmaLinux / Rocky
sudo dnf update nginx
sudo nginx -t && sudo systemctl reload nginx

Y después, nginx -v otra vez. Lo que no se comprueba no está hecho.

4. Si hoy no puedes actualizar

F5 propone dos apaños temporales:

  • Desactivar HTTP/3 quitando quic de las directivas listen. Los navegadores volverán a HTTP/2 sin que el usuario note nada más que una pizca de latencia.
  • O bien activarlo en todos los bloques server que comparten configuración, añadiendo quic a todos ellos. F5 no detalla el motivo; si te decides por esta vía, pruébala antes en un entorno que no sea producción.

Lo primero es lo más sencillo y lo más seguro. Lo segundo, mejor dejarlo para quien ya sepa por qué lo hace.

Cómo lo enfocamos nosotros

Este es el tipo de CVE donde más ayuda tener inventario: saber de antemano qué servidores tienen HTTP/3 y con qué OpenSSL se compiló cada nginx. Con eso, la pregunta "¿me afecta?" se contesta en minutos y no en una tarde de SSH servidor por servidor.

Y una idea que conviene tener presente: el código de HTTP/3 es mucho más joven que el de HTTP/1.1 o HTTP/2. No es razón para no usarlo —ya contamos cuándo merece la pena activarlo—, pero sí para tratar el quic del listen como algo que se activa sabiendo que hay que vigilarlo.

Si no sabes qué versión de nginx corre en tu servidor, ni si tiene HTTP/3 activado, hablamos.

Referencias

¿Hablamos de tu caso?

Cuéntanos qué necesitas y te respondemos en menos de 24 horas con una propuesta clara.

Pedir presupuesto