
Ce dépôt fournit une correction de sécurité complète des vulnérabilités de déni de service et d'allocation de ressources sans limites ou limitation signalées dans CVE-2025-52999, GHSA-2m67-wjpj-xhg9 et sonatype-2022-6438 tout en maintenant une compatibilité totale avec jackson‑core 2.13.5.
Cette branche (2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9) contient une correction de sécurité complète des vulnérabilités de déni de service (DoS) et d'allocation de ressources sans limites ou sans limitation ciblant jackson-core 2.13.5. Elle introduit l'API StreamReadConstraints — alignée avec l'API introduite dans jackson-core 2.15.0 mais étendue avec une couverture de parseur plus large et des protections supplémentaires contre les vecteurs d'attaque — en corrigeant une attaque par épuisement de la profondeur d'imbrication (CVE-2025-52999), une allocation de ressources sans limites ou sans limitation (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924), un contournement de la contrainte de longueur de document (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9) et une attaque par épuisement de la longueur des jetons numériques (Sonatype-2022-6438), tout en restant compatible avec la surface de l'API publique de jackson-core version 2.13.5.
| Branche | Vulnérabilités corrigées |
|---|---|
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 | Toutes les précédentes + GHSA-2m67-wjpj-xhg9 (contournement de la contrainte de longueur de document) |
La branche originale (2.13.5-CVE-2025-52999-sonatype-2022-6438) corrige trois vulnérabilités et est conservée sur le dépôt distant sasso. Cette branche l'étend avec la correction supplémentaire de GHSA-2m67-wjpj-xhg9, qui applique maxDocumentLength sur tous les chemins de parseur.
| ID | Type | Gravité | CVSS | Correctif en amont |
|---|---|---|---|---|
| CVE-2025-52999 | Déni de service — profondeur d'imbrication illimitée | Élevée | 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 | Déni de service — longueur de jeton numérique illimitée | Élevée | 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 | Allocation de ressources sans limites ou sans limitation | Élevée | 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 ou supérieur. |
| SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9 | Allocation de ressources sans limites ou sans limitation — contournement de la contrainte de longueur de document | Élevée | 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 ou supérieur. |
| Version | CVE-2025-52999 | Sonatype-2022-6438 / SNYK-JAVA-COMFASTERXMLJACKSONCORE-7569538 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 |
|---|---|---|---|---|
| 2.13.5 | Vulnérable | Vulnérable | Vulnérable | Vulnérable |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438 | Corrigé | Corrigé | Corrigé | Vulnérable |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9 | Corrigé | Corrigé | Corrigé | Corrigé |
| 2.14.x | Vulnérable | Vulnérable | Vulnérable | Vulnérable |
| 2.15.x | Corrigé | Corrigé | Vulnérable | Vulnérable |
| 2.16.x | Corrigé | Corrigé | Vulnérable | Vulnérable |
| 2.17.x | Corrigé | Corrigé | Vulnérable | Vulnérable |
| 2.18.6+ | Corrigé | Corrigé | Corrigé | Vulnérable |
| 2.18.7+ | Corrigé | Corrigé | Corrigé | Corrigé |
| 2.21.1+ | Corrigé | Corrigé | Corrigé | Vulnérable |
| 2.21.2+ | Corrigé | Corrigé | Corrigé | Corrigé |
Entrée NVD
| Champ | Valeur |
|---|---|
| Identifiant CVE | CVE-2025-52999 |
| Publié | 2025-06-25 |
| Dernière modification | 2025-06-26 |
| Source (CNA) | GitHub, Inc. |
| Score CVSS v4.0 | 8.7 ÉLEVÉ — 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 — Débordement de tampon basé sur la pile (Stack-based Buffer Overflow) |
| Avis GitHub | GHSA-h46c-h94j-95f3 |
| Correctif PR en amont | jackson-core#943 |
Description officielle NVD
jackson-core contient les abstractions de base de bas niveau du processeur incrémental (« streaming ») pour l'analyse et la génération utilisées par Jackson Data Processor. Dans les versions antérieures à 2.15.0, si un utilisateur analyse un fichier d'entrée et que celui-ci contient des données profondément imbriquées, Jackson peut finir par générer une
StackOverflowErrorsi la profondeur est particulièrement grande. jackson-core 2.15.0 inclut une limite configurable pour la profondeur jusqu'à laquelle Jackson parcourra un document d'entrée, avec une valeur par défaut de 1 000. jackson-core lèvera uneStreamConstraintsExceptionsi la limite est atteinte. jackson-databind bénéficie également de ce changement car il utilise jackson-core pour analyser les entrées JSON. En guise de contournement, les utilisateurs devraient éviter d'analyser des fichiers d'entrée provenant de sources non fiables.
Contournement : éviter d'analyser des entrées JSON provenant de sources non fiables jusqu'à ce que la version corrigée soit déployée.
Cause racine : Avant la version 2.15.0, JsonParser n'imposait aucune limite sur la profondeur d'imbrication possible d'un document JSON. Chaque jeton de tableau [ ou d'objet { provoquait l'appel de JsonReadContext.createChildArrayContext() / createChildObjectContext(), allouant un nouveau nœud de contexte sur le tas et incrémentant une chaîne de références. Un attaquant peut créer un document avec des dizaines de milliers de niveaux d'imbrication, ce qui fait que la machine virtuelle Java épuise la pile de son thread ou la mémoire du tas.
Chemin de code vulnérable :