
Gixy-Next: Escáner de seguridad de configuración y verificador de rendimiento de NGINX
Gixy-Next (Gixy) es un escáner de seguridad de configuración NGINX y una herramienta de endurecimiento de código abierto que analiza estáticamente tu nginx.conf para detectar configuraciones inseguras, carencias de endurecimiento y errores comunes de rendimiento antes de que lleguen a producción. Es un fork mantenido activamente del Gixy de Yandex. El código fuente de Gixy-Next está disponible en GitHub.
Gixy-Next también se puede ejecutar en el navegador en esta página. No es necesario descargar nada; puedes analizar tus configuraciones en el sitio web (localmente, mediante WebAssembly).
Gixy-Next (la CLI gixy o gixy-next) se distribuye en PyPI. Puedes instalarlo con pip o uv:
# pip
pip3 install gixy-next
# uv
uv pip install gixy-next
Después puedes ejecutarlo:
# gixy defaults to reading /etc/nginx/nginx.conf
gixy
# But you can also specify a path to the configuration
gixy /opt/nginx.conf
También puedes exportar tu configuración de NGINX a un único archivo de volcado (consulta nginx -T Volcado de configuración activa):
# Dumps the full NGINX configuration into a single file (including all includes)
nginx -T > ./nginx-dump.conf
# Scan the dump elsewhere (or via stdin):
gixy ./nginx-dump.conf
# or
cat ./nginx-dump.conf | gixy -
En lugar de descargar y ejecutar Gixy-Next localmente, puedes usar esta página web y analizar una configuración desde tu navegador (localmente, mediante WebAssembly).
Gixy-Next está disponible como imagen de Docker desde Docker Hub o GitHub Registry.
Analiza un archivo de configuración local montándolo en el contenedor:
# Use Github Registry
docker run --pull=always --rm -v "$PWD/nginx.conf:/nginx.conf:ro" ghcr.io/megamansec/gixy-next /nginx.conf
# Or Docker Hub
docker run --pull=always --rm -v "$PWD/nginx.conf:/nginx.conf:ro" megamansec/gixy-next /nginx.conf
Analiza un volcado de configuración activa de NGINX:
# Dumps the full NGINX configuration into a single file (including all includes)
nginx -T > ./nginx-dump.conf
# Use Github Registry
docker run --pull=always --rm -v "$PWD/nginx-dump.conf:/nginx-dump.conf:ro" ghcr.io/megamansec/gixy-next /nginx-dump.conf
# Or Docker Hub
docker run --pull=always --rm -v "$PWD/nginx-dump.conf:/nginx-dump.conf:ro" megamansec/gixy-next /nginx-dump.conf
Analizar desde stdin:
# Use Github Registry
nginx -T | docker run --pull=always --rm -i ghcr.io/megamansec/gixy-next gixy-next -
# Or Docker Hub
nginx -T | docker run --pull=always --rm -i megamansec/gixy-next gixy-next -
Gixy-Next puede detectar una amplia gama de configuraciones incorrectas de seguridad y rendimiento de NGINX en nginx.conf y en los archivos de configuración incluidos. Se admiten los siguientes plugins:
error_log establecido en offkeepalive_requests¿Algo no detectado? ¡Abre un issue en GitHub indicando qué falta!
Por defecto, gixy lee la configuración de NGINX del sistema desde /etc/nginx/nginx.conf. También puedes especificar la ubicación pasándosela a gixy:
# Analyze the configuration in /opt/nginx.conf
gixy /opt/nginx.conf
Puedes ejecutar un subconjunto específico de comprobaciones con --tests:
# Only run these checks
gixy --tests http_splitting,ssrf,version_disclosure
O omitir algunas comprobaciones ruidosas con --skips:
# Run everything except these checks
gixy --skips low_keepalive_requests,worker_rlimit_nofile_vs_connections
Para informar solo de problemas de una severidad determinada o superior, usa el flag -l acumulativo:
# -l for LOW severity issues and higher, -ll for MEDIUM and higher, and -lll for only HIGH severity issues
gixy -ll
Por defecto, la salida de gixy está coloreada con ANSI; se ve mejor en una terminal compatible. Puedes usar el flag --format (-f) con el valor text para obtener una salida sin color:
$ gixy -f text
==================== Results ===================
Problem: [http_splitting] Possible HTTP-Splitting vulnerability.
Description: Using variables that can contain "\n" may lead to http injection.
Additional info: https://gixy.io/plugins/http_splitting/
Reason: At least variable "$action" can contain "\n"
Pseudo config:
include /etc/nginx/sites/default.conf;
server {
location ~ /v1/((?<action>[^.]*)\.json)?$ {
add_header X-Action $action;
}
}
==================== Summary ===================
Total issues:
Informational: 0
Low: 0
Medium: 0
High: 1
También puedes usar -f json para obtener una salida JSON reproducible y legible por máquina:
$ gixy -f json
[{"config":"\nserver {\n\n\tlocation ~ /v1/((?<action>[^.]*)\\.json)?$ {\n\t\tadd_header X-Action $action;\n\t}\n}","description":"Using variables that can contain \"\\n\" or \"\\r\" may lead to http injection.","file":"/etc/nginx/nginx.conf","line":4,"path":"/etc/nginx/nginx.conf","plugin":"http_splitting","reason":"At least variable \"$action\" can contain \"\\n\"","reference":"https://gixy.io/plugins/http_splitting/","severity":"HIGH","summary":"Possible HTTP-Splitting vulnerability."}]
También puedes usar -f sarif para obtener un registro SARIF 2.1.0, p. ej., para subirlo al escaneo de código de GitHub:
# Write a SARIF report to a file, e.g. for `github/codeql-action/upload-sarif`
gixy -f sarif -o gixy-results.sarif
Puedes encontrar más flags de uso pasando --help a gixy. También puedes encontrar más información en la Guía de uso.
Algunos plugins exponen opciones que puedes configurar mediante flags de CLI o un archivo de configuración. Puedes leer más sobre ellas en la Guía de configuración.
A diferencia de ejecutar nginx -t, que solo comprueba la sintaxis, Gixy-Next analiza realmente tu configuración y detecta instancias sin endurecer y vulnerabilidades.
Con Gixy-Next, puedes realizar una revisión de seguridad automatizada de la configuración de NGINX que se puede ejecutar localmente en cada cambio, ya sea para auditoría, cumplimiento o pruebas generales, lo que ayuda a generar hallazgos accionables que contribuyen a prevenir servidores NGINX inestables/lentos y a reducir el riesgo de directivas inseguras y valores predeterminados no seguros.
Gixy-Next es mantenido por Joshua Rogers, ¡pero las contribuciones siempre son bienvenidas! Puedes ayudarnos de diferentes maneras, como:
Antes de enviar cualquier cambio en pull requests, lee el documento de pautas de contribución, Contribuyendo a Gixy-Next.
La página oficial de Gixy-Next es https://gixy.io/. Cualquier cambio en la documentación de Gixy-Next se reflejará automáticamente en ese sitio web.
El código fuente se puede encontrar en https://github.com/MegaManSec/Gixy-Next.
Gixy es un analizador de configuración de NGINX que fue desarrollado originalmente por Andrew Krasichkov de Yandex. Se publicó por primera vez en 2017 y desde entonces ha quedado sin mantenimiento. No es compatible con las versiones modernas de Python, contiene numerosos errores y tiene una funcionalidad y capacidad limitadas para detectar configuraciones NGINX vulnerables. Ejecutar el Gixy original hoy en un sistema moderno produce el siguiente error:
File "gixy/core/sre_parse/sre_parse.py", line 61, in <module>
"t": SRE_FLAG_TEMPLATE,
^^^^^^^^^^^^^^^^^
NameError: name 'SRE_FLAG_TEMPLATE' is not defined. Did you mean: 'SRE_FLAG_VERBOSE'?
Gixy-Next, por tanto, es un fork que añade soporte para sistemas modernos, nuevas comprobaciones, mejoras de rendimiento, sugerencias de endurecimiento y soporte para versiones modernas de Python y NGINX.
gixy-ng?Gixy-Next es en realidad un fork de gixy-ng, que a su vez era un fork del gixy original. Gixy-Next se creó después de que el mantenedor de gixy-ng comenzara a producir grandes cantidades de cambios asistidos por IA y código autogenerado que era a la vez demasiado grande para revisar y defectuoso.
Con el tiempo, el mantenedor de gixy-ng comenzó a incorporar al código cambios generados por IA que introdujeron regresiones evidentes, rompieron el comportamiento crítico de la herramienta (algo que cualquier usuario de la herramienta habría detectado), añadieron artefactos aleatorios de herramientas de IA e introdujeron código que simplemente no hacía lo que se suponía que debía hacer. Lo más importante: el mantenedor también añadió publicidad de su negocio a toda la documentación, toda la salida y todo el código fuente de gixy-ng.
En otras palabras, el mantenedor de gixy-ng tomó el gixy original, pidió a la IA que hiciera cambios, introdujo un montón de errores (y otros desperdicios de IA), y luego añadió publicidad al código. También aceptó contribuciones en forma de merge requests, pero eliminó la información de los autores (consulta esta publicación y esta publicación).
Gixy-Next se centra en restaurar la calidad y ha sido probado en condiciones reales sobre configuraciones NGINX de casi 100.000 líneas. Corrige errores y falsas detecciones introducidos por los cambios de gixy-ng, elimina artefactos/basura de herramientas de IA y trata de mantener el código revisable y mantenible. Este fork es para quienes están interesados en código limpio y mantenibilidad a largo plazo.
worker_processes