El 14 de abril, Microsoft emitió una alerta de vulnerabilidad — registrada actualmente como CVE-2015-1635 — sobre un problema que podría permitir la ejecución remota de código si un atacante envía una solicitud HTTP especialmente diseñada a un sistema Windows afectado. Si no puede aplicar de inmediato el parche a sus servidores Windows de producción, NGINX y NGINX Plus pueden ayudarle a protegerse frente a los ataques.
En el momento de redactar este artículo, no se han publicado los detalles específicos de la vulnerabilidad, pero, según se informa, los atacantes están intentando localizar sistemas vulnerables mediante el envío de solicitudes HTTP con rangos muy amplios, lo que puede provocar un desbordamiento del búfer y hacer que el sistema Windows se bloquee.
Se recomienda encarecidamente a los usuarios que apliquen el parche de Microsoft para corregir esta vulnerabilidad. Sin embargo, si no puede aplicar el parche a todos sus sistemas de producción y utiliza NGINX o NGINX Plus para equilibrar la carga o redirigir el tráfico mediante proxy hacia ellos, basta con un sencillo cambio de configuración para interceptar y corregir las solicitudes especiales enviadas a los sistemas vulnerables.
Identificación y gestión del tráfico de reconocimiento
Mattias Geniar ha analizado el tráfico del ataque e informa de que las solicitudes HTTP con un intervalo de bytes amplio en la cabecera Range provocan el fallo:
GET / HTTP/1.1rnHost: stuffrn
Range: bytes=0-18446744073709551615rn
rnLa solución más sencilla es usar la directiva proxy_set_header para establecer la cabecera Range en "" (la cadena vacía), lo que elimina de forma efectiva la cabecera antes de que la solicitud HTTP se reenvíe al servidor Windows especificado por la directiva proxy_pass:
server { listen 80;
location / {
proxy_set_header Range "";
proxy_pass http://windowsserver:80;
}
}Si tu aplicación requiere compatibilidad con intervalos de bytes, puedes usar la directiva map para sustituir cualquier cadena que parezca un entero grande por una cadena vacía antes de usar la directiva proxy_set_header para establecer la cabecera Range:
map $http_range $saferange { "~d{10,}" ""; # if it matches a string of 10 or more integers, remove it
default $http_range;
}
server {
listen 80;
location / {
proxy_set_header Range $saferange;
proxy_pass http://windowsserver:80;
}
}Como alternativa, puede devolver el código HTTP 444 cuando el valor del encabezado Range parezca un número entero grande. El código 444 indica a NGINX y NGINX Plus que cierren inmediatamente la conexión del cliente sin devolver nada.
server { listen 80;
if ($http_range ~ "d{9,}") {
return 444;
}
location / {
proxy_pass http://windowsserver:80;
}
}Manténgase protegido y aplique el parche, pero, si no puede hacerlo de inmediato, NGINX y NGINX Plus pueden ayudarle a cerrar temporalmente la posible brecha de seguridad.
Para probar NGINX Plus, inicie hoy mismo su prueba gratuita de 30 días o póngase en contacto con nosotros para solicitar una demostración.
Sobre el autor

Artículos relacionados del blog
Únete a F5 NGINX en AppWorld 2024
Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.
Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.
Exposición de APIs en Kubernetes
La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».
NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.
Presentamos NGINX Plus R22
NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.
Presentamos NGINX Plus R17
NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.