
Este repositório fornece uma remediação abrangente de segurança para vulnerabilidades de negação de serviço e alocação de recursos sem limites ou limitação de velocidade relatadas em CVE-2025-52999, GHSA-2m67-wjpj-xhg9 e sonatype-2022-6438, mantendo total compatibilidade com jackson‑core 2.13.5.
Este branch (2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9) contém uma remediação de segurança abrangente para vulnerabilidades de negação de serviço (DoS) e Alocação de Recursos sem Limites ou Aceleração que afetam o jackson-core 2.13.5. Ele introduz a API StreamReadConstraints —
alinhada com a API introduzida no jackson-core 2.15.0, mas estendida com uma cobertura mais ampla de analisadores
e proteções adicionais contra vetores de ataque — abordando um ataque de exaustão de profundidade de aninhamento
(CVE-2025-52999), Alocação de Recursos sem Limites ou Aceleração (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924), uma violação de restrição de comprimento de documento (SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9) e um ataque de exaustão de comprimento de token numérico (Sonatype-2022-6438), mantendo-se compatível com a superfície da API pública do jackson-core versão 2.13.5.
| Branch | Vulnerabilidades Abordadas |
|---|---|
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 | Todos os acima + GHSA-2m67-wjpj-xhg9 (violação de restrição de comprimento de documento) |
O branch original (2.13.5-CVE-2025-52999-sonatype-2022-6438) corrige três vulnerabilidades
e está preservado no repositório remoto sasso. Este branch o estende com a correção adicional de
GHSA-2m67-wjpj-xhg9,
que aplica maxDocumentLength em todos os caminhos do analisador.
| ID | Tipo | Gravidade | CVSS | Correção Upstream |
|---|---|---|---|---|
| CVE-2025-52999 | Negação de Serviço — profundidade de aninhamento ilimitada | 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 | Negação de Serviço — comprimento de token numérico ilimitado | 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 | Alocação de Recursos sem Limites ou Aceleração | 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 ou superior. |
| SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 / GHSA-2m67-wjpj-xhg9 | Alocação de Recursos sem Limites ou Aceleração — violação da restrição de comprimento de 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 ou superior. |
| Versão | CVE-2025-52999 | Sonatype-2022-6438 / SNYK-JAVA-COMFASTERXMLJACKSONCORE-7569538 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15365924 | SNYK-JAVA-COMFASTERXMLJACKSONCORE-15907551 |
|---|---|---|---|---|
| 2.13.5 | Vulnerável | Vulnerável | Vulnerável | Vulnerável |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438 | Corrigido | Corrigido | Corrigido | Vulnerável |
| 2.13.5-CVE-2025-52999-sonatype-2022-6438-GHSA-2m67-wjpj-xhg9 | Corrigido | Corrigido | Corrigido | Corrigido |
| 2.14.x | Vulnerável | Vulnerável | Vulnerável | Vulnerável |
| 2.15.x | Corrigido | Corrigido | Vulnerável | Vulnerável |
| 2.16.x | Corrigido | Corrigido | Vulnerável | Vulnerável |
| 2.17.x | Corrigido | Corrigido | Vulnerável | Vulnerável |
| 2.18.6+ | Corrigido | Corrigido | Corrigido | Vulnerável |
| 2.18.7+ | Corrigido | Corrigido | Corrigido | Corrigido |
| 2.21.1+ | Corrigido | Corrigido | Corrigido | Vulnerável |
| 2.21.2+ | Corrigido | Corrigido | Corrigido | Corrigido |
Entrada NVD
| Campo | Valor |
|---|---|
| ID CVE | CVE-2025-52999 |
| Publicado | 2025-06-25 |
| Última modificação | 2025-06-26 |
| Fonte (CNA) | GitHub, Inc. |
| Pontuação CVSS v4.0 | 8.7 HIGH — 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 — Estouro de Buffer baseado em Pilha |
| Aviso GitHub | GHSA-h46c-h94j-95f3 |
| PR de correção upstream | jackson-core#943 |
Descrição Oficial NVD
jackson-core contém abstrações de baixo nível de analisador e gerador incrementais ("streaming") usadas pelo Processador de Dados Jackson. Em versões anteriores à 2.15.0, se um usuário analisar um arquivo de entrada e ele tiver dados profundamente aninhados, o Jackson pode acabar lançando um
StackOverflowErrorse a profundidade for particularmente grande. jackson-core 2.15.0 contém um limite configurável para quão profundo o Jackson irá percorrer em um documento de entrada, com padrão de profundidade permitida de 1.000. jackson-core lançará umaStreamConstraintsExceptionse o limite for atingido. jackson-databind também se beneficia desta alteração porque usa jackson-core para analisar entradas JSON. Como solução alternativa, os usuários devem evitar analisar arquivos de entrada de fontes não confiáveis.
Solução alternativa: evitar analisar entrada JSON de fontes não confiáveis até que a versão corrigida seja implantada.
Causa raiz: Antes da versão 2.15.0, JsonParser não impunha limite de quão profundamente um documento JSON poderia
ser aninhado. Cada token de array [ ou objeto { fazia com que JsonReadContext.createChildArrayContext() /
createChildObjectContext() alocasse um novo nó de contexto no heap e incrementasse uma cadeia de referência.
Um invasor pode criar um documento com dezenas de milhares de níveis aninhados, fazendo com que a Máquina Virtual Java
exceda sua pilha de thread ou memória heap.
Caminho de código vulnerável: