
CVE-2026-2332 و4 ثغرات Jetty أخرى لعام 2026: أيّها يصيب إصدار Jetty (أو Spring Boot) لديك، وهل النسخة المُصلَّحة التي تسمّيها Jetty موجودة أصلًا على Maven Central؟ بالنسبة لخطوط 9.4/10/11 التي انتهى دعمها، الجواب هو 'راجع التفاصيل للتوفّر' = 404.
أي من هذه الثغرات الست لعام 2026 أصابت نسختك من Jetty (أو Jetty المُضمَّن مع Spring Boot) — وهل النسخة التي يطلب منك المسؤولون الترقية إليها موجودة فعلاً على Maven Central؟
المحور الأساسي هو CVE-2026-2332 (GHSA-355h-qmc2-wpwf، high / CVSS v3 7.4): تهريب الطلبات المُجزَّأة (chunked request smuggling) في jetty-http.
في 2026-09-17 أصدر المسؤولون أيضاً الثغرة CVE-2026-19203 من العائلة نفسها (تهريب LF EXT.TERM، high / CVSS v4 8.3): تغطيتها على خط 9.4 تمتد حتى 9.4.63،
ويطلب منك المسؤولون الترقية إلى 9.4.64 — لكن 9.4.64 أيضاً 404 على Central.
أقوى حقيقة: النسخ المُصلَحة العلنية للخطوط القديمة الثلاثة 9.4 / 10 / 11 غير موجودة إطلاقاً — فصفحة الأمان الرسمية تكتب بجانب كل منها
see details for availability (= دعم تجاري)، وتلك الأرقام من الإصدارات كلها 404 عند اختبارها فعلياً على Maven Central.
java -jar jetty-line-check.jar /path/to/jetty # 解压部署的 Jetty(扫 lib/*.jar)
java -jar jetty-line-check.jar app.war # war
java -jar jetty-line-check.jar app.jar # Spring Boot fat jar
java -jar jetty-line-check.jar --table # 只看六条 CVE × 模块 × 版本线的判定表
java -jar jetty-line-check.jar --utf8 ... # Windows 控制台中文乱码时加
معيار المشروع الشقيق tomcat-line-check هو «هل يوجد في الـ jar صنف إصلاح معيّن»، لأن إصلاح Tomcat ذاك أضاف صنفًا جديدًا.
بنود Jetty هذه لا تصلح لذلك. الثغرة الرئيسية CVE-2026-2332، إصلاحها عدّل جسم الدالة في HttpParser ولم يضف أي صنف
(تم التأكد قبل البناء عبر gh api compare + javap). لذا لا يمكن أن يكون المعيار إلا:
إحداثياتك الكاملة + خط إصدارك، أي ثغرات CVE تصيبها؛ وهل الإصدار المُصلح الذي سمّته الجهة الرسمية موجود فعلًا على Maven Central.
يُولَّد جدول الحكم بواسطة tools/gen_table.py من حقل vulnerabilities[] في ست نشرات GitHub الأمنية + فحص HEAD لـ jar الحقيقي على Maven Central،
ويرفض إخراج الجدول إن لم تجتز سبع مجموعات من التأكيدات (الضابط الموجب / الادعاء الجوهري / الإصدار الأخير للخط القديم / الحارس / البنية الرئيسية / الوحدات المنفصلة / التصنيف).
| الحالة الثلاثية | المعنى |
|---|---|
PUBLIC | سمّت النشرة الأمنية إصدارًا مُصلحًا، وهو موجود فعلًا على Maven Central —— قابل للترقية علنًا |
404 | سمّت النشرة الأمنية إصدارًا مُصلحًا، لكنه يعطي 404 على Central —— صفحة الأمان الرسمية تكتب see details for availability (دعم تجاري) |
无 | النشرة الأمنية لم تقدّم إطلاقًا إصدارًا مُصلحًا لهذا الخط (first_patched_version فارغ) —— إصلاح هذا الخط يتطلب ترقية عبر إصدار رئيسي |
تلك الكتلة الكاملة من 404 و无 في الخطوط القديمة (9.4 / 10.0 / 11.0) هي جوهر قيمة هذه الأداة. شغّل --table لرؤية الصورة الكاملة.
org.eclipse.jetty، سنة 2026)| CVE | الوحدة | التقييم | بجملة واحدة |
|---|---|---|---|
| CVE-2026-2332 | jetty-http | high / v3 7.4 | ⭐ الرئيسي: يُعامَل \r\n داخل quoted-string في chunked كأنه نهاية ترويسة المقطع → تهريب الطلبات (CWE-444) |
| CVE-2026-19203 | jetty-http | high / v4 8.3 | ⭐ تكملة من نفس عائلة 2332 (09-17): يُعامَل \n (LF) داخل امتداد المقطع كأنه نهاية ترويسة المقطع → تهريب (LF EXT.TERM)؛ خط 9.4 يغطي حتى 9.4.63 |
| CVE-2026-5795 | jaspi (انقسم 12.x إلى ee8/9/10/11-jaspi) | high / v3 7.4 | ThreadLocal في JASPI لم يُنظَّف → تجاوز الصلاحيات |
| CVE-2026-6790 | jetty-server | medium / v3 5.3 | التباس بين Host و:authority في HTTP/2·3 |
| CVE-2026-10050 | jetty-security (أُضيف ee8/9-security في 12.x) | high / v4 8.7 | معالجة ISO-8859-1 في مصادقة Digest |
| CVE-2025-11143 | jetty-http | low / v3 3.7 | اختلاف في تحليل URI |
🔴 سطح التأثر في ثغرتي التهريب (2332 و19203) يصمد (كلتاهما تقع على المسار الرئيسي للمعالجة الافتراضية ServerConnector / HttpParser،
ولا تتطلب تفعيل أي ميزة محددة). أما الأربع الأخرى فتُعامل كسطر واحد في جدول الحكم فقط:
--table وفي مخرجات الفحص)، فلا تُطلق إنذارًا كاذبًا على النشر الافتراضي. أما خطوط 9.4 / 10 / 11 / 12.0 فتُصاب افتراضيًا.CVE-2026-10050 (Digest) سطح تأثرها ضيق جدًا —— لا تُمسّ إلا بتفعيل مصادقة Digest صراحةً، فلا تجعلها نقطة البيع الرئيسية.CVE-2026-6790 هي medium وCVE-2025-11143 هي low —— لا يجوز وصفهما عمومًا بـ«عالية الخطورة».vulnerabilities الخاصة بها فارغة،
وDependabot يُبلّغ «توجد هذه الثغرة» لكنه لا يعطي «إلى أي إصدار ترفع»؛ النطاق موجود فقط في النشرة على مستوى المستودع. بمجرد أن تُكمِل القاعدة العالمية هذا النقص، يجب تعديل هذه العبارة.see details for availability، وانتهى الأمر عند هذا الحد.GHSA-p2j5-5566-vpv9 العام فارغ)GHSA-r7p8-xq5m-436c · GHSA-7p3p-8qv8-m2vh · GHSA-2fvj-hgj9-j2gr · GHSA-wjpw-4j6x-6rwhsee details for availability):https://jetty.org/security.htmlpython tools/gen_table.py --dry # 只跑断言,不写文件
python tools/gen_table.py # 断言全过才写 CveTable.java
python tools/recheck_before_publish.py # 发文当天重跑,主张失效就改文案别改判据
mvn package # 需要 JDK 17;运行时零依赖(JUnit 仅测试期)
| الرمز | المعنى |
|---|---|
0 | اكتمل الفحص، وتمت قراءة كل ملف فعليًا |
2 | خطأ في الاستخدام (لم يتم إعطاء مسار) |
4 | هناك ملف تعذّرت قراءته —— ليس ملف zip، أو المحتوى مقتطع، أو فشلت القراءة |
🔴 سبب وجود 4: الأثر المكتوب موجّه للبشر، بينما تنظر CI والسكربتات إلى رمز الخروج. من دونه، سيتحول ملف jar تالف / مشفّر / غير مكتمل التنزيل
بصمت إلى عبارة «لم يتم العثور على مشاكل» —— «لا أستطيع قراءته» و«أنت آمن» يجب أن تكونا جملتين منفصلتين.
⚠️ ملف jar فارغ صالح (سجل EOCD بحجم 22 بايت) لا يُعدّ غير قابل للقراءة، ولن يؤدي إلى تفعيل 4.
MIT