
Evaluación centralizada de SCA de Wazuh para CVE-2026-42945 en servidores NGINX
Este repositorio documenta un laboratorio defensivo para CVE-2026-42945, que afecta al módulo ngx_http_rewrite_module de NGINX.
El objetivo de este proyecto fue abordar el CVE desde una perspectiva de equipo azul utilizando Wazuh Security Configuration Assessment (SCA) para evaluar de forma centralizada la exposición de NGINX.
El laboratorio verifica dos condiciones de exposición:
El resultado final es una política SCA centralizada de Wazuh que puede implementarse en servidores NGINX monitoreados a través de la configuración centralizada del agente de Wazuh.
El laboratorio se construyó utilizando una arquitectura de red segmentada.
Internet / WAN
|
|
pfSense Firewall
|
|-----------------------------
| |
LAN DMZ
| |
Wazuh Manager Ubuntu NGINX Server
Wazuh Dashboard Wazuh Agent
NGINX
| Componente | Función |
|---|---|
| pfSense | Firewall y segmentación LAN/DMZ |
| Servidor DMZ Ubuntu | Servidor NGINX monitoreado por Wazuh |
| NGINX | Servicio objetivo evaluado para exposición a CVE |
| Agente Wazuh | Instalado en el servidor DMZ Ubuntu |
| Wazuh Manager | Servidor de monitoreo central ejecutándose en Docker |
| Wazuh Dashboard | Utilizado para revisar los resultados de SCA |
El objetivo fue construir un flujo de trabajo defensivo seguro y repetible:
Wazuh Manager
|
| Política SCA centralizada
v
Agente Wazuh en servidor NGINX DMZ
|
| Verifica versión del paquete y configuración de NGINX
v
Wazuh Dashboard
|
| Muestra verificaciones aprobadas/fallidas
v
Validación de remediación
Este enfoque permite evaluar la exposición a CVE sin ejecutar código de explotación.
La política SCA personalizada de Wazuh realiza dos verificaciones.
La política verifica si la versión del paquete NGINX de Ubuntu instalada coincide con la versión vulnerable observada en el laboratorio.
Versión inicial del paquete vulnerable:
nginx 1.28.3-2ubuntu1
nginx-common 1.28.3-2ubuntu1
Versión del paquete corregida después de la remediación:
nginx 1.28.3-2ubuntu1.1
nginx-common 1.28.3-2ubuntu1.1
Archivo de política:
sca-policy/nginx-cve-2026-42945.yml
La política también verifica un patrón de reescritura riesgoso relacionado con CVE-2026-42945.
La configuración de prueba riesgosa se almacena aquí:
nginx-config/vulnerable-example.conf
La configuración corregida se almacena aquí:
nginx-config/remediated-example.conf
La condición riesgosa probada en el laboratorio incluye:
directiva rewrite
captura sin nombre como $1
reemplazo que contiene ?
directiva posterior como 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
El laboratorio utilizó pfSense para separar el entorno en:
LAN:
- Wazuh Manager
- Wazuh Dashboard
DMZ:
- Servidor Ubuntu NGINX
- Agente Wazuh
El servidor Ubuntu NGINX se colocó en la DMZ.
El Wazuh Manager se colocó en la LAN.
Solo se permitió la comunicación Wazuh requerida desde el servidor DMZ al Wazuh Manager.
El servidor DMZ Ubuntu se registró como agente de Wazuh.
El agente se verificó desde el Wazuh Manager y se confirmó como activo.
Los comandos de validación están documentados en:
commands/01-agent-validation.md
Estado esperado:
Agent: ubuntu-dmz-nginx2
Status: Active
Se verificó la versión del paquete NGINX instalado en el servidor DMZ Ubuntu.
Los comandos de verificación de versión están documentados en:
commands/02-nginx-version-check.md
Estado inicial:
nginx 1.28.3-2ubuntu1
nginx-common 1.28.3-2ubuntu1
Después de la actualización del índice de paquetes, la versión candidata corregida estuvo disponible:
1.28.3-2ubuntu1.1
Se creó una configuración de prueba de NGINX para simular el patrón de reescritura riesgoso.
El ejemplo vulnerable se almacena en:
nginx-config/vulnerable-example.conf
La versión corregida se almacena en:
nginx-config/remediated-example.conf
El propósito no era explotar el servicio, sino validar si Wazuh SCA puede identificar una exposición de configuración local riesgosa.
Se creó una política SCA personalizada en el Wazuh Manager.
Archivo de política:
sca-policy/nginx-cve-2026-42945.yml
En el laboratorio, esta política se implementó desde el directorio compartido del Wazuh Manager:
/var/ossec/etc/shared/default/nginx-cve-2026-42945.yml
La política contiene dos verificaciones:
| ID de verificación | Propósito |
|---|---|
| 100449 | Detectar versión del paquete NGINX de Ubuntu vulnerable/sin parche |
| 100450 | Detectar patrón de configuración de reescritura riesgoso de NGINX |
La política SCA personalizada se implementó utilizando la configuración centralizada del agente de Wazuh.
El archivo de configuración centralizada se almacena en este repositorio como:
wazuh-config/agent.conf
En el laboratorio, se implementó en:
/var/ossec/etc/shared/default/agent.conf
El Wazuh Manager se ejecutaba en Docker:
single-node-wazuh.manager-1
Los comandos de implementación están documentados en:
commands/03-sca-policy-deployment.md
Después de reiniciar el agente de Wazuh, la política SCA personalizada fue recibida por el servidor DMZ Ubuntu.
La política recibida apareció en:
/var/ossec/etc/shared/nginx-cve-2026-42945.yml
Los registros del agente de Wazuh confirmaron que la política se cargó y evaluó.
Indicadores de registro esperados:
Loaded policy
Starting evaluation of policy
Evaluation finished for policy
Con ambas condiciones de exposición presentes, el Wazuh Dashboard mostró:
Passed: 0
Failed: 2
Score: 0%
Esto significa que ambas verificaciones fallaron:
| Verificación | Resultado |
|---|---|
| Versión del paquete NGINX | Fallida |
| Configuración de reescritura riesgosa | Fallida |
Captura de pantalla:
screenshots/03-sca-policy-failed.png
La configuración de reescritura riesgosa de NGINX se reemplazó con una configuración más segura.
Archivo de referencia: