
Questo repository fornisce una correzione completa di sicurezza per le vulnerabilità di negazione del servizio e allocazione di risorse senza limiti o limitazione di velocità segnalate in CVE-2025-52999, GHSA-2m67-wjpj-xhg9 e sonatype-2022-6438, mantenendo la piena compatibilità con jackson‑core 2.13.5.
Questo branch (2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9) contiene una remediazione completa delle vulnerabilità di denial-of-service (DoS) e allocazione di risorse senza limiti o limitazione che colpiscono jackson-core 2.13.5. Introduce l'API StreamReadConstraints —
allineata con l'API introdotta in jackson-core 2.15.0 ma estesa con una copertura parser più ampia
e ulteriori protezioni contro vettori di attacco — affrontando un attacco di esaurimento della profondità di annidamento
(CVE-2025-52999), allocazione di risorse senza limiti o limitazione (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924), un bypass del vincolo di lunghezza del documento (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9), e un attacco di esaurimento della lunghezza dei token numerici (Sonatype-2022-6438) rimanendo compatibile con la superficie API pubblica di jackson-core versione 2.13.5.
| Branch | Vulnerabilità Affrontate |
|---|---|
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 | Tutte le precedenti + GHSA-2m67-wjpj-xhg9 (bypass vincolo lunghezza documento) |
Il branch originale (2.13.5-CVE-2025-52999-sonatype-2022-6438) rimuove tre vulnerabilità
ed è preservato sul remote sasso. Questo branch lo estende con la remediazione aggiuntiva di
GHSA-2m67-wjpj-xhg9,
che impone maxDocumentLength in tutti i percorsi del parser.
| ID | Tipo | Gravità | CVSS | Fix a monte |
|---|---|---|---|---|
| CVE-2025-52999 | Denial of Service — profondità di annidamento illimitata | Alta | 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 | Denial of Service — lunghezza token numerici illimitata | Alta | 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 | Allocazione di risorse senza limiti o limitazione | Alta | 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 o superiore. |
| SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9 | Allocazione di risorse senza limiti o limitazione — bypass vincolo lunghezza documento | Alta | 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 o superiore. |
| Versione | CVE-2025-52999 | Sonatype-2022-6438 / SNYK-JAVA-COMFASTERXMLJACKSONCORE-7569538 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 |
|---|---|---|---|---|
| 2.13.5 | Vulnerabile | Vulnerabile | Vulnerabile | Vulnerabile |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438 | Remediata | Remediata | Remediata | Vulnerabile |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9 | Remediata | Remediata | Remediata | Remediata |
| 2.14.x | Vulnerabile | Vulnerabile | Vulnerabile | Vulnerabile |
| 2.15.x | Remediata | Remediata | Vulnerabile | Vulnerabile |
| 2.16.x | Remediata | Remediata | Vulnerabile | Vulnerabile |
| 2.17.x | Remediata | Remediata | Vulnerabile | Vulnerabile |
| 2.18.6+ | Remediata | Remediata | Remediata | Vulnerabile |
| 2.18.7+ | Remediata | Remediata | Remediata | Remediata |
| 2.21.1+ | Remediata | Remediata | Remediata | Vulnerabile |
| 2.21.2+ | Remediata | Remediata | Remediata | Remediata |
Voce NVD
| Campo | Valore |
|---|---|
| ID CVE | CVE-2025-52999 |
| Pubblicato | 2025-06-25 |
| Ultima Modifica | 2025-06-26 |
| Fonte (CNA) | GitHub, Inc. |
| Punteggio CVSS v4.0 | 8.7 ALTA — 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 — Buffer Overflow basato su Stack |
| Avviso GitHub | GHSA-h46c-h94j-95f3 |
| PR Fix a monte | jackson-core#943 |
Descrizione NVD Ufficiale
jackson-core contiene astrazioni di base del parser e generatore incrementale di basso livello ("streaming") utilizzate da Jackson Data Processor. Nelle versioni precedenti alla 2.15.0, se un utente analizza un file di input e questo contiene dati profondamente annidati, Jackson potrebbe lanciare una
StackOverflowErrorse la profondità è particolarmente grande. jackson-core 2.15.0 contiene un limite configurabile per quanto in profondità Jackson attraverserà in un documento di input, con un valore predefinito di profondità consentita di 1.000. jackson-core lancerà unaStreamConstraintsExceptionse il limite viene raggiunto. jackson-databind beneficia anche di questa modifica poiché utilizza jackson-core per analizzare input JSON. Come workaround, gli utenti dovrebbero evitare di analizzare file di input da fonti non attendibili.
Workaround: evitare di analizzare input JSON da fonti non attendibili fino a quando la versione remediata non viene distribuita.
Causa principale: Prima della 2.15.0, JsonParser non imponeva alcun limite a quanto profondamente annidato potesse essere un documento JSON.
Ogni token di array [ o oggetto { causava la allocazione di un nuovo nodo di contesto sull'heap e l'incremento di una catena di riferimenti tramite JsonReadContext.createChildArrayContext() / createChildObjectContext(). Un attaccante può creare un documento con decine di migliaia di livelli annidati, causando l'esaurimento dello stack del thread o della memoria heap della Java Virtual Machine.
Percorso di codice vulnerabile: