العودة إلى التحديثات
New releaseAug 2, 2026

Gixy-Next v0.6.0

Gixy-Next: ماسح أمان تهيئة NGINX ومدقق الأداء

مشاركة

Gixy-Next: ماسح أمان تكوينات NGINX لعمليات التدقيق الأمني

نظرة عامة

شعار Gixy-Next

Gixy-Next (Gixy) هو ماسح أمان لتكوينات NGINX وأداة تقوية (hardening) مفتوحة المصدر، يقوم بتحليل nginx.conf الخاص بك تحليلًا ثابتًا لاكتشاف أخطاء الإعدادات الأمنية، وفجوات التقوية، ومزالق الأداء الشائعة قبل وصولها إلى بيئة الإنتاج. إنه فرع (fork) مُصان بنشاط من Gixy التابع لشركة Yandex. الكود المصدري لـ Gixy-Next متاح على GitHub.

يمكن أيضًا تشغيل Gixy-Next في المتصفح عبر هذه الصفحة. لا حاجة إلى التنزيل؛ يمكنك فحص تكويناتك على الموقع (محليًا، باستخدام WebAssembly).

البداية السريعة

يتم توزيع Gixy-Next (واجهة سطر الأوامر 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.

افحص ملف تكوين محلي عن طريق تركيبه (mount) داخل الحاوية:

# 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. يمكنك أيضًا العثور على مزيد من المعلومات في دليل الاستخدام.

خيارات التكوين والإضافات

تُتيح بعض الإضافات خيارات يمكنك ضبطها عبر خيارات سطر الأوامر أو ملف تكوين. يمكنك قراءة المزيد حول ذلك في دليل التكوين.

Gixy-Next لأمن NGINX والامتثال

على عكس تشغيل nginx -t الذي يتحقق من التركيب (syntax) فقط، يقوم Gixy-Next فعليًا بتحليل تكوينك واكتشاف الحالات غير المحصّنة والثغرات الأمنية.

باستخدام Gixy-Next، يمكنك إجراء مراجعة أمنية آلية لتكوين NGINX يمكن تشغيلها محليًا عند كل تغيير، سواء لأغراض التدقيق أو الامتثال أو الاختبار العام، مما يساعد على إنتاج نتائج قابلة للتنفيذ تمنع خوادم NGINX غير المستقرة/البطيئة، وتقلل المخاطر الناجمة عن التوجيهات غير الآمنة والإعدادات الافتراضية غير الآمنة.

المساهمة

يتم الحفاظ على Gixy-Next بواسطة Joshua Rogers، لكن المساهمات مرحب بها دائمًا! يمكنك مساعدتنا بطرق مختلفة، مثل:

  • الإبلاغ عن الأخطاء.
  • اقتراح إضافات جديدة للكشف.
  • تحسين التوثيق.
  • إصلاح الكود وإعادة هيكلته وتحسينه وكتابة كود جديد.

قبل تقديم أي تغييرات عبر pull requests، يرجى قراءة مستند إرشادات المساهمة، المساهمة في Gixy-Next.

الصفحة الرئيسية الرسمية لـ Gixy-Next هي https://gixy.io/. ستنعكس أي تغييرات على التوثيق في Gixy-Next تلقائيًا على ذلك الموقع.

يمكن العثور على الكود المصدري على https://github.com/MegaManSec/Gixy-Next.

ما هو Gixy؟ (خلفية)

Gixy هو محلل تكوينات NGINX تم تطويره في الأصل بواسطة Andrew Krasichkov من Yandex. صدر لأول مرة في عام 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 هو فرع (fork) يضيف دعمًا للأنظمة الحديثة، ويضيف فحوصات جديدة، وتحسينات في الأداء، واقتراحات تقوية، ودعمًا لإصدارات Python وNGINX الحديثة.

لماذا ليس gixy-ng؟

Gixy-Next هو في الواقع فرع من gixy-ng، والذي كان بدوره فرعًا من gixy الأصلي. تم إنشاء Gixy-Next بعد أن بدأ مُصان gixy-ng في إنتاج كميات كبيرة من التغييرات المدعومة بالذكاء الاصطناعي وكود مُولّد تلقائيًا، وكان كبيرًا بشكل يتعذر مراجعته ومعطوبًا في الوقت نفسه.

بعد فترة، بدأ مُصان gixy-ng في إضافة تغييرات مولّدة بالذكاء الاصطناعي إلى قاعدة الكود، مما أدخل تراجعات واضحة، وكسر سلوكًا حاسمًا في الأداة (وهو ما كان سيلاحظه أي مستخدم للأداة)، وأضاف بقايا أدوات ذكاء اصطناعي عشوائية، وأدخل كودًا لم يفعل ببساطة ما كان من المفترض أن يفعله. والأهم من ذلك، أن المُصان أضاف أيضًا تسويقًا لأعماله إلى جميع التوثيق، وجميع المخرجات، وجميع الكود المصدري لـ gixy-ng.

بعبارة أخرى، أخذ مُصان gixy-ng الأداة gixy الأصلية، وطلب من الذكاء الاصطناعي إجراء تغييرات، وأدخل مجموعة من الأخطاء (وغيرها من مخرجات الذكاء الاصطناعي الرديئة)، ثم أضاف إعلانات إلى الكود. كما كان يقبل المساهمات على شكل merge requests، لكنه كان يزيل معلومات المؤلف (انظر هذا المنشور وهذا المنشور).

يركز Gixy-Next على استعادة الجودة، وقد خضع لاختبارات فعلية على تكوينات NGINX يبلغ طولها نحو 100,000 سطر. يصلح الأخطاء وسوء الاكتشاف التي أدخلتها التغييرات في gixy-ng، ويزيل بقايا/نفايات أدوات الذكاء الاصطناعي، ويحاول إبقاء قاعدة الكود قابلة للمراجعة والصيانة. هذا الفرع مخصص لمن يهتمون بالكود النظيف وقابلية الصيانة على المدى الطويل.

الفئات