MEDIUM 5.3

CVE-2026-54514: Jackson-databind DNS Leakage via InetSocketAddress Deserialization

Jackson-databind, a widely-used Java library for converting JSON to objects, has a DNS leakage vulnerability in versions before 2.18.8, 2.21.4, and 3.1.4. When an application deserializes untrusted JSON containing an InetSocketAddress field, the library performs an immediate DNS lookup on any hostname in that field—before the application has a chance to validate the data or decide whether to connect. This allows an attacker to force your systems to issue DNS queries to attacker-controlled domains, leaking information about what JSON you're processing and potentially enabling DNS-based attacks.

Source data · NVD / CISA · public domain

CVSS
3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Weaknesses (CWE)
CWE-918
Affected products
1 configuration(s)
Published / Modified
2026-06-23 / 2026-06-27

NVD description (verbatim)

jackson-databind contains the general-purpose data-binding functionality and tree-model for Jackson Data Processor. From 2.0.0 until 2.18.8, 2.21.4, and 3.1.4, JDKFromStringDeserializer constructed InetSocketAddress with new InetSocketAddress(host, port), which performs eager DNS name resolution for hostname inputs at deserialization time. An application that binds untrusted JSON into a type containing an InetSocketAddress field issues an attacker-chosen DNS query during readValue, before any application-level validation or connect logic. The fix uses InetSocketAddress.createUnresolved(host, port), deferring DNS to an explicit connect. This vulnerability is fixed in 2.18.8, 2.21.4, and 3.1.4.

3 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in JDKFromStringDeserializer, which constructs InetSocketAddress objects using the eager constructor new InetSocketAddress(host, port). This constructor resolves the hostname to an IP address at deserialization time, not at connection time. An attacker can craft JSON with a malicious hostname field that forces a DNS query during Jackson's readValue() call, before any downstream application validation occurs. The fix migrates to InetSocketAddress.createUnresolved(host, port), deferring DNS resolution until an explicit connect operation is initiated by the application. This eliminates the forced DNS query during deserialization and puts hostname validation and connection logic back under application control.

Business impact

Organizations using Jackson-databind to deserialize untrusted JSON are exposed to information disclosure and potential DNS-based side-channel attacks. Attackers can infer which hostnames are being processed and mount DNS exfiltration attacks or DNS rebinding attacks if your application later connects to the resolved address. In multi-tenant or sensitive environments, DNS query logs could reveal patterns about which clients or payloads are being processed. The attack requires no special privileges and can be triggered remotely by sending crafted JSON payloads.

Affected systems

Jackson-databind versions 2.0.0 through 2.18.7, 2.21.0 through 2.21.3, and 3.0.0 through 3.1.3 are affected. The vulnerability only manifests when an application deserializes untrusted JSON into a type containing an InetSocketAddress field. Any Java application using Jackson-databind for REST APIs, message processing, or configuration parsing is potentially at risk if it accepts JSON with InetSocketAddress fields from untrusted sources.

Exploitability

Exploitability is straightforward: an attacker simply sends JSON with a crafted hostname in an InetSocketAddress field to a vulnerable application endpoint. No authentication, special network position, or user interaction is required. The attack is entirely passive from the attacker's perspective—they observe DNS queries or exfiltrate data through DNS side-channels. The CVSS score of 5.3 reflects the low barrier to exploitation and the modest but meaningful information disclosure risk, balanced against the lack of direct confidentiality breach or system compromise.

Remediation

Update jackson-databind to version 2.18.8, 2.21.4, 3.1.4, or later. These versions replace eager DNS resolution with deferred resolution, ensuring DNS lookups occur only when the application explicitly connects. After upgrading, conduct a code review to identify all code paths that deserialize JSON into types containing InetSocketAddress fields, and verify that hostname validation logic is in place before any network connection attempts.

Patch guidance

Apply the following patches based on your current version line: (1) If on 2.x, update to 2.18.8 or later. (2) If on 2.21.x, update to 2.21.4 or later. (3) If on 3.x, update to 3.1.4 or later. Verify the patched version is present in your dependency tree using mvn dependency:tree or gradle dependencies, as transitive dependencies may pull in older versions. Test deserialization of sample JSON payloads in your integration test suite after patching to ensure no regressions.

Detection guidance

Monitor Jackson-databind versions in use via Software Bill of Materials (SBOM) scanning and dependency checkers. At runtime, enable debug logging on Jackson deserialization to observe hostname inputs before they are resolved; look for unexpected or attacker-controlled hostnames. In network logs, search for unusual DNS queries that correlate with JSON ingestion events, particularly queries to domains not in your normal DNS allowlist. On affected versions, network-level DNS monitoring can reveal exploitation attempts, though the fix ultimately requires a code update.

Why prioritize this

This vulnerability merits prompt but measured action. The attack surface is limited to applications that deserialize InetSocketAddress fields from untrusted JSON, and the impact is primarily information disclosure rather than code execution or availability loss. However, the simplicity of exploitation and the pervasive use of Jackson-databind in Java microservices mean that affected applications could number in the hundreds or thousands across many organizations. Prioritize patching any service that exposes JSON endpoints and uses Jackson-databind, particularly those handling sensitive or regulated data where DNS query patterns could be sensitive.

Risk score, explained

The CVSS 3.1 score of 5.3 (MEDIUM) reflects: (1) Network-adjacent attack vector requiring no authentication, (2) Low attack complexity with no special network position required, (3) Low confidentiality impact (DNS leakage and potential side-channel inference), (4) No integrity or availability impact, and (5) Unchanged scope (no privilege escalation). The score appropriately penalizes the ease of exploitation but recognizes that direct system compromise or severe data exfiltration is not possible via this mechanism alone. Organizations in regulated industries or with strict DNS policy controls may score this higher due to compliance implications.

Frequently asked questions

Does this affect Jackson-databind users who never deserialize InetSocketAddress fields?

No. The vulnerability only triggers when an application deserializes untrusted JSON into a class containing an InetSocketAddress field. If your application uses Jackson-databind only for other data types (strings, integers, lists, custom objects), you are not affected. However, if you use jackson-databind transitively through other libraries, verify whether those libraries deserialize InetSocketAddress fields.

Is updating Jackson-databind enough, or do I need to change my application code?

Updating to the patched version is necessary and sufficient to prevent the DNS leakage. The fix defers DNS resolution to connection time, so no application code changes are required. That said, a best practice is to add explicit hostname validation before any network connection is made, regardless of whether DNS resolution has already occurred.

Can this vulnerability be exploited without access to a JSON endpoint?

Exploitation requires the ability to send JSON to an application that deserializes it into an InetSocketAddress field. If your application only deserializes JSON from trusted internal sources or from secured APIs that validate input, the attack surface is limited. However, any public-facing or multi-tenant JSON endpoint is at risk.

What is the difference between the three patch versions (2.18.8, 2.21.4, 3.1.4)?

These represent different major release lines of Jackson-databind. Users on the 2.18.x line should update to 2.18.8, users on 2.21.x should update to 2.21.4, and users on 3.x should update to 3.1.4. All three versions contain the same fix. Check your current version and follow the appropriate upgrade path for your version line.

This analysis is based on the published CVE record and vendor advisory. CVSS scores and exploit details are provided for informational purposes only and do not constitute a guarantee of real-world attack feasibility or impact in your environment. Organizations should conduct their own risk assessment based on their use of Jackson-databind, the sensitivity of data processed, and network controls in place. Patch testing should be performed in a staging environment before production deployment. For the most current patch versions and security guidance, consult the official FasterXML Jackson project and your organization's vulnerability management procedures. Source: NVD (public-domain), retrieved 2026-07-29. Analysis generated by SEC.co (claude-haiku-4-5).