// 1 CRITICAL · 7 ZERO-DAY · 14 CVE · 12 EXPLOIT · 2 ADVISORY IN THE LAST 24H
CVE-2026-19504 in Fabric.js' loadFromJSON method enables SSRF attacks for sensitive data disclosure. The fix requires implementing a URL validation callback.

On August 24, 2026, Trend Micro published advisory ZDI-26-588 detailing a vulnerability in the loadFromJSON method of Fabric.js, a widely used JavaScript graphics library deployed in server-side rendering applications. The flaw, tracked as CVE-2026-19504, enables Server-Side Request Forgery (SSRF) attacks leading to disclosure of sensitive information from internal networks. The severity stems from the contrast between the library's presumed client-side nature and its real-world use in backend Node.js image generation and thumbnail pipelines.

Key Takeaways
  • Vulnerability ZDI-26-588 affects Fabric.js' loadFromJSON method, which follows embedded URIs without validation
  • The SSRF attack manifests in server-side environments with access to internal network resources, exfiltrating sensitive information
  • The assigned CVE is CVE-2026-19504, currently in reserved status on cve.org without full technical details
  • The fix, merged in GitHub PR #11064 on July 30, 2026, introduces a callback for URL validation before loading

How JSON Parsing Becomes an SSRF Vector

Fabric.js' loadFromJSON method reconstructs canvas objects from JSON representations, typically serialized earlier by the toJSON() method. This flow is fundamental for applications that save, transfer, or resume graphic editing sessions. The problem, documented in advisory ZDI-26-588, lies in the absence of URI validation before accessing remote resources.

An attacker can craft a JSON payload embedding URIs pointing to internal services — typically http://localhost, RFC 1918 addresses, or cloud metadata endpoints — and submit it to a server-side application using loadFromJSON to generate previews, export PDFs, or render images. The library follows the URI without checks, allowing the request from the server itself and potential exfiltration of the response.

"The specific flaw exists within the implementation of the loadFromJSON method. The issue results from the lack of proper validation of a URI prior to accessing resources"
— Advisory ZDI-26-588, Trend Micro Zero Day Initiative

The Fabric.js JSON structure is deeply nested: objects of type Image, Pattern, or Gradient can contain src or source properties at any point in the tree. Without controlled recursive inspection, the attack surface extends beyond obvious parameters, making ad-hoc parsing of incoming JSON an impractical defense.

Timeline: From Report to Pre-Disclosure Fix

The vulnerability was reported to the vendor on April 7, 2026. The four-month interval between report and coordinated disclosure on August 24, 2026 allowed development and release of a structural fix, not a mere workaround.

On July 30, 2026, roughly three weeks before the advisory publication, maintainer asturur merged PR #11064 into the official Fabric.js repository. The change adds a callback mechanism for server-side applications, allowing them to validate — and if necessary block — URLs before the library proceeds with automatic resource loading.

The implementation reflects an explicit acknowledgment by the maintainer: manual inspection of a Fabric.js JSON object is insufficient, since malicious URLs can be hidden in arbitrary sub-properties. Exposing a validation hook is more robust and simpler for developers.

Why It Matters

The dossier does not specify which Fabric.js versions are affected, nor does it quantify a CVSS score or severity vector. The ZDI advisory mentions no public exploits or in-the-wild attacks, and the CVE record remains in reserved status without accessible technical details. These limits make quantitative risk or exposed attack surface estimates impossible.

The source does not document specific remedial measures beyond the callback update. The brief does not list network controls, URL sandboxing, or segmentation policies as vendor-recommended mitigations. The burden of internal perimeter assessment falls on operators of applications employing Fabric.js in backends with access to sensitive resources.

The maintainer justified the fix with a design consideration: "while everyone is in charge of his own security, exposing a callback is way easier for the developer instead of inspecting a custom fabricJSON that can hide a malicious url in any sub property". This explicit acknowledgment of defensive difficulty — inspecting arbitrarily complex JSON — constitutes the most relevant element for risk assessment.

What to Do Now

For operators using Fabric.js in server-side environments, the actions documented in the brief are as follows:

  • Update Fabric.js to the version that includes the URL validation callback introduced with PR #11064
  • Implement the URL validation callback in the backend to intercept and block URIs targeting internal networks or unauthorized services
  • Verify that applications calling loadFromJSON on user input operate in environments with network access restrictions
  • Check logs for outbound HTTP requests generated by the Node.js rendering process that were not previously expected

The brief does not specify whether Fabric.js versions exist that fix the vulnerability without requiring callback implementation. Operators must check the project's official changelog to identify the minimum release that includes the PR #11064 merge.

The Bigger Problem: Graphics Libraries on Servers

CVE-2026-19504 fits a systemic pattern: libraries designed for the browser that migrate to servers without redefining security boundaries. Fabric.js, created to manipulate HTML5 canvas in user environments, has been adopted in content generation pipelines, batch conversions, and preview microservices. In these contexts, the same flexibility that justifies its use — transparent loading of remote resources for textures, patterns, or reference images — becomes a liability.

Missing URI validation is a common design flaw in graphics libraries, but severity manifests only when the library leaves the browser and gains unmediated network access, unrestricted by same-origin policies. The Fabric.js case echoes analogues in other ecosystems — ImageMagick, Ghostscript, document parsing libraries — where server-side repurposing of client-side functionality has generated enduring vulnerability classes.

The adopted solution — an explicit validation callback — preserves backward compatibility while offering an intervention point. It does not, however, solve the general problem: developers who ignore the server-side nature of their deployment will continue operating without the callback enabled, expanding the exposure window until incident or audit.

FAQ

Is Fabric.js vulnerable in client-side browsers too?

The brief does not document impacts in client-side environments. The SSRF nature of the flaw requires a server-side context with network access to internal resources unreachable from the user's browser.

Is the validation callback active by default?

The brief does not specify whether the callback is mandatory or optional. The maintainer's quote suggests the implementation is an option offered to developers, not an automatic block.

Which applications are most at risk?

The brief identifies server-side applications using Fabric.js to generate images, thumbnails, or previews from user JSON. No specific list of products or services is documented.

Sources

Information verified against cited sources and current as of publication.

Sources


Sources and references
  1. localhost
  2. zerodayinitiative.com
  3. cve.org
  4. github.com
  5. trendmicro.com