CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-19032

CVE-2026-19032: Insecure Deserialization and Class Loading via java.nio.file.Path Resolution in FasterXML jackson-databind

Alon Barad
Alon Barad
Software Engineer

Sep 29, 2026·6 min read·60 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can trigger unsafe Java ServiceLoader class loading and execute arbitrary FileSystemProvider resolution logic by supplying crafted URIs in JSON properties deserialized as java.nio.file.Path fields.

An insecure deserialization vulnerability exists in FasterXML jackson-databind due to improper validation of URI schemes when resolving java.nio.file.Path properties. When binding untrusted JSON input to a Path field, the deserializer resolves attacker-supplied URIs without restriction. If the scheme is unrecognized by the default filesystem, the application falls back to querying registered SPI FileSystemProvider instances, causing class loading and potential side effects in environments with custom providers.

Vulnerability Overview

The FasterXML jackson-databind library is widely utilized across the Java ecosystem to serialize and deserialize Java objects to and from JSON format. Within the library, the deserialization routine for java.nio.file.Path objects converts string inputs directly into java.net.URI instances. Prior to the patch, the parser accepted arbitrary URI scheme values without sanitization, exposing a significant attack surface in applications parsing untrusted payload structures.

This vulnerability is categorized under CWE-470 (Use of Externally-Controlled Input to Select Classes or Code) and CWE-610 (Externally Controlled Reference to a Resource in Another Sphere). The core issue resides in the mechanism used to resolve non-standard URI schemes, which triggers automatic discovery of filesystem providers configured on the target's classpath.

While standard local file schemes (file://) resolve safely on default JVM installations, the presence of specialized library dependencies on the runtime classpath—such as S3, Google Cloud Storage, FTP, or custom virtual filesystem providers—allows attackers to manipulate remote requests, initialize unauthorized network connections, or run static initializers of target classes.

Root Cause Analysis

To understand the root cause, we must trace how jackson-databind handles the transition of a JSON string literal into a java.nio.file.Path object. When a class containing a Path property is deserialized, the framework invokes its path deserialization logic. The input string is parsed as a java.net.URI object, which is then fed into Paths.get(uri) or Path.of(uri) to get a reference to the resource.

If the URI specifies a scheme that is not natively registered within the default filesystem context (for example, s3:// or custom://), the standard lookup fails and throws a java.nio.file.FileSystemNotFoundException. Rather than propagating this exception to abort deserialization immediately, the vulnerable implementation catches it and attempts an open-ended fallback search via the Java Service Provider Interface (SPI).

The vulnerable code runs ServiceLoader.load(FileSystemProvider.class) using the thread context class loader. It then loops through all discovered implementations, checking if provider.getScheme().equalsIgnoreCase(scheme) evaluates to true. This lookup triggers the JVM to load the class definition and execute any static initialization blocks associated with providers residing on the application's classpath. If a match is found, the application immediately invokes the custom provider's getPath(uri) method using the attacker's completely controlled URI value.

Code Analysis and Patch Robustness

The vulnerability was addressed in commit cc6756b61ed90b6b9227f670e0408d5d9bd48551 by introducing strict validation inside NioPathDeserializer before any filesystem resolution or class-loading logic can take place.

Prior to the patch, the deserializer blindly processed the input string and initiated the SPI search on failure. The updated version implements a strict URI scheme allowlist that defaults only to the 'file' scheme. Local paths (which do not specify a scheme, causing uri.getScheme() to return null) bypass the validation check, maintaining backward compatibility.

// Patched logic in NioPathDeserializer
public final static Collection<String> DEFAULT_ALLOWED_SCHEMES = Collections.singletonList("file");
protected final Collection<String> _allowedSchemes;
 
public NioPathDeserializer() {
    this(DEFAULT_ALLOWED_SCHEMES);
}
 
// During deserialization of the Path value:
final String scheme = uri.getScheme();
if (scheme != null && !_isSchemeAllowed(scheme)) {
    return (Path) ctxt.handleWeirdStringValue(Path.class, value,
            "scheme '%s' not allowed for Path deserialization (allowed: %s)",
            scheme, _allowedSchemesDesc());
}

The check is performed case-insensitively, preventing bypasses using alternative casing (such as FiLe://). By enforcing this verification up front, jackson-databind avoids calling Paths.get(uri) or triggering ServiceLoader.load(FileSystemProvider.class) for untrusted, arbitrary protocols. This fix is highly robust because it adopts an allowlist model rather than attempting to blocklist dangerous schemes.

Exploitation Methodology

An attacker can exploit this vulnerability under specific environmental conditions. The primary prerequisite is that the target application must expose a deserialization endpoint that accepts a JSON object with a field mapped to java.nio.file.Path. Additionally, the application classpath must contain a third-party FileSystemProvider library supporting remote or virtual resources.

For example, if the application classpath includes a library containing a Google Cloud Storage (gs://) or Amazon S3 (s3://) file system provider, the attacker can submit a structured payload targeting those schemes. An example payload looks like this:

{
  "jobName": "Backup Task",
  "sourcePath": "s3://attacker-controlled-bucket.s3.amazonaws.com/payload"
}

When the application processes this payload, the vulnerable deserializer fails the local lookup, queries the SPI registry, loads the matching S3 provider class, and invokes s3Provider.getPath(uri). Depending on the exact provider implementation, this can trigger a Server-Side Request Forgery (SSRF) attempt as the provider contacts the remote endpoint, or execute specialized initialization code that impacts application availability.

Impact Assessment

The security impact of CVE-2026-19032 is evaluated at CVSS 5.3 (Medium Severity). While the vulnerability allows unauthenticated remote input to drive backend code execution, it does not directly lead to arbitrary code execution (RCE) in a standard, vanilla JVM environment without side-effecting classes on the classpath.

The real-world consequence depends heavily on the libraries deployed alongside jackson-databind. In complex enterprise environments, the forced loading of classes via the ServiceLoader and the invocation of getPath can be chained with other classpath-based vulnerabilities to achieve broader impact, probe network configurations, or perform unauthorized resource requests inside secure network boundaries.

To date, there are no known public exploits or evidence of active exploitation in the wild. The EPSS score remains low at approximately 0.529%, reflecting a limited immediate threat landscape, though legacy and complex container deployments are at elevated risk due to dense classpaths.

Remediation and Defensive Configurations

The most effective remediation is upgrading to the patched versions of jackson-databind. For the 2.x branch, users should transition to 2.18.10, 2.21.6, or 2.22.2. For the 3.x branch, users must upgrade to 3.1.6 or 3.2.2.

If upgrading is not immediately possible, applications should avoid deserializing untrusted inputs directly into java.nio.file.Path properties. Developers can bind the property as a standard String and manually perform strict schema validation before programmatically constructing the Path instance.

If non-file schemes (like s3 or gs) are legitimately required by the application, developers should securely register a custom instance of NioPathDeserializer on their ObjectMapper. This allows explicit, controlled authorization of chosen protocols while keeping the core protection intact:

SimpleModule module = new SimpleModule();
module.addDeserializer(Path.class, new NioPathDeserializer(Arrays.asList("file", "s3", "gs")));
objectMapper.registerModule(module);

Official Patches

FasterXMLOfficial Security Advisory
FasterXMLGitHub Pull Request addressing CVE-2026-19032

Fix Analysis (3)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
EPSS Probability
0.53%
Top 100% most exploited

Affected Systems

Applications deploying com.fasterxml.jackson.core:jackson-databind between 2.8.0 and 2.18.9Applications deploying com.fasterxml.jackson.core:jackson-databind between 2.19.0 and 2.21.5Applications deploying com.fasterxml.jackson.core:jackson-databind between 2.22.0 and 2.22.1Applications deploying tools.jackson.core:jackson-databind between 3.0.0 and 3.1.5Applications deploying tools.jackson.core:jackson-databind between 3.2.0 and 3.2.1

Affected Versions Detail

Product
Affected Versions
Fixed Version
jackson-databind (2.x)
FasterXML
>= 2.8.0, < 2.18.102.18.10
jackson-databind (2.x)
FasterXML
>= 2.19.0, < 2.21.62.21.6
jackson-databind (2.x)
FasterXML
>= 2.22.0, < 2.22.22.22.2
jackson-databind (3.x)
FasterXML
>= 3.0.0, < 3.1.63.1.6
jackson-databind (3.x)
FasterXML
>= 3.2.0, < 3.2.23.2.2
AttributeDetail
CWE IDCWE-470, CWE-610
Attack VectorNetwork
CVSS v3.1 Score5.3 (Medium)
EPSS Score0.00529 (0.529%)
Exploit Statuspoc
CISA KEV StatusNot Listed
ImpactLow (Unsafe Class Loading / Resource Querying / SSRF)

MITRE ATT&CK Mapping

T1129Shared Modules
Execution
T1106Native API
Execution
T1190Exploit Public-Facing Application
Initial Access
CWE-470
Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')

The product uses external input to determine which class to load, allowing attackers to force loading of classes with potential side effects.

References & Sources

  • [1]FasterXML Security Advisory GHSA-wjgm-6hv5-3cvf

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•8 minutes ago•CVE-2026-126355
5.3

CVE-2026-126355: Cross-Site Request Forgery Protection Bypass via Hyperlink Auditing in Hono

CVE-2026-126355 (GHSA-46wx-v44x-9hh2) is a Cross-Site Request Forgery (CSRF) validation bypass in Hono, a web application framework for JavaScript runtimes. Prior to version 4.13.16, Hono's built-in csrf() middleware only evaluated origin headers for requests matching standard HTML form MIME types (application/x-www-form-urlencoded, multipart/form-data, and text/plain). By leveraging the HTML anchor ping attribute in Chromium-based browsers, an attacker can initiate an unprompted, credentialed cross-origin HTTP POST request with Content-Type: text/ping without triggering a CORS preflight request. Because text/ping was omitted from the middleware regular expression, requests bypassed Origin and Sec-Fetch-Site verification, allowing unauthorized state-changing operations.

Amit Schendel
Amit Schendel
0 views•9 min read
•about 1 hour ago•CVE-2026-128067
8.4

CVE-2026-128067: Out-of-Bounds Heap Read and Write in Pillow libtiff Encoder via Geometry Tag Overrides

CVE-2026-128067 is a memory corruption vulnerability in Pillow (versions 2.3.0 through 12.3.0) occurring when saving compressed TIFF images via the underlying libtiff encoder. By supplying crafted image geometry tags through exif=, tiffinfo=, or a source TIFF IFD, an attacker can override the scanline dimensions configured in libtiff while Pillow allocates the internal row buffer based strictly on the physical image dimensions. This mismatch induces an out-of-bounds heap read during scanline encoding, and escalates to an out-of-bounds heap write when TIFF Predictor 2 (horizontal differencing) is enabled.

Amit Schendel
Amit Schendel
1 views•10 min read
•about 2 hours ago•CVE-2026-128066
8.7

CVE-2026-128066: Quadratic Memory Amplification Denial of Service in Pillow TIFF and EXIF IFD Parser

CVE-2026-128066 (GHSA-wqgw-9xfh-qf2g) is a resource allocation vulnerability (CWE-770) in the Python Pillow imaging library affecting versions 1.0 through 12.3.0. The flaw resides in the ImageFileDirectory_v2.load() method within src/PIL/TiffImagePlugin.py, which processes Tag Image File Format (TIFF) structures and Exchangeable Image File Format (EXIF) metadata across multiple container formats. By supplying an image with thousands of IFD tag entries that point to overlapping or identical file offsets, an attacker can trigger quadratic memory amplification (O(N * filesize)). Because the vulnerability occurs during metadata parsing rather than pixel decoding, it bypasses Pillow's built-in decompression bomb protections (Image.MAX_IMAGE_PIXELS).

Amit Schendel
Amit Schendel
2 views•13 min read
•about 3 hours ago•CVE-2026-126081
7.5

CVE-2026-126081: Strong Parameters Bypass via Parameters#each_key in Ruby on Rails Action Pack

CVE-2026-126081 is a mass-assignment vulnerability (CWE-915) in the Action Pack component of Ruby on Rails. Prior to versions 8.1.4.1 and 8.0.5.2, the ActionController::Parameters#each_key method was delegated directly to the internal ActiveSupport::HashWithIndifferentAccess instance holding raw request parameters. When invoked with a block, #each_key returned the underlying unpermitted hash rather than the ActionController::Parameters wrapper instance. Applications that pass the return value of #each_key directly into Active Model mass-assignment methods bypass Strong Parameters enforcement, allowing attackers to modify restricted model attributes.

Amit Schendel
Amit Schendel
3 views•9 min read
•about 4 hours ago•CVE-2026-126084
4.7

CVE-2026-126084: Unsigned Content-Type in Rails Active Storage GCS Direct Uploads

A vulnerability classified under CWE-345 (Insufficient Verification of Data Authenticity) exists in the Active Storage component of Ruby on Rails prior to versions 8.1.4.1 and 8.0.5.2. When Google Cloud Storage (GCS) is configured as the storage backend with the cache_control option enabled, Active Storage switches from GCS V2 signing to V4 signing for direct upload URLs. Because the V4 signing implementation only binds the Cache-Control and Host headers, the Content-Type and Content-MD5 headers remain unsigned. An attacker can modify the Content-Type header during a direct upload request to store HTML or SVG files with active JavaScript on the GCS bucket origin, enabling Service Worker registration and interception of subsequent signed URL responses within the bucket path.

Amit Schendel
Amit Schendel
6 views•9 min read
•about 5 hours ago•CVE-2026-126079
6.1

CVE-2026-126079: Cross-Site Scripting in Ruby on Rails Action View Text Helpers via HTML5 Serialization Desynchronization

A Cross-Site Scripting (XSS) vulnerability exists in Ruby on Rails Action View prior to versions 8.0.5.2 and 8.1.4.1. When applications use the default HTML5 sanitizer (Rails::HTML5::Sanitizer) with Nokogiri versions prior to 1.19.5, angle brackets (< and >) inside HTML attribute values are serialized unescaped. Action View text helpers—specifically highlight and simple_format—perform string-based manipulations on the sanitized HTML rather than operating on the DOM tree. An unescaped '>' character or a double newline ('\n\n') inside an attribute value causes these helpers to misidentify tag or paragraph boundaries, breaking out of the attribute context and emitting inert attribute contents as live HTML elements in the final html_safe output.

Amit Schendel
Amit Schendel
3 views•10 min read