Debian Package Tracker
Register | Log in
Subscribe

jackson-core

fast and powerful JSON library for Java -- core library

Choose email to subscribe with

general
  • source: jackson-core (main)
  • version: 2.22.4-1
  • maintainer: Debian Java Maintainers (archive) (DMD)
  • uploaders: Markus Koschany [DMD] – Mechtilde Stehmann [DMD]
  • arch: all
  • std-ver: 4.7.4
  • VCS: Git (Browse, QA)
versions [more versions can be listed by madison] [old versions available from snapshot.debian.org]
[pool directory]
  • o-o-stable: 2.12.1-1
  • o-o-sec: 2.14.1-2~deb11u1
  • oldstable: 2.14.1-2~deb12u1
  • old-sec: 2.14.1-2~deb12u1
  • old-p-u: 2.14.1-2~deb12u1
  • stable: 2.14.1-2~deb13u1
  • stable-sec: 2.14.1-2~deb13u1
  • testing: 2.18.11-1
  • unstable: 2.22.4-1
versioned links
  • 2.12.1-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 2.14.1-2~deb11u1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 2.14.1-2~deb12u1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 2.14.1-2~deb13u1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 2.18.11-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 2.22.4-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
binaries
  • libjackson2-core-java
action needed
2 security issues in trixie high

There are 2 open security issues in trixie.

1 important issue:
  • CVE-2026-68498: StreamReadConstraints.maxNameLength (default 50,000 characters) is intended to bound how much memory a single JSON Object property name can consume while being parsed, independently of the much larger maxStringLength (default 100,000,000 characters) that bounds ordinary string values. For parsers built over character input — Reader, String or char[] sources, all served by ReaderBasedJsonParser — that bound is not applied while the name is being accumulated. The code path instead re-uses the string-value length check, which is roughly 2000x larger by default. In the character-input slow path, ReaderBasedJsonParser._parseName2() accumulates the name into the TextBuffer and, when a segment fills, calls TextBuffer.finishCurrentSegment(), which validates only maxStringLength. The correct check, StreamReadConstraints.validateNameLength(int), is reached afterwards in CharsToNameCanonicalizer.findSymbol(), once the entire name has been scanned to its closing quote. By that point the full name — up to maxStringLength characters — has already been buffered in memory. A remote attacker who can have a single sufficiently long JSON Object property name parsed through this path can force allocation on the order of 100,000,000 characters (approximately 200 MB, with segment bookkeeping pushing real peak usage higher) before any StreamConstraintsException is thrown, instead of the approximately 50,000-character (about 100 KB) bound the API promises. Repeating this across concurrent requests can exhaust the heap and crash the process. No authentication or user interaction is required. Because StreamReadConstraints.maxDocumentLength is disabled by default (-1), nothing else bounds the token first, so the issue is exploitable under default configuration. Byte-input parsers are not affected: UTF8StreamJsonParser, UTF8DataInputJsonParser and the non-blocking (async) parsers re-validate maxNameLength on every growth of the name-decode buffer via ParserBase._growNameDecodeBuffer(), rejecting an oversized name after allocating only tens of kilobytes. Applications are exposed when untrusted JSON is parsed from a String, Reader or char[] — for example an HTTP request body already read into a String — rather than from raw UTF-8 bytes. This issue affects com.fasterxml.jackson.core:jackson-core from 2.16.0 and tools.jackson.core:jackson-core from 3.0.0. Releases before 2.16.0 are not affected, because StreamReadConstraints.maxNameLength was first introduced in jackson-core 2.16.0.
1 issue left for the package maintainer to handle:
  • CVE-2026-89425: (needs triaging) UTF8DataInputJsonParser._reportInvalidToken() in FasterXML jackson-core builds the offending-token text for its error message by appending Java identifier characters to a StringBuilder in a loop that has no upper bound. Unlike the three sibling parser implementations, including UTF8StreamJsonParser, it never consults ErrorReportConfiguration.getMaxErrorTokenLength() (default 256). A malformed token supplied to a parser created through JsonFactory.createParser(DataInput) is therefore accumulated in full. No StreamReadConstraints setting mitigates this: maxDocumentLength cannot be applied to DataInput sources at all, and maxStringLength does not cover this path because the accumulation bypasses ReadConstrainedTextBuffer. The reporter measured a 20,000,109-character exception message from a 20-million-character malformed token on the DataInput path, against 367 characters for identical input on the InputStream path. Scaling the payload drives the StringBuilder, which also incurs byte-to-char expansion and internal array doubling, to many times the raw payload size and can trigger OutOfMemoryError for the whole JVM. UTF8DataInputJsonParser was introduced in 2.8.0 together with createParser(DataInput); releases before 2.8.0 do not contain the affected class.

You can find information about how to handle this issue in the security team's documentation.

Created: 2026-09-23 Last update: 2026-10-23 19:00
2 security issues in bookworm high

There are 2 open security issues in bookworm.

1 important issue:
  • CVE-2026-68498: StreamReadConstraints.maxNameLength (default 50,000 characters) is intended to bound how much memory a single JSON Object property name can consume while being parsed, independently of the much larger maxStringLength (default 100,000,000 characters) that bounds ordinary string values. For parsers built over character input — Reader, String or char[] sources, all served by ReaderBasedJsonParser — that bound is not applied while the name is being accumulated. The code path instead re-uses the string-value length check, which is roughly 2000x larger by default. In the character-input slow path, ReaderBasedJsonParser._parseName2() accumulates the name into the TextBuffer and, when a segment fills, calls TextBuffer.finishCurrentSegment(), which validates only maxStringLength. The correct check, StreamReadConstraints.validateNameLength(int), is reached afterwards in CharsToNameCanonicalizer.findSymbol(), once the entire name has been scanned to its closing quote. By that point the full name — up to maxStringLength characters — has already been buffered in memory. A remote attacker who can have a single sufficiently long JSON Object property name parsed through this path can force allocation on the order of 100,000,000 characters (approximately 200 MB, with segment bookkeeping pushing real peak usage higher) before any StreamConstraintsException is thrown, instead of the approximately 50,000-character (about 100 KB) bound the API promises. Repeating this across concurrent requests can exhaust the heap and crash the process. No authentication or user interaction is required. Because StreamReadConstraints.maxDocumentLength is disabled by default (-1), nothing else bounds the token first, so the issue is exploitable under default configuration. Byte-input parsers are not affected: UTF8StreamJsonParser, UTF8DataInputJsonParser and the non-blocking (async) parsers re-validate maxNameLength on every growth of the name-decode buffer via ParserBase._growNameDecodeBuffer(), rejecting an oversized name after allocating only tens of kilobytes. Applications are exposed when untrusted JSON is parsed from a String, Reader or char[] — for example an HTTP request body already read into a String — rather than from raw UTF-8 bytes. This issue affects com.fasterxml.jackson.core:jackson-core from 2.16.0 and tools.jackson.core:jackson-core from 3.0.0. Releases before 2.16.0 are not affected, because StreamReadConstraints.maxNameLength was first introduced in jackson-core 2.16.0.
1 issue postponed or untriaged:
  • CVE-2026-89425: (postponed; to be fixed through a stable update) UTF8DataInputJsonParser._reportInvalidToken() in FasterXML jackson-core builds the offending-token text for its error message by appending Java identifier characters to a StringBuilder in a loop that has no upper bound. Unlike the three sibling parser implementations, including UTF8StreamJsonParser, it never consults ErrorReportConfiguration.getMaxErrorTokenLength() (default 256). A malformed token supplied to a parser created through JsonFactory.createParser(DataInput) is therefore accumulated in full. No StreamReadConstraints setting mitigates this: maxDocumentLength cannot be applied to DataInput sources at all, and maxStringLength does not cover this path because the accumulation bypasses ReadConstrainedTextBuffer. The reporter measured a 20,000,109-character exception message from a 20-million-character malformed token on the DataInput path, against 367 characters for identical input on the InputStream path. Scaling the payload drives the StringBuilder, which also incurs byte-to-char expansion and internal array doubling, to many times the raw payload size and can trigger OutOfMemoryError for the whole JVM. UTF8DataInputJsonParser was introduced in 2.8.0 together with createParser(DataInput); releases before 2.8.0 do not contain the affected class.
Created: 2026-09-23 Last update: 2026-10-23 19:00
Multiarch hinter reports 1 issue(s) normal
There are issues with the multiarch metadata for this package.
  • libjackson2-core-java could be marked Multi-Arch: foreign
Created: 2016-09-14 Last update: 2026-10-24 12:30
2 open merge requests in Salsa normal
There are 2 open merge requests for this package on Salsa. You should consider reviewing and/or merging these merge requests.
Created: 2026-10-03 Last update: 2026-10-22 22:33
testing migrations
  • excuses:
    • Migration status for jackson-core (2.18.11-1 to 2.22.4-1): Waiting for test results or another package, or too young (no action required now - check later)
    • Issues preventing migration:
    • ∙ ∙ Autopkgtest for cheshire-clojure/5.11.0-4: amd64: Pass, arm64: Pass, armhf: Pass, i386: Test triggered, ppc64el: Pass, riscv64: Pass, s390x: Pass
    • ∙ ∙ Too young, only 1 of 5 days old
    • Additional info (not blocking):
    • ∙ ∙ Piuparts tested OK - https://piuparts.debian.org/sid/source/j/jackson-core.html
    • ∙ ∙ Reproduced on amd64 - info
    • ∙ ∙ Reproduced on arm64 - info
    • ∙ ∙ Reproduced on armhf - info
    • ∙ ∙ Reproduced on i386 - info
    • Not considered
news
[rss feed]
  • [2026-10-23] Accepted jackson-core 2.22.4-1 (source) into unstable (Emmanuel Bourg)
  • [2026-10-20] jackson-core 2.18.11-1 MIGRATED to testing (Debian testing watch)
  • [2026-10-15] Accepted jackson-core 2.18.11-1 (source) into unstable (Emmanuel Bourg)
  • [2026-06-11] Accepted jackson-core 2.14.1-2~deb13u1 (source) into proposed-updates (Debian FTP Masters) (signed by: Markus Koschany)
  • [2026-06-11] Accepted jackson-core 2.14.1-2~deb12u1 (source) into oldstable-proposed-updates (Debian FTP Masters) (signed by: Markus Koschany)
  • [2026-06-10] Accepted jackson-core 2.14.1-2~deb13u1 (source) into stable-security (Debian FTP Masters) (signed by: Markus Koschany)
  • [2026-06-10] Accepted jackson-core 2.14.1-2~deb12u1 (source) into oldstable-security (Debian FTP Masters) (signed by: Markus Koschany)
  • [2026-06-08] Accepted jackson-core 2.14.1-2~deb11u1 (source) into oldoldstable-security (Markus Koschany)
  • [2026-04-21] jackson-core 2.14.1-2 MIGRATED to testing (Debian testing watch)
  • [2026-04-15] Accepted jackson-core 2.14.1-2 (source) into unstable (Markus Koschany)
  • [2022-12-25] jackson-core 2.14.1-1 MIGRATED to testing (Debian testing watch)
  • [2022-12-19] Accepted jackson-core 2.14.1-1 (source) into unstable (Emmanuel Bourg)
  • [2022-11-17] jackson-core 2.14.0-2 MIGRATED to testing (Debian testing watch)
  • [2022-11-12] Accepted jackson-core 2.14.0-2 (source) into unstable (Markus Koschany)
  • [2022-11-12] Accepted jackson-core 2.14.0-1 (source) into unstable (Markus Koschany)
  • [2021-11-09] jackson-core 2.13.0-2 MIGRATED to testing (Debian testing watch)
  • [2021-11-04] Accepted jackson-core 2.13.0-2 (source) into unstable (Markus Koschany)
  • [2021-10-22] Accepted jackson-core 2.13.0-1 (source) into unstable (Markus Koschany)
  • [2021-01-22] jackson-core 2.12.1-1 MIGRATED to testing (Debian testing watch)
  • [2021-01-16] Accepted jackson-core 2.12.1-1 (source) into unstable (Emmanuel Bourg)
  • [2020-12-31] jackson-core 2.12.0-1 MIGRATED to testing (Debian testing watch)
  • [2020-12-26] Accepted jackson-core 2.12.0-1 (source) into unstable (Mechtilde Stehmann)
  • [2020-11-13] jackson-core 2.11.3-1 MIGRATED to testing (Debian testing watch)
  • [2020-11-08] Accepted jackson-core 2.11.3-1 (source) into unstable (Mechtilde Stehmann)
  • [2020-03-13] jackson-core 2.10.3-1 MIGRATED to testing (Debian testing watch)
  • [2020-03-08] Accepted jackson-core 2.10.3-1 (source) into unstable (Mechtilde Stehmann)
  • [2019-12-29] jackson-core 2.10.1-1 MIGRATED to testing (Debian testing watch)
  • [2019-12-23] Accepted jackson-core 2.10.1-1 (source) into unstable (Mechtilde Stehmann)
  • [2019-10-04] jackson-core 2.10.0-1 MIGRATED to testing (Debian testing watch)
  • [2019-09-28] Accepted jackson-core 2.10.0-1 (source) into unstable (Mechtilde Stehmann)
  • 1
  • 2
bugs [bug history graph]
  • all: 0
links
  • homepage
  • lintian
  • buildd: logs, reproducibility
  • popcon
  • browse source code
  • other distros
  • security tracker
ubuntu Ubuntu logo [Information about Ubuntu for Debian Developers]
  • version: 2.14.1-2

Debian Package Tracker — Copyright 2013-2025 The Distro Tracker Developers
Report problems to the tracker.debian.org pseudo-package in the Debian BTS.
Documentation — Bugs — Git Repository — Contributing