Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted JSON to Johnzon deserialization endpoint
-
ExploitClassConverter resolves attacker-named class from input
-
ExecutionClass loads and static initializer executes
-
ImpactTrigger code execution or side effect via classpath gadget
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V15 - Secure Coding and Architecture Reflection safety, class allowlisting
|
| Exploitation Conditions | Exploitation requires that the host application use Johnzon to deserialize attacker-controlled JSON into a type routed through ClassConverter (i.e., a java.lang.Class-typed target field), AND that a class whose loading or static initialization causes a harmful side effect be present on the application classpath. Limiting factors: the app must actually expose such a deserialization path to untrusted input (no exploitation against Johnzon in isolation), realized impact is bounded by available classpath gadgets, and only Johnzon 1.0.0 to <1.3.1 (javax) and 2.0.0 to <2.2.0 (jakarta) are affected. No authentication is required per CVSS PR:N where the deserialization endpoint is unauthenticated. |
| Impact | Signals conflict sharply and should be weighed together rather than reading the 9.8 at face value. The NVD CVSS vector (AV:N/AC:L/PR:N/UI:N, C:H/I:H/A:H) and SSVC (Automatable: yes, Technical Impact: total) describe a worst-case unauthenticated network path with full impact, consistent with unsafe reflection (CWE-470) that loads and static-initializes an attacker-named class. Against that, EPSS is low (0.36%, 28th percentile), the vulnerability is NOT in CISA KEV, SSVC Exploitation is 'none', and no public exploit was identified - so there is no evidence of real-world exploitation yet. The 9.8 also assumes conditions the description implies but does not guarantee: the application must actually route untrusted JSON through Johnzon's ClassConverter (i.e., deserialize into a java.lang.Class-typed field), and a class whose mere loading/static-initialization causes harm must exist on the classpath. That makes this a genuinely serious library-level flaw worth prioritizing for teams that embed Johnzon and deserialize untrusted JSON, but the CVSS 9.8 likely overstates typical real-world risk; realized impact is gadget- and integration-dependent. Note the EPSS-vs-CVSS gap (low probability despite critical score) suggests latent rather than active risk. Patch and affected ranges are vendor-confirmed, so remediation is straightforward. |
| Exploit ScenarioDerived | An application uses Apache Johnzon to deserialize untrusted JSON (e.g., a JAX-RS request body) into an object whose field is resolved through ClassConverter. The attacker supplies a class name in that JSON field; Johnzon loads and static-initializes the attacker-chosen class, running its static initializer and triggering side effects (potential code execution or resource abuse) bounded by what gadget classes exist on the classpath. No public exploit code was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
Unsafe reflection in Apache Johnzon's ClassConverter can cause the library to load and statically initialize an attacker-named class from untrusted JSON, potentially producing code execution or other harmful side effects when a suitable classpath gadget and an exposed deserialization path exist. Signals conflict sharply and should be weighed together rather than reading the 9.8 at face value: the public CVSS is 9.8 and SSVC technical impact is total, but the assessed vector uses AC:H, EPSS is 0.36% (28th percentile), no CISA KEV entry was present, and no public exploit identified at time of analysis. The issue affects Johnzon 1.0.0 to before 1.3.1 in the javax namespace and 2.0.0 to before 2.2.0 in the jakarta namespace, with fixed releases 1.3.1 and 2.2.0.
RemediationAI
Upgrade to the vendor-fixed releases: Apache Johnzon 1.3.1 for the javax namespace or 2.2.0 for the jakarta namespace, as stated in the vendor advisory https://lists.apache.org/thread.html/3vgm1yo2sn9yhkvvs9lc4ro01vl3zt68; the cited patch commits are https://github.com/apache/johnzon/commit/dd3d00634c746a2173a2518e882e85e8a151bf30 and https://github.com/apache/johnzon/commit/91e7b0d21d08d138944e2570691939739422a3d6. If upgrading immediately is not possible, do not deserialize untrusted JSON into java.lang.Class-typed fields or any type that routes through ClassConverter, and replace ClassConverter with a strict allowlist of expected class names, accepting that legitimate dynamic class resolution may break and must be regression-tested. Reduce the application classpath to only required libraries to limit available static-initializer gadgets, with the trade-off of possible functional impact, and require authentication or network restrictions on JSON deserialization endpoints that accept untrusted input as a compensating control. No public exploit was identified at time of analysis, so prioritize remediation based on whether an untrusted JSON-to-Class deserialization path is actually exposed.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Apache Johnzon is a Java JSON-P/JSON-B implementation, and its ClassConverter maps JSON string values to java.lang.Class objects, which requires resolving a class name through the application classloader and may trigger that class's static initializer. CWE-470 describes this unsafe reflection pattern: when the class name is externally controlled, an attacker can select any class present on the classpath rather than a fixed, intended type. The result is not automatic code execution in every deployment; realized impact depends on whether the host application deserializes untrusted JSON into a Class-typed field or a type routed through ClassConverter, and on whether a class with a dangerous static initializer or gadget behavior is available. The CVSS vector's PR:N means no authentication is required where the vulnerable path is exposed, but the application must actually expose that path, which is why the assessed vector raises attack complexity to AC:H. The affected namespace split matters: 1.0.0 to <1.3.1 uses javax, while 2.0.0 to <2.2.0 uses jakarta, and the referenced fix commits are cited by the vendor as patch references; the supplied diff excerpt mainly shows version bumps and JSON Schema validator changes, so the exact ClassConverter hardening is not fully visible in the excerpt.
Know when Apache Johnzon gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Network, unauthenticated untrusted JSON (AV:N/PR:N/UI:N), but AC:H because success depends on the app mapping input to a Class field and a suitable classpath gadget; impact potentially total.
Primary rating from Vendor (apache).
CVSS VectorVendor: apache
Lifecycle Timeline
3DescriptionCVE.org
Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') vulnerability in Apache Johnzon.
ClassConverter loads & static-initializes an attacker-named class from untrusted JSON.
This issue affects Apache Johnzon: from 1.0.0 before 2.2.0.
Users are recommended to upgrade to version 1.3.1 (javax namespace) or 2.2.0 (jakarta specification namespace), which fixes the issue.
Executive ViewAI
Apache Johnzon, a Java JSON library, contains a critical unsafe-reflection flaw that could allow untrusted JSON to trigger code execution in applications that expose deserialization paths and have a suitable classpath gadget. Leadership should care because teams running vulnerable javax versions 1.0.0 through 1.3.0 or jakarta versions 2.0.0 through 2.1.x may have affected services, though no public exploit identified at time of analysis and assessed exploitation likelihood is low. Vendor-released patch: 1.3.1 (javax) and 2.2.0 (jakarta).
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-104193
GHSA-66gj-8qvf-qvfh
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB