CVE-2026-68494 in jackson-coreinformação

Sumário

de VulDB • 04/08/2026

A correção lançada em jackson-core 2.18.6 e 2.21.1 para CVE-2026-18401 (GHSA-72hv-8253-57qq, contorno da restrição de comprimento numérico no analisador não bloqueante) é incompleta. Este registro cobre o contorno restante.

A correção anterior vinculou validateIntegerLength() a um novo auxiliar _setIntLength() e invocava-a sempre que a parte inteira de um número era determinada: quando chegava um byte terminador, ao detectar . ou e/E, ou quando a entrada terminava dentro de um valor totalmente armazenado em buffer. Ela não foi invocada no caminho relevante para o atacante onde o analisador fica sem dados enquanto ainda está no estado menor MINOR_NUMBER_INTEGER_DIGITS e retorna NOT_AVAILABLE para o chamador.

Como resultado, um atacante que transmite JSON para um analisador não bloqueante em muitos pequenos fragmentos, sem jamais enviar um byte terminador, mantém o analisador indefinidamente dentro de MINOR_NUMBER_INTEGER_DIGITS. _textBuffer.expandCurrentSegment() cresce o acumulador a cada fragmento enquanto validateIntegerLength() nunca é chamada. O acumulador é limitado apenas por maxStringLength (20 MiB por padrão) em vez de ser limitado por maxNumberLength (1000 por padrão), uma amplificação de aproximadamente 20.000x sobre o limite documentado. Como os valores char do Java ocupam dois bytes, uma única conexão pode consumir até aproximadamente 40 MiB de heap antes que a validação finalmente seja acionada quando o valor é concluído.

O código equivalente no caminho da fração está correto: _finishFloatFraction() chama _setFractLength() antes do seu retorno NOT_AVAILABLE. A chamada ausente afeta os caminhos dos dígitos inteiros em _startPositiveNumber(), _startNegativeNumber() e _finishNumberIntegralPart() em NonBlockingUtf8JsonParserBase.

Impacto: frameworks reativos como Spring WebFlux/Reactor, Quarkus, Helidon e Vert.x alimentam bytes HTTP ou gRPC de entrada no analisador assíncrono conforme chegam, o que é precisamente a forma de alimentação fragmentada necessária. Operadores que definem StreamReadConstraints.maxNumberLength esperando que isso limite a memória por valor numérico não recebem essa garantia; a memória acumula-se por conexão concorrente e a concorrência controlada pelo atacante pode esgotar o heap da JVM. Os analisadores síncronos (UTF8StreamJsonParser, ReaderBasedJsonParser) e o analisador assíncrono operando com entrada completa não são afetados.

A exploração requer apenas a capacidade de transmitir dados para um ponto final de análise; nenhum privilégio ou interação do usuário é necessário.

Este problema afeta com.fasterxml.jackson.core:jackson-core das versões 2.15.0 até 2.18.7, de 2.19.0 até 2.21.3 e de 2.22.0 até 2.22.0, bem como tools.jackson.core:jackson-core das versões 3.0.0 até 3.1.3 e de 3.2.0 até 3.2.0. Versões anteriores a 2.15.0 não são afetadas, pois StreamReadConstraints -- que define a configuração maxNumberLength -- foi introduzida pela primeira vez em jackson-core 2.15.0; portanto, nenhuma tal restrição existe para ser contornada em lançamentos mais antigos. Observe que GHSA-r7wm-3cxj-wff9 afirma o intervalo afetado de versões 2.x sem um limite inferior.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsável

HeroDevs

Reservar

30/07/2026

Divulgação

04/08/2026

Moderação

aceite

Entrada

VDB-385833

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Do you know our Splunk app?

Download it now for free!