
إثبات مفهوم للاستغلال، وتحليل السبب الجذري، وترقيع من سطر واحد لـ CVE-2026-97629، وهو تزوير تذاكر جلسة TLS في nginx يتجاوز مصادقة شهادة العميل (mTLS).
سطر واحد من لغة C. جلسة TLS مزوّرة واحدة. تم اكتشافها وإثباتها من البداية إلى النهاية، وتنسيقها مع إصلاح بواسطة PhiNode Labs.
استغلال إثبات مفهوم، وتحليل السبب الجذري، والتصحيح المكوّن من سطر واحد، وأدلة إعادة الإنتاج الخاصة بـ CVE-2026-97629، وهو تزوير تذكرة جلسة TLS في nginx يمكنه تجاوز مصادقة شهادة العميل (mutual-TLS). تم الإفصاح عنه إلى F5 ضمن الإفصاح المنسّق ويُنسب إلى PhiNode Labs.
اقرأ التحليل الكامل: https://phinode.io/nginx-cve-2026-97629.html
"تُثمّن F5 جهود PhiNode Labs في لفت انتباهنا إلى هذه المشكلة واتباع أعلى معايير الإفصاح المنسّق." — استشارة F5 الأمنية K000162606
| CVE | CVE-2026-97629 |
| الاستشارة | F5 K000162606 · GHSA-862p-pr69-37gq |
| الخطورة | CVSS 3.1 6.5 / CVSS 4.0 8.3 (F5). تصل إلى 10.0 في عمليات نشر mutual-TLS |
| نوع الضعف | CWE-908 — استخدام مورد غير مُهيّأ |
| المكوّن | ngx_http_ssl_module — ngx_ssl_rotate_ticket_keys() |
| المتأثر | nginx 1.23.2 – 1.31.6، وNGINX Plus حتى R37 (37.0.5)، ومنتجات F5 المبنية على nginx |
| الإصلاح | nginx 1.31.7 و1.30.6، وNGINX Plus 37.0.5.1 / 37.1.0.1 |
| الفضل | PhiNode Labs — [email protected] |
لاستئناف اتصالات TLS بسرعة، يختم nginx تذكرة جلسة بمفتاح
دَوّار ويحتفظ بثلاثة مفاتيح من هذا النوع لكل عامل: الحالي، والسابق، والتالي.
أثناء التدوير، نسخ ngx_ssl_rotate_ticket_keys() اثنين فقط من الفتحات الثلاث
إلى كل عامل؛ أما الثالث فلم يُكتب أبدًا بعد بدء التشغيل. في بناء Linux الافتراضي
تكون تلك الذاكرة كلها أصفار — وهي القيمة نفسها المتوقعة في كل
عامل في كل عملية نشر افتراضية.
يفحص رد نداء فك التشفير الفتحات الثلاث جميعها. يمكن للعميل تقديم تذكرة مزوّرة يكون اسم مفتاحها المكوّن من 16 بايت كلها أصفار، فتطابق الفتحة الثالثة غير الملموسة، ويقوم nginx بفك ختمها بمفاتيح AES وHMAC كلها أصفار يمكن لأي شخص تخمينها. من هناك يزوّر المهاجم جلسة صالحة بمفاتيح يختارها ويستأنف اتصالًا مشفّرًا دون إكمال مصافحة حقيقية. وحيث يثق الخادم بشهادة عميل لتحديد من يُسمح له بالدخول، يتم تجاوز ذلك الفحص.
الإصلاح هو حرف واحد:
ngx_memcpy(keys->elts, cache->ticket_keys,
- 2 * sizeof(ngx_ssl_ticket_key_t));
+ 3 * sizeof(ngx_ssl_ticket_key_t));
راجع patch/ للحصول على الفرق الجاهز للتطبيق.
يخدم nginx ما يقارب ثلث جميع مواقع الويب. التأثير الذي تنسبه F5 — تجاوز التحقق من شهادة العميل — يقع بأشد وطأة على TLS المتبادل (mutual TLS): الخدمات المصرفية المفتوحة (PSD2 / FAPI)، وتبادل بيانات الرعاية الصحية، ووظائف شبكة النواة للجيل الخامس (5G)، ومدخل Kubernetes (ingress)، والثقة الصفرية (zero-trust) وأساطيل الأجهزة، حيث تكون الشهادة هي قرار الوصول بأكمله. في تلك عمليات النشر، يُعدّ التزوير تجاوزًا كاملًا لمصادقة العميل، وهو التفسير الأقصى في الخطورة.
كل شيء محلي، على مستمع loopback بشهادة موقّعة ذاتيًا مؤقتة.
راجع poc/ للاطلاع على الاستغلال و**evidence/**
للاطلاع على المخرجات الملتقطة: قبول nginx للمفتاح المكوّن من أصفار فقط، والمصافحة
المختصرة، وقراءة/كتابة كاملة عبر الجلسة المزوّرة (HTTP 404 مفكوك التشفير).
cd poc
python3 make_forged_session.py # patch the session_id_context
python3 forge_ticket.py # -> VERDICT: TICKET ACCEPTED
python3 forge_ticket_full.py # -> full read/write over the forged session
ssl_session_tickets off;ssl_session_ticket_key صريحة تقوم بتدويرها بنفسك.لا يكون الخادم معرّضًا إلا إذا تحققت جميع الشروط التالية: إصدار ضعيف،
وssl_session_cache shared:…، والتذاكر مفعّلة بدون ملف مفتاح، وشهادات
تحدد الوصول.
| التاريخ | الحدث |
|---|---|
| يونيو 2026 | تحدد PhiNode Labs عدم تطابق الفتحة وتثبته من البداية إلى النهاية |
| أغسطس 2026 | تم الإبلاغ إلى F5 SIRT؛ وأُحيل إلى هندسة منتجات NGINX |
| سبتمبر 2026 | تصنفه NGINX PE كضعف أمني |
| 12 أكتوبر 2026 | تم تعيين CVE-2026-97629 (F5 NPS-179) |
| 14 أكتوبر 2026 | تنشر F5 الوثيقة K000162606؛ وتُشحن الإصلاحات في nginx 1.31.7 / 1.30.6 |
يُنشر هذا الإثبات العملي بعد شحن الإصلاح ومع الإصدار المنسّق من F5، ليتمكن المدافعون من التحقق من خوادمهم الخاصة. لا تستخدمه ضد أنظمة لا تملكها أو لا تديرها.
PhiNode Labs مختبر بحثي تطبيقي في تحليل البرامج. نكتشف العيوب التي تتجاوزها أدوات الفحص والنماذج اللغوية — لا سلسلة محقونة، ولا دالة سيئة واضحة، فقط حجم كان يجب أن يكون ثلاثة وكان اثنين — من خلال الاستدلال على ما تحتفظ به ذاكرة البرنامج فعليًا أثناء التشغيل. لا ادعاء بدون دليل.
الكلمات المفتاحية: CVE-2026-97629، nginx، تذكرة جلسة TLS، تزوير تذكرة الجلسة، استئناف الجلسة، TLS المتبادل، mTLS، تجاوز شهادة العميل، ngx_http_ssl_module، ngx_ssl_rotate_ticket_keys، F5، NGINX Plus، إثبات عملي، PoC، استغلال، CWE-908، PhiNode Labs، تحليل البرامج.