Le 14 avril, Microsoft a publié une alerte de sécurité concernant une vulnérabilité – désormais référencée sous le nom CVE-2015-1635 – susceptible de permettre l’exécution de code à distance si un attaquant envoie une requête HTTP spécialement conçue à un système Windows affecté. Si vous ne pouvez pas appliquer immédiatement le correctif à vos serveurs Windows de production, NGINX et NGINX Plus peuvent vous aider à vous protéger contre les attaques.
À l’heure où nous écrivons ces lignes, les détails précis de la vulnérabilité n’ont pas été publiés, mais des attaquants tenteraient de repérer les systèmes vulnérables en envoyant des requêtes HTTP contenant des en-têtes Range de très grande taille, susceptibles de provoquer un dépassement de mémoire tampon et de faire planter le système Windows.
Il est vivement recommandé aux utilisateurs d’appliquer le correctif de Microsoft afin de remédier à cette vulnérabilité. Toutefois, si vous ne pouvez pas appliquer le correctif à tous vos systèmes de production et que vous utilisez NGINX ou NGINX Plus pour répartir la charge ou acheminer le trafic vers ces systèmes via un proxy, une simple modification de la configuration suffit pour intercepter et corriger les requêtes spéciales envoyées aux systèmes vulnérables.
Identifier et gérer le trafic de reconnaissance
Mattias Geniar a analysé le trafic de l’attaque et indique que les requêtes HTTP comportant une plage d’octets étendue dans l’en-tête Range provoquent le plantage :
GET / HTTP/1.1rnHost: stuffrn
Range: bytes=0-18446744073709551615rn
rnLa solution la plus simple consiste à utiliser la directive proxy_set_header pour définir l’en-tête Range sur "" (la chaîne vide), ce qui supprime effectivement cet en-tête avant que la requête HTTP ne soit transmise au serveur Windows indiqué par la directive proxy_pass :
server { listen 80;
location / {
proxy_set_header Range "";
proxy_pass http://windowsserver:80;
}
}Si votre application nécessite la prise en charge des plages d’octets, vous pouvez utiliser la directive map pour remplacer par une chaîne vide toute chaîne ressemblant à un entier de grande taille, avant d’utiliser la directive proxy_set_header pour définir l’en-tête 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;
}
}Vous pouvez également renvoyer le code HTTP « 444 » lorsque la valeur de l’en-tête « Range » ressemble à un entier élevé. Le code « 444 » indique à NGINX et NGINX Plus de fermer immédiatement la connexion client sans rien renvoyer.
server { listen 80;
if ($http_range ~ "d{9,}") {
return 444;
}
location / {
proxy_pass http://windowsserver:80;
}
}Pour rester en sécurité, appliquez le correctif. Si vous ne pouvez pas le faire immédiatement, NGINX et NGINX Plus peuvent vous aider à combler temporairement cette faille potentielle.
Pour essayer NGINX Plus, commencez votre essai gratuit de 30 jours dès aujourd’hui ou contactez-nous pour demander une démonstration.
À propos de l’auteur

Articles de blog associés

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA
Découvrez les principaux enseignements tirés des réponses à l’enquête annuelle F5 NGINX sur les dernières tendances en matière de technologies cloud natives, de sécurité, d’ingénierie de plateforme et d’IA.
Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?
Lorsque de nouvelles CVE sont signalées, il est facile de ne plus savoir si elles concernent un outil de contrôleur Ingress NGINX particulier, car il existe plusieurs projets. Cet article présente les CVE et explique comment distinguer les différents projets de contrôleurs Ingress afin de dissiper toute confusion.
Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX
Votre API répond-elle aux requêtes en moins de 30 ms ? Si ce n’est pas le cas, il ne s’agit pas d’une API en temps réel offrant la faible latence exigée par la grande majorité des organisations. Mesurez la latence de votre API avec l’outil rtapi de NGINX et découvrez comment NGINX peut l’aider à offrir une réactivité en temps réel.

Un testeur d’expressions régulières pour NGINX et NGINX Plus
Le testeur d’expressions régulières (regex) pour NGINX et NGINX Plus vous évite de tâtonner en vous indiquant si une expression régulière utilisée dans un bloc location ou map correspond aux valeurs comme prévu. Il génère la configuration appropriée et affiche les valeurs des groupes de capture.
Caches partagés avec les clusters de cache NGINX Plus, partie 1
Optimisez la capacité de votre cache web en le répartissant entre plusieurs serveurs de cache web NGINX ou NGINX Plus. Découvrez comment procéder dans cet article.
Introduction aux microservices
Les microservices suscitent actuellement beaucoup d’intérêt. Cet article de blog est le premier d’une série de sept consacrée à la conception, au développement et au déploiement de microservices.