العودة إلى التحديثات
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 بشكل ثابت للكشف عن الأخطاء الأمنية في الإعدادات، وثغرات التقوية، والمزالق الشائعة في الأداء قبل وصولها إلى بيئة الإنتاج. وهو 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 الذي يتحقق فقط من الصياغة، يقوم 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 هو في الواقع fork من gixy-ng، الذي كان بدوره fork من gixy الأصلي. تم إنشاء Gixy-Next بعد أن بدأ مُصان gixy-ng في إنتاج كميات كبيرة من التغييرات المدعومة بالذكاء الاصطناعي والكود المُولَّد تلقائيًا الذي كان كبيرًا بشكل غير قابل للمراجعة بالإضافة إلى كونه معطوبًا.

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

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

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

الفئات