NGINX, propiedad de F5, es un servidor proxy inverso muy utilizado en el mundo. NGINX es también una infraestructura crítica de Internet global. Ahora, una empresa de investigación de seguridad ha revelado una vulnerabilidad de seguridad de alto riesgo en el software. La vulnerabilidad tiene el número CVE-2026-42945. Hay un problema de desbordamiento del búfer de montón en el motor de secuencias de comandos NGINX que existe desde hace 18 años.

Un atacante sólo necesita enviar una solicitud HTTP cuidadosamente construida a un servidor NGINX expuesto para tomar el control del servidor de forma remota. NGINX representa casi el 30% del servidor central de sitios web globales y los campos de proxy inverso, por lo que esta vulnerabilidad puede afectar a una gran cantidad de servicios de Internet.

Afecta la ontología NGINX y múltiples derivados:

Esta vulnerabilidad se introdujo originalmente en la versión 0.6.27 de NGINX lanzada en 2008. Después de eso, la vulnerabilidad no se descubrió durante mucho tiempo y ha estado al acecho hasta ahora. Esta vulnerabilidad afecta a las versiones 0.6.27~1.30.0 de NGINX y también afecta a varios derivados de NGINX proporcionados por F5 a clientes comerciales. Los productos derivados afectados incluyen, entre otros, NGINX WAF, F5 WAF, NGINX Gateway Fabric, NGINX Ingress Controller, etc.

Las condiciones desencadenantes de la vulnerabilidad están muy ocultas. Cuando las siguientes dos instrucciones aparecen en el archivo de configuración de NGINX al mismo tiempo, se activará la vulnerabilidad:

rewrite ^/api/(.*)$ /internal?migrated=true;  # 重写规则末尾带 “?” set $original_endpoint $1;                     # 使用正则捕获组

El equipo de investigación que descubrió la vulnerabilidad señaló que la causa raíz de la vulnerabilidad radica en el motor de script (ngx_http_script.c) de ngx_http_rewrite_module. Cuando la instrucción de reescritura contiene un signo de interrogación, se establece el indicador is_args persistente, pero en la siguiente fase de cálculo de la longitud de la instrucción establecida, el motor utiliza un nuevo submotor borrado, lo que hace que la lógica de escape de la URL se omita durante el cálculo de la longitud.

En la etapa de copia real, el motor principal se utiliza para activar la función ngx_escape_uri para escapar de caracteres como + y &. El búfer se asigna de acuerdo con la longitud sin escape, pero el contenido expandido se escribe, lo que en última instancia provoca un desbordamiento del búfer de montón controlable.

F5 ha lanzado la versión 1.31.0/1.30.1 de NGINX para solucionar:

Después de recibir la notificación de vulnerabilidad, F5 confirmó rápidamente la vulnerabilidad. Después de que F5 preparó la solución, los investigadores hicieron pública la vulnerabilidad. Por lo tanto, los usuarios que actualmente utilizan NGINX y sus derivados deben actualizar a la última versión que no se vea afectada. La versión de código abierto de NGINX debe actualizarse a la versión 1.30.1 o 1.31.0. Otras versiones anteriores, como las versiones 0.6.27~1.30.0, se ven afectadas por la vulnerabilidad.

Para obtener información sobre la versión de otros derivados, consulte el boletín de seguridad de F5: https://my.f5.com/manage/s/article/K000160932