
سكربت ماسح ضوئي بلغة بايثون للفحص الآمن لـ CVE-2025-23419
مستودع يحتوي على سكريبت التحقق الآمن لـ CVE-2025-23419، وهي ثغرة متعلقة بـ NGINX و mTLS و استئناف جلسة TLS.
يقوم السكريبت بإجراء فحص استدلالي لتحديد التعرض المحتمل للثغرة، دون تنفيذ استغلال نشط أو محاولة تجاوز المصادقة بشهادة العميل.
الهدف هو دعم الفحص الفني، التحقق الدفاعي، وتحليل التعرض في البيئات المصرح بها.
| CVE | التقنية | النوع | المكون المتأثر |
|---|---|---|---|
CVE-2025-23419 | NGINX | تجاوز محتمل لمصادقة mTLS | استئناف جلسة TLS في virtual hosts |
تؤثر CVE-2025-23419 على السيناريوهات حيث تتشارك عدة server blocks من NGINX نفس عنوان IP والمنفذ، وتستخدم البيئة المصادقة بشهادة العميل، والمعروفة أيضًا باسم mTLS.
في تكوينات معينة، يمكن للمهاجم إعادة استخدام جلسة TLS تم إنشاؤها مسبقًا لتجاوز متطلبات المصادقة بشهادة العميل في سياق virtual host آخر.
ترتبط الثغرة باستخدام استئناف جلسة TLS، خاصةً عندما يكون ssl_session_cache أو ssl_session_tickets ممكّنين.
عمليًا، يعتمد التعرض على مزيج من الإصدار الضعيف، واستخدام TLS 1.3، وتكوين جلسة TLS، ووجود عدة virtual hosts، وتطبيق mTLS في أجزاء محددة من البيئة.
وفقًا للتقارير العامة، المشكلة تؤثر على:
NGINX 1.11.4 والإصدارات الأحدث
عند توفر الشروط التالية:
NGINX مترجم مع OpenSSL
TLS 1.3 ممكّن
استئناف الجلسة ممكّن
استخدام ssl_session_cache أو ssl_session_tickets
عدة server blocks تشارك نفس IP والمنفذ
مصادقة mTLS/شهادة العميل في بعض virtual hosts
تم نشر التصحيح في الإصدارات:
NGINX 1.26.3
NGINX 1.27.4
لذا، إصدار مثل:
nginx/1.24.0
يجب التعامل معه على أنه قد يكون ضعيفًا، طالما أن سيناريو التكوين متوافق مع الثغرة.
هام: الإصدار الضعيف وحده لا يؤكد إمكانية الاستغلال. إنه يشير إلى الحاجة للتحقق من التكوين.
| السكريبت | الهدف | متى يُستخدم |
|---|---|---|
safe-check-CVE-2025-23419.py | إجراء فحص آمن واستدلالي للتعرض المحتمل لـ CVE-2025-23419. | يُستخدم عندما يكون الهدف يعرض NGINX ضعيفًا محتملاً ويوجد اشتباه في استخدام mTLS/استئناف جلسة TLS. |
يقوم السكريبت بإجراء تحقق آمن للحصول على أدلة على الثغرة:
Server؛POSSIVEL أو NAO_INDICADO.هذا السكريبت لا يستغل الثغرة.
إنه لا يحاول:
الهدف هو فقط جمع دلائل تقنية لدعم الفحص والتحقق الدفاعي.
استخدم هذا السكريبت عند وجود واحد أو أكثر من الدلائل التالية:
الخادم يعرض nginx/1.24.0
البيئة تستخدم mTLS
يوجد عدة virtual hosts على نفس IP والمنفذ
يوجد استخدام لـ TLS 1.3
يوجد اشتباه في تمكين ssl_session_cache أو ssl_session_tickets
أداة آلية أشارت إلى CVE-2025-23419
أمثلة على الأهداف المناسبة:
https://api.exemplo.com.br/
https://admin.exemplo.com.br/
https://mtls.exemplo.com.br/
https://gateway.exemplo.com.br/
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --verbose
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --json
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --timeout 10
POSSIVEL
تشير إلى أن السكريبت وجد أدلة متوافقة مع تعرض محتمل لـ CVE-2025-23419.
هذا لا يؤكد إمكانية الاستغلال. يعني أن البيئة تستحق تحليلًا يدويًا لتكوين NGINX والتحقق مع الفريق المسؤول.
مثال على ناتج تفصيلي:
POSSIVEL
nginx_header: nginx/1.24.0
nginx_ver: (1, 24, 0) (vuln? True)
mtls_hint: True
tls: TLSv1.3
resumption_reused: True
other_vhost_no_mtls_hint: True
تساعد هذه البيانات في فهم سبب تصنيف النقطة الطرفية كتعرض محتمل.
NAO_INDICADO
تشير إلى أن السكريبت لم يجد أدلة كافية للإشارة إلى تعرض محتمل في تلك النقطة الطرفية.
هذا لا يضمن الغياب المطلق للثغرة، خاصةً إذا:
Server مخفيًا؛النقاط الرئيسية التي يمكن تعديلها هي:
CERT_ERROR_STATUS = {400, 401, 403, 495, 496}
هذه القائمة تمثل رموز HTTP التي قد تشير إلى فشل متعلق بشهادة العميل المفقودة أو غير الصالحة.
يمكن أيضًا تعديل timeout عبر سطر الأوامر:
--timeout 10
يستخدم السكريبت فقط المكتبات القياسية في بايثون.
التبعيات الرئيسية:
python3
ssl
socket
argparse
urllib
لا حاجة لتثبيت مكتبات خارجية عبر pip.
قم بتحديث NGINX إلى إصدار مصحح، ويفضل 1.26.3 أو 1.27.4 أو أحدث، وفقًا للقناة المستخدمة.
راجع تكوين server blocks التي تشارك نفس IP والمنفذ، خاصةً عند وجود mTLS في جزء فقط من virtual hosts.
قم بتقييم استخدام:
ssl_session_cache
ssl_session_tickets
TLS 1.3
server blocks تشارك IP والمنفذ
mTLS مطبق على virtual hosts محددة
كما يُوصى بعزل السياقات التي تتطلب شهادة عميل والتحقق من تطبيق مصادقة mTLS على virtual host الصحيح.
بالإضافة إلى ذلك، راجع التكوينات في الوكلاء، البوابات، الموازنات، وحدات التحكم بالدخول، وشبكات CDN، لأن المكون الذي ينهي TLS قد لا يكون هو نفسه الذي يستجيب للتطبيق النهائي.
https://mailman.nginx.org/pipermail/nginx-announce/2025/NYEUJX7NCBCGJGXDFVXNMAAMJDFSE45G.html
https://nvd.nist.gov/vuln/detail/CVE-2025-23419
https://ubuntu.com/security/CVE-2025-23419
https://github.com/advisories/GHSA-84xh-pwc6-7g4g
https://access.redhat.com/security/cve/cve-2025-23419
يجب استخدام هذا السكريبت فقط في البيئات المصرح بها.
الغرض منه هو دعم الفحص، التحقق الآمن، اختبار الاختراق المصرح به، التحليل الدفاعي، وتأكيد التعرض التكويني.
استخدامه ضد أنظمة دون إذن محظور.