Назад к обновлениям
New releaseSep 14, 2026

Gixy-Next v0.7.1

Gixy-Next: Сканер безопасности конфигурации NGINX и проверка производительности

Поделиться

Gixy-Next: сканер безопасности конфигураций NGINX для аудита безопасности

Обзор

Gixy-Next Mascot Logo

Gixy-Next (Gixy) — это открытый сканер безопасности и инструмент усиления защиты конфигураций NGINX, который статически анализирует ваш nginx.conf для выявления ошибок конфигурации безопасности, пробелов в усилении защиты и распространённых проблем производительности до того, как они попадут в продакшен. Это активно поддерживаемый форк Gixy от Яндекса. Исходный код Gixy-Next доступен на GitHub.

Gixy-Next также можно запустить в браузере на этой странице. Загрузка не требуется; вы можете сканировать свои конфигурации на сайте (локально, с использованием WebAssembly).

Быстрый старт

Gixy-Next (CLI gixy или gixy-next) распространяется на PyPI. Вы можете установить его с помощью pip или uv:

# pip
pip3 install gixy-next
# uv
uv pip install gixy-next

Затем вы можете запустить его:

# gixy defaults to reading /etc/nginx/nginx.conf
gixy
# But you can also specify a path to the configuration
gixy /opt/nginx.conf

Вы также можете экспортировать конфигурацию NGINX в один дамп-файл (см. nginx -T Live Configuration 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 -

Веб-сканер

Вместо загрузки и локального запуска Gixy-Next вы можете использовать эту веб-страницу и сканировать конфигурацию прямо из веб-браузера (локально, с использованием WebAssembly).

Сканирование с помощью Docker

Gixy-Next доступен в виде Docker-образа из Docker Hub или GitHub Registry.

Сканируйте локальный файл конфигурации, смонтировав его в контейнер:

# 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

Сканирование дампа живой конфигурации 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

Сканирование из 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 может обнаруживать широкий спектр ошибок конфигурации безопасности и производительности NGINX в nginx.conf и подключаемых файлах конфигурации. Поддерживаются следующие плагины:

Что-то не обнаружено? Пожалуйста, откройте issue на GitHub с описанием того, чего не хватает!

Использование (флаги)

По умолчанию gixy читает системную конфигурацию NGINX из /etc/nginx/nginx.conf. Вы также можете указать расположение, передав его в gixy:

# Analyze the configuration in /opt/nginx.conf
gixy /opt/nginx.conf

Вы можете запустить определённое подмножество проверок с помощью --tests:

# Only run these checks
gixy --tests http_splitting,ssrf,version_disclosure

Или пропустить несколько шумных проверок с помощью --skips:

# Run everything except these checks
gixy --skips low_keepalive_requests,worker_rlimit_nofile_vs_connections

Чтобы сообщать только о проблемах определённой серьёзности или выше, используйте накопительный флаг -l:

# -l for LOW severity issues and higher, -ll for MEDIUM and higher, and -lll for only HIGH severity issues
gixy -ll

По умолчанию вывод gixy имеет ANSI-цвета; лучше всего просматривать в совместимом терминале. Вы можете использовать флаг --format (-f) со значением text, чтобы получить вывод без цветов:

$ 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

Вы также можете использовать -f json, чтобы получить воспроизводимый машиночитаемый вывод JSON:

$ 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."}]

Вы также можете использовать -f sarif, чтобы получить лог SARIF 2.1.0, например, для загрузки в сканирование кода GitHub:

# Write a SARIF report to a file, e.g. for `github/codeql-action/upload-sarif`
gixy -f sarif -o gixy-results.sarif

Больше флагов для использования можно найти, передав --help в gixy. Дополнительную информацию также можно найти в Руководстве по использованию.

Конфигурация и параметры плагинов

Некоторые плагины предоставляют параметры, которые можно задать через флаги CLI или файл конфигурации. Подробнее о них можно прочитать в Руководстве по конфигурации.

Gixy-Next для безопасности и соответствия требованиям NGINX

В отличие от запуска nginx -t, который проверяет только синтаксис, Gixy-Next фактически анализирует вашу конфигурацию и обнаруживает неукреплённые экземпляры и уязвимости.

С Gixy-Next вы можете выполнять автоматизированный аудит безопасности конфигурации NGINX, который может запускаться локально при каждом изменении — будь то для аудита, соответствия требованиям или общего тестирования, — помогая получать практически применимые результаты, которые помогают предотвратить нестабильные/медленные серверы NGINX и снизить риск от небезопасных директив и небезопасных настроек по умолчанию.

Участие в разработке

Gixy-Next поддерживается Joshua Rogers, но вклад всегда приветствуется! Вы можете помочь нам разными способами, например:

  • Сообщать об ошибках.
  • Предлагать новые плагины для обнаружения.
  • Улучшать документацию.
  • Исправлять, рефакторить, улучшать и писать новый код.

Перед отправкой любых изменений в pull request, пожалуйста, прочитайте документ с рекомендациями по участию, Contributing to Gixy-Next.

Официальная домашняя страница Gixy-Next — https://gixy.io/. Любые изменения в документации Gixy-Next автоматически отражаются на этом сайте.

Исходный код можно найти по адресу https://github.com/MegaManSec/Gixy-Next.

Что такое Gixy? (Предыстория)

Gixy — это анализатор конфигураций NGINX, который был изначально разработан Эндрю Красичковым из Яндекса. Он был впервые выпущен в 2017 году и с тех пор остался без поддержки. Он не поддерживает современные версии Python, содержит множество ошибок и ограничен в своей функциональности и способности обнаруживать уязвимые конфигурации NGINX. Запуск оригинального Gixy сегодня на современной системе приведёт к следующей ошибке:

  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 — это форк, который добавляет поддержку современных систем, новые проверки, улучшения производительности, рекомендации по усилению защиты и поддержку современных версий Python и NGINX.

Почему не gixy-ng?

Gixy-Next на самом деле является форком gixy-ng, который, в свою очередь, был форком оригинального gixy. Gixy-Next был создан после того, как мейнтейнер gixy-ng начал создавать большие объёмы изменений с помощью ИИ и автогенерированного кода, которые были как необозримо большими, так и сломанными.

Через некоторое время мейнтейнер gixy-ng начал коммитить сгенерированные ИИ изменения в кодовую базу, которые вносили очевидные регрессии, ломали критическое поведение инструмента (что заметил бы любой, кто им пользуется), добавляли случайные артефакты ИИ-инструментов и вносили код, который просто не делал того, что должен был делать. Самое главное, мейнтейнер также добавил рекламу своего бизнеса во всю документацию, весь вывод и весь исходный код gixy-ng.

Другими словами, мейнтейнер gixy-ng взял оригинальный gixy, попросил ИИ внести изменения, внёс кучу багов (и другого ИИ-мусора), а затем добавил рекламу в код. Он также принимал вклад в виде merge request'ов, но удалял информацию об авторе (см. этот пост и этот пост).

Gixy-Next сосредоточен на восстановлении качества и был проверен в боевых условиях на конфигурациях NGINX длиной почти 100 000 строк. Он исправляет баги и ошибки обнаружения, внесённые изменениями в gixy-ng, удаляет артефакты/мусор ИИ-инструментов и старается поддерживать кодовую базу обозримой и поддерживаемой. Этот форк — для тех, кто заинтересован в чистом коде и долгосрочной поддерживаемости.

Категории