Veinte años de fallos en Nginx: por qué NGINX Rift exige que parchees ya
Dos Décadas de Vulnerabilidades en Nginx: Por Qué el "NGINX Rift" Exige Parches Inmediatos
Todos conocemos el riesgo de dejar código antiguo sin tocar. Pero ¿qué pasa cuando ese código lleva 18 años en uno de los servidores web más usados del mundo?
F5 acaba de lanzar parches para cuatro fallos en Nginx. El más grave, CVE-2026-42945 —llamado "NGINX Rift" por sus descubridores en depthfirst—, obliga a cualquier equipo de infra a activar sus scripts de actualización ya mismo.
Una Tormenta Perfecta: Código Viejo con Efectos Devastadores
Veamos por qué este fallo es tan letal:
El Problema: Un desbordamiento de búfer en el módulo rewrite de Nginx. Está ahí desde la versión 0.6.27 de 2008. Imagina: antes de Docker, antes de los smartphones masivos y cuando Apache aún reinaba.
Cómo Atacar: Basta una sola petición HTTP maliciosa sin autenticación. Nada de cadenas complejas ni trucos sociales. Solo un request bien armado.
Consecuencias: Sin ASLR activado, ejecución remota de código. Fin del juego. Con ASLR, al menos un DoS constante: los workers caen, se reinician y repiten el ciclo.
Puntuación CVSS: 9.2 Crítica. Casi el máximo posible.
Cómo Sobrevivió Esto Dos Décadas
La pregunta clave: ¿por qué nadie lo vio antes? Nginx usa PCRE para coincidir patrones en rewrite. Si usas capturas sin nombre ($1, $2) seguidas de otro rewrite, if o set, el código escribe fuera del heap asignado. Un clásico buffer overflow que pasó desapercibido en revisiones.
Esto prueba que ni los proyectos open source más cuidados y populares están libres de bugs ancestrales. Nginx mueve millones de servidores. Su longevidad amplifica el daño potencial.
Quién Debe Actualizar Ya
Usuarios de NGINX Plus: En R32 a R36, aplica R32 P6 o R36 P4.
Usuarios de NGINX Open Source: Afecta de 1.0.0 a 1.30.0. Sube a 1.30.1 o 1.31.0 de inmediato.
Excepción Dolorosa: Versiones 0.6.27 a 0.9.7 (EOL antiguas) no tienen parche. Actualización completa, sin excusas.
Mitigación Temporal Si No Puedes Parchear
En freeze de cambios o con dependencias legacy, haz esto rápido:
Cambia capturas sin nombre por nombradas en tus rewrite. Olvídate de $1 o $2. Usa grupos como (?<id>...) y $id. Evita el camino que activa el overflow, pero no lo soluciona del todo.
Ejemplo:
# Vulnerable
rewrite ^/user/([0-9]+)$ /profile?id=$1 last;
# Más seguro (provisional)
rewrite ^/user/(?<id>[0-9]+)$ /profile?id=$id last;
Es un parche rápido. Prioriza la actualización real.
Las Otras Tres CVE de Este Lanzamiento
NGINX Rift acapara titulares, pero F5 arregló tres más:
- CVE-2026-42946 (CVSS 8.3 Alto): Allocación excesiva de memoria en módulos SCGI y uWSGI. Posible DoS en proxies específicos.
- CVE-2026-40701 (CVSS 6.3 Medio): Use-after-free en módulo SSL, con ssl_verify_client y ssl_ocsp activados.
- CVE-2026-42934 (CVSS 4.8 Medio): Lectura fuera de límites en módulo charset.
No tan urgentes, pero resuélvelas en tu próxima ventana de mantenimiento.
Lecciones para la Seguridad en Infra
Este caso nos deja verdades incómodas:
- Popularidad no es blindaje. Nginx está en todas partes, pero el bug duró 18 años invisible.
- Antigüedad no suma seguridad. Código viejo acumula fallos, no solo experiencia.
- Tu eslabón débil dicta todo. Un Nginx sin parche compromete toda la arquitectura.
- Monitorea o sufre. Hasta con ASLR, el DoS es inmediato y fiable.
En Resumen
Si usas Nginx —Open Source o Plus—, ve estos parches como emergencia, no rutina. La edad extrema, el ataque simple y la gravedad crítica lo ponen en prioridad máxima.
Actualiza esta semana. Prueba en staging, claro, pero no postergues en producción. El riesgo de quedarte expuesto supera con creces el de actualizar un software estable como Nginx.
¿Hace tiempo que no revisas configs? Aprovecha para chequear rewrite, reforzar seguridad y cazar versiones obsoletas en tu infra.
Mantente protegido.