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



GHSA-RWR8-XRPW-9QF5

The Zombie in the Bundle: Freeform's Hidden Axios Vulnerability

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 18, 2026·5 min read·15 visits

Executive Summary (TL;DR)

Freeform < 4.1.22 and < 5.5.9 bundles an old version of Axios vulnerable to SSRF. Update immediately to flush out the stale asset.

A classic supply chain vulnerability affecting Solspace Freeform for Craft CMS. The plugin distributes precompiled JavaScript assets containing an outdated, vulnerable version of the Axios HTTP client (CVE-2024-39338). This creates a scenario where developers update their top-level dependencies, unaware that a 'zombie' library within a plugin's binary blob remains susceptible to Server-Side Request Forgery (SSRF) and protocol confusion attacks.

The Hook: The Zombie Dependency

Modern web development is a Russian Nesting Doll of dependencies. You audit your composer.json, you scan your package.json, and you pat yourself on the back for a job well done. But what about the code you didn't write and can't see in your manifest files? That's where GHSA-RWR8-XRPW-9QF5 lives.

Solspace Freeform, a heavyweight form builder for Craft CMS, committed the cardinal sin of bundling: shipping precompiled assets (minified JavaScript) that baked in an old version of the axios library. While your project might be running the latest and greatest security patches, the compiled freeform.js sitting in your public web root is essentially a time capsule, running a version of Axios older than 1.7.5.

This is a textbook "Zombie Dependency." It's dead code to you—you don't maintain it—but it's very much alive to an attacker who knows it's there. The specific rot in this zombie? CVE-2024-39338, a nasty little flaw in how Axios handles protocol-relative URLs, opening the door to Server-Side Request Forgery (SSRF) scenarios if used in specific environments.

The Flaw: Protocol Confusion

To understand why this matters, we have to look at the underlying vulnerability in Axios (CVE-2024-39338). The issue lies in how the library parses URLs. Developers often assume that if they don't type http:// or https://, the library will treat the input as a path relative to the current domain (e.g., /api/submit).

However, prior to version 1.7.5, Axios had a blind spot. If an attacker supplied a URL starting with // (double slash), Axios would interpret this as a protocol-relative URL. In a browser, //attacker.com inherits the current protocol (http or https). But in server-side contexts (like Node.js wrappers or SSR environments often used alongside modern CMS front-ends), this behavior allows the request to escape the intended host entirely.

It’s a logic gap. The code essentially says, "Oh, you want to go to //localhost:8080/admin? Sure thing!" bypassing any validation logic that only checked for explicit protocol schemes like http: or file:. It turns a constrained API call into an open proxy.

The Code: Anatomy of the Bundle

We don't have a simple diff of Freeform's source code because the vulnerability exists inside a minified distribution file, but we can reconstruct the crime scene based on the Axios fix.

Here is the logic flaw in the vulnerable Axios versions:

// Vulnerable Logic (Conceptual)
function isAbsoluteURL(url) {
  // Failed to account for protocol-relative //
  return /^[a-z][a-z0-9+.-]*:/.test(url);
}

Because //example.com doesn't start with a scheme (like http:), the check fails, and Axios treats it as valid input for certain request paths, which the underlying adapter then resolves as a remote request.

In the patched version (Axios 1.7.5+), the validation is tightened to recognize that // effectively acts as an absolute URL in network contexts:

// The Fix in Axios 1.7.5
function isAbsoluteURL(url) {
  // Now catches // as an absolute URL indicator
  return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
}

Freeform's mistake was not in writing bad code, but in freezing bad code in time. By compiling their assets and not updating the build pipeline, they shipped the vulnerable logic above to thousands of Craft CMS installations.

The Exploit: From Input to Exfiltration

How do we weaponize this in a Form Builder? Freeform is designed to take user input and send it places—CRMs, mailing lists, or custom API endpoints. It uses Axios for these AJAX requests.

The Attack Vector: Imagine a Freeform implementation that allows a user (or an admin) to define a webhook URL or a redirection endpoint. If the system relies on Axios to validate or fetch data from that endpoint, an attacker can supply //169.254.169.254/latest/meta-data/.

  1. Injection: The attacker inputs the malicious protocol-relative URL into a form field or configuration setting designed to accept a path (e.g., /thank-you).
  2. Confusion: The vulnerable Axios instance inside the freeform.js bundle sees //169... and treats it as a valid request, inheriting the protocol.
  3. Execution:
    • Client-Side Scenario: If running in the victim's browser, this becomes an Open Redirect or CSRF, forcing the user's browser to send credentials to the attacker's domain.
    • Server-Side Scenario: If Freeform utilizes any server-side rendering (SSR) or Node.js integrations for form processing, the server itself makes the request to the internal metadata service, exposing cloud credentials.

Even without full SSRF, the ability to redirect AJAX requests unpredictably can break CORS policies and leak CSRF tokens to external domains.

The Fix: Exorcising the Ghost

This isn't a vulnerability you can patch by editing a file line. You cannot easily patch a minified Webpack bundle unless you are a glutton for punishment. The only reliable path forward is to replace the vendor's distribution files entirely.

Solspace has released the fix in:

  • Freeform 4.1.22
  • Freeform 5.5.9

These versions were rebuilt with an updated package.lock that pulls in Axios 1.7.5 or higher.

> [!WARNING] > Cache Clearing is Mandatory. > Simply running composer update is not enough. Browser caches and CDNs (Cloudflare, Fastly) often hold onto the old .js files aggressively. You must purge your asset caches to ensure the new, secure bundle is actually being served to your users.

Official Patches

SolspaceOfficial GitHub Advisory and Patch Notes
NVDNVD Entry for the underlying Axios vulnerability

Technical Appendix

CVSS Score
5.4/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
EPSS Probability
0.04%

Affected Systems

Craft CMS websites using Solspace Freeform pluginSolspace Freeform < 4.1.22Solspace Freeform < 5.5.9

Affected Versions Detail

Product
Affected Versions
Fixed Version
solspace/craft-freeform
Solspace
< 4.1.224.1.22
solspace/craft-freeform
Solspace
< 5.5.95.5.9
AttributeDetail
Vulnerability TypeSupply Chain / Bundled Dependency
Underlying FlawSSRF via Axios (CVE-2024-39338)
Affected ComponentPrecompiled JS Assets (dist/)
Attack VectorNetwork (Protocol-Relative URL Injection)
CVSS5.4 (Medium)
Exploit MaturityProof of Concept (PoC)

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1210Exploitation of Remote Services
Lateral Movement
CWE-918
Server-Side Request Forgery (SSRF)

References & Sources

  • [1]GitHub Advisory Database Entry
  • [2]Snyk Vulnerability Analysis for Axios

More Reports

•20 minutes ago•CVE-2026-70666
7.4

CVE-2026-70666: Server-Side Request Forgery in Netflix Lemur ACME Authority Management

CVE-2026-70666 is a critical Server-Side Request Forgery (SSRF) vulnerability in Netflix Lemur's ACME certificate management integration. Prior to version 1.9.3, the system allowed authority-role users to bypass initial ACME URL allowlist validations when updating an existing authority. Additionally, the underlying ACME network client blindly parsed and connected to dynamic endpoint URLs supplied in JSON responses from the configured ACME directory, allowing attackers to route arbitrary JWS-signed requests to internal services or cloud metadata endpoints.

Alon Barad
Alon Barad
0 views•5 min read
•about 1 hour ago•CVE-2026-70667
6.3

CVE-2026-70667: Server-Side Request Forgery Bypass in Netflix Lemur Certificate Verification

A security vulnerability in Netflix Lemur, a TLS certificate management framework, allows authenticated operators to bypass Server-Side Request Forgery (SSRF) mitigations. The issue exists within the certificate revocation verification workflow, specifically inside the CRL and OCSP retrieval logic. By exploiting HTTP redirects or DNS rebinding (Time-of-Check Time-of-Use) mechanisms, an attacker can coerce the server into issuing arbitrary network requests to internal services, such as the cloud instance metadata service (IMDS) or loopback addresses. This bypass neutralizes previous network-boundary validation logic and allows blind read/write SSRF targeting internal infrastructure resources.

Amit Schendel
Amit Schendel
1 views•6 min read
•about 2 hours ago•CVE-2026-71303
7.7

CVE-2026-71303: Server-Side Request Forgery Bypass in Netflix Lemur Authority Updates

Netflix Lemur, an open-source TLS certificate management framework, is affected by a Server-Side Request Forgery (SSRF) vulnerability. This vulnerability arises from an incomplete patch for a previous security flaw, CVE-2026-55166. While Lemur version 1.9.2 validated the ACME directory URL against an allowlist during authority creation, it failed to perform the same checks when updating existing authorities. An authenticated user possessing an authority role can exploit this omission to replace the directory URL with internal or cloud metadata endpoints. During subsequent certificate issuance, the Lemur backend executes unauthorized requests, potentially leaking sensitive metadata or credentials.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 3 hours ago•CVE-2026-71307
7.7

CVE-2026-71307: Plaintext Credential Exposure in Netflix Lemur Destinations API

An authorization bypass and information disclosure vulnerability in Netflix Lemur before version 1.9.3 allows authenticated, low-privilege users to retrieve raw destination configurations, exposing plaintext credentials such as SFTP passwords and private key passphrases.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 4 hours ago•CVE-2026-71308
8.1

CVE-2026-71308: Missing Authorization and Lifecycle Hijacking in Netflix Lemur

Netflix Lemur before 1.9.3 contains a missing authorization vulnerability (CWE-862, CWE-639) when handling certificate creation, upload, or modification. Authenticated non-read-only users can manipulate the replaces parameter to silence expiration notifications and hijack certificate rotation tasks for arbitrary targets, leading to unauthorized TLS certificate deployment and traffic interception.

Alon Barad
Alon Barad
8 views•7 min read
•about 5 hours ago•CVE-2026-71317
6.5

CVE-2026-71317: Missing Authorization in Netflix Lemur Allows Unauthorized Subordinate CA Creation

CVE-2026-71317 is a critical Broken Object-Level Authorization (BOLA) / Missing Authorization vulnerability in Netflix Lemur versions prior to 1.9.3. When the self-service authority creation option is enabled (ADMIN_ONLY_AUTHORITY_CREATION = False), Lemur allows authenticated non-read-only users to request the creation of a subordinate Certificate Authority (sub-CA) chained to any internal parent authority, even if the requesting user lacks administrative or usage permissions over that parent CA. This allows attackers to generate subordinate CAs signed by trusted root certificates, exposing private keys and compromising the organizational PKI trust chain.

Alon Barad
Alon Barad
4 views•7 min read