jackson-core — security advisory
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.
- Products
- jackson-core
- Affected versions
- 2.14.1-1, 2.14.1-2, 2.14.1-2~deb11u1, 2.14.1-2~deb12u1, 2.14.1-2~deb13u1, 2.18.11-1
- Fixed versions
- 2.18.11-1
- CVEs
- CVE-2026-89425
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 08:53 UTC · Revision 1
Source evidence
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.
osv:DEBIAN-CVE-2026-89425
jackson-core
Fixed versions: Not specified
jackson-core
Fixed versions: Not specified
jackson-core
Fixed versions: 2.18.11-1
Complete source record
{
"id": "c994fd87b4a59c8687a0e2eca86e2cb8cb31e37bddf973f12f152ffcd206d523",
"url": "https://osv.dev/vulnerability/DEBIAN-CVE-2026-89425",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "DEBIAN-CVE-2026-89425",
"summary": "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.",
"evidence": "osv:DEBIAN-CVE-2026-89425",
"products": [
{
"name": {
"value": "jackson-core",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "2.14.1-1",
"evidence": "/affected/0/versions"
},
{
"value": "2.14.1-2",
"evidence": "/affected/0/versions"
},
{
"value": "2.14.1-2~deb11u1",
"evidence": "/affected/0/versions"
},
{
"value": "2.14.1-2~deb12u1",
"evidence": "/affected/0/versions"
},
{
"value": "2.14.1-2~deb13u1",
"evidence": "/affected/0/versions"
},
{
"value": "2.18.11-1",
"evidence": "/affected/0/versions"
}
]
},
{
"name": {
"value": "jackson-core",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "2.14.1-1",
"evidence": "/affected/1/versions"
},
{
"value": "2.14.1-2",
"evidence": "/affected/1/versions"
},
{
"value": "2.14.1-2~deb11u1",
"evidence": "/affected/1/versions"
},
{
"value": "2.14.1-2~deb12u1",
"evidence": "/affected/1/versions"
},
{
"value": "2.14.1-2~deb13u1",
"evidence": "/affected/1/versions"
},
{
"value": "2.18.11-1",
"evidence": "/affected/1/versions"
}
]
},
{
"name": {
"value": "jackson-core",
"evidence": "/affected/2/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.18.11-1",
"evidence": "/affected/2/ranges"
}
],
"affected_versions": [
{
"value": "2.14.1-1",
"evidence": "/affected/2/versions"
},
{
"value": "2.14.1-2",
"evidence": "/affected/2/versions"
},
{
"value": "2.14.1-2~deb11u1",
"evidence": "/affected/2/versions"
},
{
"value": "2.14.1-2~deb12u1",
"evidence": "/affected/2/versions"
},
{
"value": "2.14.1-2~deb13u1",
"evidence": "/affected/2/versions"
}
]
}
],
"severity": "high",
"structured": {
"id": "DEBIAN-CVE-2026-89425",
"aliases": [
"DEBIAN-CVE-2026-89425"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "jackson-core",
"purl": "pkg:deb/debian/jackson-core?arch=source&distro=bookworm",
"ecosystem": "Debian:12"
},
"versions": [
"2.14.1-1",
"2.14.1-2",
"2.14.1-2~deb11u1",
"2.14.1-2~deb12u1",
"2.14.1-2~deb13u1",
"2.18.11-1"
],
"database_specific": {
"source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-89425.json"
},
"ecosystem_specific": {
"urgency": "not yet assigned"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "jackson-core",
"purl": "pkg:deb/debian/jackson-core?arch=source&distro=trixie",
"ecosystem": "Debian:13"
},
"versions": [
"2.14.1-1",
"2.14.1-2",
"2.14.1-2~deb11u1",
"2.14.1-2~deb12u1",
"2.14.1-2~deb13u1",
"2.18.11-1"
],
"database_specific": {
"source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-89425.json"
},
"ecosystem_specific": {
"urgency": "not yet assigned"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "2.18.11-1"
}
]
}
],
"package": {
"name": "jackson-core",
"purl": "pkg:deb/debian/jackson-core?arch=source&distro=forky",
"ecosystem": "Debian:14"
},
"versions": [
"2.14.1-1",
"2.14.1-2",
"2.14.1-2~deb11u1",
"2.14.1-2~deb12u1",
"2.14.1-2~deb13u1"
],
"database_specific": {
"source": "https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-89425.json"
},
"ecosystem_specific": {
"urgency": "not yet assigned"
}
}
],
"modified": "2026-10-20T04:00:07.459748262Z",
"provider": "osv",
"upstream": [
"CVE-2026-89425"
],
"references": [
"https://security-tracker.debian.org/tracker/CVE-2026-89425"
]
},
"related_cves": [
{
"value": "CVE-2026-89425",
"evidence": "/upstream"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 377334,
"published_at": "2026-09-23T03:17:04.357+00:00"
}