
يوفر هذا المستودع معالجة أمنية شاملة لثغرات حرمان الخدمة وتخصيص الموارد دون حدود أو تقييد التي تم الإبلاغ عنها في CVE-2025-52999 وGHSA-2m67-wjpj-xhg9 وsonatype-2022-6438، مع الحفاظ على التوافق الكامل مع jackson‑core 2.13.5.
يحتوي هذا الفرع (2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9) على معالجة أمنية شاملة لثغرات حجب الخدمة (DoS) واستنزاف الموارد دون حدود أو تقييد التي تستهدف jackson-core 2.13.5. يقدّم واجهة StreamReadConstraints API — المتوافقة مع الواجهة المقدمة في jackson-core 2.15.0 ولكن مع توسيع تغطية المحلّل وإضافات حماية إضافية من نواقل الهجوم — لمعالجة هجوم استنزاف عمق التداخل (CVE-2025-52999)، واستنزاف الموارد دون حدود أو تقييد (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924)، وتجاوز قيد طول المستند (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9)، وهجوم استنزاف طول الرمز الرقمي (Sonatype-2022-6438) مع بقائه متوافقًا مع سطح واجهة API العامة لإصدار jackson-core 2.13.5.
| الفرع | الثغرات التي تمت معالجتها |
|---|---|
2.13.5-CVE-2025-52999-sonatype-2022-6438 | CVE-2025-52999, Sonatype-2022-6438, SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924 |
2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9 | جميع ما سبق + GHSA-2m67-wjpj-xhg9 (تجاوز قيد طول المستند) |
الفرع الأصلي (2.13.5-CVE-2025-52999-sonatype-2022-6438) يعالج ثلاث ثغرات
وقد تم الحفاظ عليه على الاستضافة البعيدة sasso. يوسّع هذا الفرع ما سبق بالمعالجة الإضافية لـ
GHSA-2m67-wjpj-xhg9،
والذي يفرض maxDocumentLength عبر جميع مسارات المحلّل.
| المعرف | النوع | الخطورة | CVSS | الإصلاح الرسمي |
|---|---|---|---|---|
| CVE-2025-52999 | حجب الخدمة — عمق تداخل غير محدود | عالية | 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) | jackson-core 2.15.0 |
| Sonatype-2022-6438 / SNYK-JAVA-COMFASTERXMLJACKSONCORE-7569538 | حجب الخدمة — طول رمز رقمي غير محدود | عالية | 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) | jackson-core 2.15.0 |
| SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924 | استنزاف الموارد دون حدود أو تقييد | عالية | 8.7 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) | jackson-core 2.18.6, 2.21.1 أو أحدث |
| SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9 | استنزاف الموارد دون حدود أو تقييد — تجاوز قيد طول المستند | عالية | 8.7 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) | jackson-core 2.18.7, 2.21.2 أو أحدث |
| الإصدار | CVE-2025-52999 | Sonatype-2022-6438 / SNYK-JAVA-COMFASTERXMLJACKSONCORE-7569538 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 |
|---|---|---|---|---|
| 2.13.5 | متأثر | متأثر | متأثر | متأثر |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438 | معالَج | معالَج | معالَج | متأثر |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9 | معالَج | معالَج | معالَج | معالَج |
| 2.14.x | متأثر | متأثر | متأثر | متأثر |
| 2.15.x | معالَج | معالَج | متأثر | متأثر |
| 2.16.x | معالَج | معالَج | متأثر | متأثر |
| 2.17.x | معالَج | معالَج | متأثر | متأثر |
| 2.18.6+ | معالَج | معالَج | معالَج | متأثر |
| 2.18.7+ | معالَج | معالَج | معالَج | معالَج |
| 2.21.1+ | معالَج | معالَج | معالَج | متأثر |
| 2.21.2+ | معالَج | معالَج | معالَج | معالَج |
إدخال NVD
| الحقل | القيمة |
|---|---|
| معرف CVE | CVE-2025-52999 |
| تاريخ النشر | 2025-06-25 |
| آخر تعديل | 2025-06-26 |
| المصدر (CNA) | GitHub, Inc. |
| نقاط CVSS v4.0 | 8.7 عالية — CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
| CWE | CWE-121 — تجاوز سعة المخزن المؤقت المعتمد على المكدس (Stack-based Buffer Overflow) |
| استشارة GitHub | GHSA-h46c-h94j-95f3 |
| PR الإصلاح الرسمي | jackson-core#943 |
الوصف الرسمي من NVD
jackson-core يحتوي على التجريدات الأساسية منخفضة المستوى ("التدفقية") للمحلّل والمولّد المستخدمة من قِبل معالج بيانات Jackson. في الإصدارات السابقة لـ 2.15.0، إذا قام المستخدم بتحليل ملف إدخال يحتوي على بيانات متداخلة بعمق كبير، فقد ينتهي الأمر بـ Jackson برمي
StackOverflowErrorإذا كان العمق كبيرًا بشكل خاص. يحتوي jackson-core 2.15.0 على حد قابل للتهيئة لمدى العمق الذي سيتنقّله Jackson داخل مستند الإدخال، مع قيمة افتراضية تسمح بعمق 1,000. سيقوم jackson-core برميStreamConstraintsExceptionإذا تم بلوغ الحد. كما يستفيد jackson-databind من هذا التغيير لأنه يستخدم jackson-core لتحليل مدخلات JSON. كحل بديل، يجب على المستخدمين تجنب تحليل ملفات الإدخال من مصادر غير موثوقة.
الحل المؤقت: تجنب تحليل مدخلات JSON من مصادر غير موثوقة حتى يتم نشر الإصدار المعالَج.
السبب الجذري: قبل 2.15.0، لم يفرض JsonParser أي حد على مدى عمق تداخل مستند JSON.
كل رمز [ لمصفوفة أو { لكائن كان يتسبب في قيام JsonReadContext.createChildArrayContext() /
createChildObjectContext() بتخصيص عقدة سياق جديدة على الكومة وزيادة سلسلة مراجع.
يمكن للمهاجم صياغة مستند يحتوي على عشرات الآلاف من المستويات المتداخلة، مما يتسبب في استنفاد
الجهاز الافتراضي Java لذاكرة مكدس الخيط أو ذاكرة الكومة.
مسار الكود المعرّض:
يتم الوصول إلى نفس الفحص المفقود عبر كل من تطبيقات المحلّل الأربعة:``` JsonParser.nextToken() // common entry point │ ├─ ReaderBasedJsonParser → _parsePunctuationMark() ├─ UTF8StreamJsonParser → _parsePunctuationMark() ├─ UTF8DataInputJsonParser → _parsePunctuationMark() └─ NonBlockingJsonParserBase → _startArrayScope() / _startObjectScope() │ ▼ _parsingContext.createChildArrayContext() // '[' encountered _parsingContext.createChildObjectContext() // '{' encountered ⚠ no depth check — context chain grows without bound
جميع تطبيقات `JsonParser` الأربعة تشترك في هذا العيب. ويمكن استغلال الهجوم بالتساوي عبر أيٍّ منها — سواء وصل الإدخال عبر `InputStream` أو `Reader` أو `DataInput` أو واجهة برمجة التطبيقات غير المتزامنة للتغذية غير الحاجبة (non-blocking feeder API).
**نواقل الهجوم:**