
Gixy-Next: NGINX-Konfigurations-Sicherheitsscanner & Leistungsprüfer
Gixy-Next (Gixy) ist ein Open-Source-Sicherheitsscanner und Härtungswerkzeug für NGINX-Konfigurationen, das Ihre nginx.conf statisch analysiert, um Sicherheitsfehlkonfigurationen, Härtungslücken und häufige Performance-Fallstricke zu erkennen, bevor sie in die Produktion gelangen. Es ist ein aktiv gepflegter Fork von Yandex' Gixy. Der Quellcode von Gixy-Next ist auf GitHub verfügbar.
Gixy-Next kann auch im Browser auf dieser Seite ausgeführt werden. Kein Download ist erforderlich; Sie können Ihre Konfigurationen auf der Website scannen (lokal, mit WebAssembly).
Gixy-Next (die gixy- oder gixy-next-CLI) wird auf PyPI bereitgestellt. Sie können es mit pip oder uv installieren:
# pip
pip3 install gixy-next
# uv
uv pip install gixy-next
Anschließend können Sie es ausführen:
# gixy defaults to reading /etc/nginx/nginx.conf
gixy
# But you can also specify a path to the configuration
gixy /opt/nginx.conf
Sie können Ihre NGINX-Konfiguration auch in eine einzelne Dump-Datei exportieren (siehe nginx -T Live-Konfigurations-Dump):
# 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 -
Anstatt Gixy-Next herunterzuladen und lokal auszuführen, können Sie diese Webseite verwenden und eine Konfiguration direkt aus Ihrem Webbrowser scannen (lokal, mit WebAssembly).
Gixy-Next ist als Docker-Image über Docker Hub oder die GitHub Registry verfügbar.
Scannen Sie eine lokale Konfigurationsdatei, indem Sie sie in den Container mounten:
# 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
Scannen Sie einen NGINX-Live-Konfigurations-Dump:
# 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
Scannen Sie über 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 kann eine breite Palette von NGINX-Sicherheits- und Performance-Fehlkonfigurationen in nginx.conf und eingebundenen Konfigurationsdateien erkennen. Die folgenden Plugins werden unterstützt:
error_log auf off gesetztkeepalive_requests-WertEtwas wird nicht erkannt? Bitte öffnen Sie ein Issue auf GitHub und geben Sie an, was fehlt!
Standardmäßig liest gixy die NGINX-Konfiguration eines Systems aus /etc/nginx/nginx.conf. Sie können den Speicherort auch angeben, indem Sie ihn an gixy übergeben:
# Analyze the configuration in /opt/nginx.conf
gixy /opt/nginx.conf
Mit --tests können Sie eine gezielte Teilmenge der Prüfungen ausführen:
# Only run these checks
gixy --tests http_splitting,ssrf,version_disclosure
Oder überspringen Sie mit --skips ein paar Prüfungen, die viele Meldungen erzeugen:
# Run everything except these checks
gixy --skips low_keepalive_requests,worker_rlimit_nofile_vs_connections
Um nur Probleme ab einer bestimmten Schwere zu melden, verwenden Sie das kombinierbare -l-Flag:
# -l for LOW severity issues and higher, -ll for MEDIUM and higher, and -lll for only HIGH severity issues
gixy -ll
Standardmäßig ist die Ausgabe von gixy ANSI-gefärbt; am besten betrachtet man sie in einem kompatiblen Terminal. Mit dem Flag --format (-f) und dem Wert text erhalten Sie eine ungefärbte Ausgabe:
$ 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
Sie können auch -f json verwenden, um eine reproduzierbare, maschinenlesbare JSON-Ausgabe zu erhalten:
$ 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."}]
Sie können auch -f sarif verwenden, um ein SARIF 2.1.0-Log zu erhalten, z. B. für den Upload zu GitHub Code Scanning:
# Write a SARIF report to a file, e.g. for `github/codeql-action/upload-sarif`
gixy -f sarif -o gixy-results.sarif
Weitere Flags zur Verwendung finden Sie, indem Sie gixy mit --help aufrufen. Weitere Informationen finden Sie auch im Nutzungsleitfaden.
Einige Plugins bieten Optionen, die Sie über CLI-Flags oder eine Konfigurationsdatei festlegen können. Weitere Informationen dazu finden Sie im Konfigurationsleitfaden.
Im Gegensatz zu nginx -t, das nur die Syntax prüft, analysiert Gixy-Next Ihre Konfiguration tatsächlich und erkennt nicht gehärtete Instanzen und Schwachstellen.
Mit Gixy-Next können Sie eine automatisierte Sicherheitsüberprüfung der NGINX-Konfiguration durchführen, die bei jeder Änderung lokal ausgeführt werden kann – für Audits, Compliance oder allgemeine Tests. So entstehen umsetzbare Ergebnisse, die helfen, instabile/langsame NGINX-Server zu vermeiden und Risiken durch unsichere Direktiven und unsichere Standardwerte zu reduzieren.
Gixy-Next wird von Joshua Rogers gepflegt, aber Beiträge sind jederzeit willkommen! Sie können uns auf verschiedene Weise helfen, zum Beispiel:
Bevor Sie Änderungen in Pull-Requests einreichen, lesen Sie bitte das Dokument mit den Beitragsrichtlinien, Mitwirken an Gixy-Next.
Die offizielle Homepage von Gixy-Next ist https://gixy.io/. Änderungen an der Dokumentation von Gixy-Next werden automatisch auf dieser Website übernommen.
Der Quellcode ist unter https://github.com/MegaManSec/Gixy-Next zu finden.
Gixy ist ein NGINX-Konfigurationsanalysator, der ursprünglich von Andrew Krasichkov von Yandex entwickelt wurde. Die erste Version wurde 2017 veröffentlicht; seitdem wird es nicht mehr gepflegt. Es unterstützt keine modernen Python-Versionen, enthält zahlreiche Fehler und ist in seiner Funktionalität sowie seiner Fähigkeit, verwundbare NGINX-Konfigurationen zu erkennen, eingeschränkt. Wenn man das ursprüngliche Gixy heute auf einem modernen System ausführt, erhält man den folgenden Fehler:
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 ist daher ein Fork, der Unterstützung für moderne Systeme, neue Prüfungen, Leistungsverbesserungen, Härtungsempfehlungen sowie moderne Python- und NGINX-Versionen bietet.
gixy-ng?Gixy-Next ist eigentlich ein Fork von gixy-ng, welches selbst ein Fork des ursprünglichen gixy war. Gixy-Next wurde erstellt, nachdem der Betreuer von gixy-ng begann, große Mengen KI-gestützter Änderungen und automatisch generierten Code zu produzieren, der sowohl unüberprüfbar groß als auch fehlerhaft war.
Nach einiger Zeit begann der Betreuer von gixy-ng, KI-generierte Änderungen in die Codebasis einzubringen, die offensichtliche Regressionen verursachten, kritisches Verhalten des Tools brachen (was jedem Nutzer des Tools aufgefallen wäre), zufällige Artefakte der KI-Werkzeuge hinzufügten und Code einführten, der schlicht nicht das tat, was er tun sollte. Am wichtigsten: Der Betreuer hat außerdem Marketing für sein Unternehmen zu sämtlicher Dokumentation, sämtlicher Ausgabe und dem gesamten Quellcode von gixy-ng hinzugefügt.
Mit anderen Worten: Der Betreuer von gixy-ng nahm das ursprüngliche gixy, beauftragte eine KI mit Änderungen, führte eine Reihe von Fehlern (und anderen KI-Müll) ein und fügte dem Code dann Werbung hinzu. Er nahm auch Beiträge in Form von Merge Requests an, entfernte jedoch die Autoreninformationen (siehe diesen Beitrag und diesen Beitrag).
Gixy-Next konzentriert sich darauf, die Qualität wiederherzustellen, und wurde an NGINX-Konfigurationen mit fast 100.000 Zeilen in der Praxis erprobt. Es behebt Fehler und Fehlkennungen, die durch die in gixy-ng eingeführten Änderungen verursacht wurden, entfernt Artefakte/Müll der KI-Werkzeuge und bemüht sich, die Codebasis überprüfbar und wartbar zu halten. Dieser Fork richtet sich an alle, die an sauberem Code und langfristiger Wartbarkeit interessiert sind.
worker_processes