
Évaluation SCA Wazuh centralisée pour CVE-2026-42945 sur les serveurs NGINX
Ce dépôt documente un laboratoire défensif pour CVE-2026-42945, affectant le module ngx_http_rewrite_module de NGINX.
L'objectif de ce projet était d'aborder la CVE d'un point de vue blue team en utilisant Wazuh Security Configuration Assessment (SCA) pour évaluer centralement l'exposition de NGINX.
Le laboratoire vérifie deux conditions d'exposition :
Le résultat final est une politique Wazuh SCA centralisée qui peut être déployée sur les serveurs NGINX surveillés via la configuration centralisée des agents Wazuh.
Le laboratoire a été construit avec une architecture réseau segmentée.
Internet / WAN
|
|
pfSense Firewall
|
|-----------------------------
| |
LAN DMZ
| |
Wazuh Manager Ubuntu NGINX Server
Wazuh Dashboard Wazuh Agent
NGINX
| Composant | Rôle |
|---|---|
| pfSense | Pare-feu et segmentation LAN/DMZ |
| Serveur DMZ Ubuntu | Serveur NGINX surveillé par Wazuh |
| NGINX | Service cible évalué pour l'exposition à la CVE |
| Agent Wazuh | Installé sur le serveur DMZ Ubuntu |
| Wazuh Manager | Serveur de surveillance central exécuté dans Docker |
| Wazuh Dashboard | Utilisé pour consulter les résultats SCA |
L'objectif était de construire un flux de travail défensif sûr et reproductible :
Wazuh Manager
|
| Centralized SCA policy
v
Wazuh Agent on DMZ NGINX Server
|
| Checks package version and NGINX configuration
v
Wazuh Dashboard
|
| Shows passed / failed checks
v
Remediation validation
Cette approche permet d'évaluer l'exposition à la CVE sans exécuter de code d'exploitation.
La politique Wazuh SCA personnalisée effectue deux vérifications.
La politique vérifie si le paquet NGINX Ubuntu installé correspond à la version non corrigée observée dans le laboratoire.
Version initiale du paquet vulnérable :
nginx 1.28.3-2ubuntu1
nginx-common 1.28.3-2ubuntu1
Version corrigée du paquet après remédiation :
nginx 1.28.3-2ubuntu1.1
nginx-common 1.28.3-2ubuntu1.1
Fichier de politique :
sca-policy/nginx-cve-2026-42945.yml
La politique vérifie également un motif rewrite risqué lié à CVE-2026-42945.
La configuration de test risquée est stockée ici :
nginx-config/vulnerable-example.conf
La configuration corrigée est stockée ici :
nginx-config/remediated-example.conf
La condition risquée testée dans le laboratoire inclut :
rewrite directive
unnamed capture such as $1
replacement containing ?
follow-up directive such as set
wazuh-nginx-cve-2026-42945-sca-lab/
├── README.md
├── sca-policy/
│ └── nginx-cve-2026-42945.yml
├── wazuh-config/
│ └── agent.conf
├── nginx-config/
│ ├── vulnerable-example.conf
│ └── remediated-example.conf
├── commands/
│ ├── 01-agent-validation.md
│ ├── 02-nginx-version-check.md
│ ├── 03-sca-policy-deployment.md
│ └── 04-remediation.md
├── screenshots/
│ ├── 01-lab-architecture.png
│ ├── 02-agent-active.png
│ ├── 03-sca-policy-failed.png
│ ├── 04-nginx-package-before.png
│ ├── 05-risky-rewrite-config.png
│ ├── 06-sca-partial-remediation.png
│ ├── 07-nginx-package-after.png
│ └── 08-sca-policy-passed.png
└── docs/
└── lab-notes.md
Le laboratoire a utilisé pfSense pour séparer l'environnement en :
LAN:
- Wazuh Manager
- Wazuh Dashboard
DMZ:
- Ubuntu NGINX server
- Wazuh Agent
Le serveur NGINX Ubuntu a été placé dans la DMZ.
Le Wazuh Manager a été placé dans le LAN.
Seule la communication Wazuh requise était autorisée du serveur DMZ vers le Wazuh Manager.
Le serveur DMZ Ubuntu a été enregistré comme agent Wazuh.
L'agent a été vérifié depuis le Wazuh Manager et confirmé comme actif.
Les commandes de validation sont documentées dans :
commands/01-agent-validation.md
État attendu :
Agent: ubuntu-dmz-nginx2
Status: Active
La version du paquet NGINX installé a été vérifiée sur le serveur DMZ Ubuntu.
Les commandes de vérification de version sont documentées dans :
commands/02-nginx-version-check.md
État initial :
nginx 1.28.3-2ubuntu1
nginx-common 1.28.3-2ubuntu1
Après la mise à jour de l'index des paquets, la version candidate corrigée est devenue disponible :
1.28.3-2ubuntu1.1
Une configuration NGINX de test a été créée pour simuler le motif rewrite risqué.
L'exemple vulnérable est stocké dans :
nginx-config/vulnerable-example.conf
La version corrigée est stockée dans :
nginx-config/remediated-example.conf
L'objectif n'était pas d'exploiter le service, mais de valider si Wazuh SCA peut identifier une exposition locale à une configuration risquée.
Une politique SCA personnalisée a été créée sur le Wazuh Manager.
Fichier de politique :
sca-policy/nginx-cve-2026-42945.yml
Dans le laboratoire, cette politique a été déployée depuis le répertoire partagé du Wazuh Manager :
/var/ossec/etc/shared/default/nginx-cve-2026-42945.yml
La politique contient deux vérifications :
| ID de vérification | Objectif |
|---|---|
| 100449 | Détecter la version vulnérable/non corrigée du paquet NGINX Ubuntu |
| 100450 | Détecter le motif de configuration NGINX rewrite risqué |
La politique SCA personnalisée a été déployée en utilisant la configuration centralisée des agents Wazuh.
Le fichier de configuration centralisée est stocké dans ce dépôt sous :
wazuh-config/agent.conf
Dans le laboratoire, il a été déployé sous :
/var/ossec/etc/shared/default/agent.conf
Le Wazuh Manager était exécuté dans Docker :
single-node-wazuh.manager-1
Les commandes de déploiement sont documentées dans :
commands/03-sca-policy-deployment.md
Après le redémarrage de l'agent Wazuh, la politique SCA personnalisée a été reçue par le serveur DMZ Ubuntu.
La politique reçue est apparue sous :
/var/ossec/etc/shared/nginx-cve-2026-42945.yml
Les journaux de l'agent Wazuh ont confirmé que la politique a été chargée et évaluée.
Indicateurs de journal attendus :
Loaded policy
Starting evaluation of policy
Evaluation finished for policy
Avec les deux conditions d'exposition présentes, le Wazuh Dashboard affichait :
Passed: 0
Failed: 2
Score: 0%
Cela signifie que les deux vérifications ont échoué :
| Vérification | Résultat |
|---|---|
| Version du paquet NGINX | Échec |
| Configuration rewrite risquée | Échec |
Capture d'écran :
screenshots/03-sca-policy-failed.png
La configuration NGINX rewrite risquée a été remplacée par une configuration plus sûre.
Fichier de référence :
nginx-config/remediated-example.conf
Après correction de la configuration et une nouvelle analyse Wazuh SCA, le résultat attendu était :
Passed: 1
Failed: 1
Score: 50%
À ce stade :