CVE-2026-26188: Solspace/craft freeform Cross-Site Scripting Vulnerability

LOW
Advisory Identifier: GHSA-jp3q-wwp3-pwv9
CWE-79
Published
Advisory Summary

CVE-2026-26188 is a LOW cross-site scripting vulnerability (CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')) affecting Solspace/craft freeform libraries in the Packagist ecosystem. The issue involves freeform craft plugin cp ui (builder/integrations) has stored cross-site scripting (xss) issue. Remediation is available by upgrading affected packages to version 5.14.7.

CVE-2026-26188 at a Glance

CVE Identifier CVE-2026-26188
GHSA Identifier GHSA-jp3q-wwp3-pwv9
Severity LOW
CVSS v3.1 Base Score N/A
CWE Classification CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
Affected Product Solspace/craft freeform
Package Ecosystem Packagist
Published Date
Last Updated

How to Fix CVE-2026-26188

To remediate this vulnerability, upgrade all affected Solspace/craft freeform dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

solspace/craft-freeform fixed: 5.14.7
Upgrade solspace/craft-freeform to 5.14.7
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for solspace/craft-freeform

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-26188, inspect your project dependencies for Solspace/craft freeform:

inspect dependencies for solspace/craft-freeform

Analyze the terminal output to locate any version of Solspace/craft freeform in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 5.14.7), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'), where the product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users. In Solspace/craft freeform, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

**Summary** An authenticated, low-privilege user (able to create/edit forms) can inject arbitrary HTML/JS into the Craft Control Panel (CP) builder and integrations views. User-controlled form labels and integration metadata are rendered with `dangerouslySetInnerHTML` without sanitization, leading to stored XSS that executes when any admin views the builder/integration screens. **Affected Product** - Ecosystem: Packagist (Craft CMS plugin) - Package: solspace/craft-freeform - Version: <= 5.14.6 (latest observed). Likely all 5.x until patched. **Details** - Root cause: Multiple user-controlled strings (field labels, section labels, integration icons, short names, WYSIWYG previews) are injected into React components using `dangerouslySetInnerHTML` without sanitization. - Evidence: `dangerouslySetInnerHTML` on user-controlled properties in bundled CP JS at [packages/plugin/src/Resources/js/client/client.js](packages/plugin/src/Resources/js/client/client.js#L1). **PoCs** - Label-based XSS: 1. In Craft CP, create/edit a Freeform field and set its label to `<img src=x onerror="alert('xss-label')">`. 2. Open the form builder view containing the field. 3. Alert executes (stored XSS). - Integration icon SVG: 1. Set an integration "icon SVG" to `<svg><script>alert('xss-icon')</script></svg>`. 2. Open the integrations CP view. 3. Script executes. **Impact** Arbitrary JS in admin CP; session/CSRF token theft; potential full admin takeover via DOM-driven actions. **Remediation** - Sanitize/HTML-encode all user-controlled strings before passing to `dangerouslySetInnerHTML`, or avoid it for labels/titles/icons. - Server-side: strip/escape disallowed tags on save for fields, integration metadata, WYSIWYG content. - Add regression tests with `<img onerror>` payloads to ensure no execution in builder/integration views. **Workarounds** - Restrict form-edit permissions to trusted admins only until patched. - Consider CSP that disallows inline scripts (defense-in-depth only). **Credits** - Discovered by https://www.linkedin.com/in/praveenkavinda/ | Prav33N-Sec.

CVE-2026-26188 Affected Solspace/craft freeform Versions

1 component(s)
Fixed Versions:
5.14.7
Product / Package Ecosystem Affected Versions Fixed Version
solspace/craft-freeform
Packagist
≥ 5.0.0
< 5.14.7
5.14.7

References

Frequently Asked Questions

What is CVE-2026-26188?
CVE-2026-26188 is a security vulnerability in Solspace/craft freeform involving Freeform Craft Plugin CP UI (builder/integrations) has Stored Cross-Site Scripting (XSS) issue under CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting').
Which Solspace/craft freeform versions are affected?
Affected versions include releases prior to 5.14.7 across affected packages: solspace/craft-freeform.
What version fixes CVE-2026-26188?
Upgrading to 5.14.7 (or the latest patched release for your respective branch) resolves the vulnerability.
Is solspace/craft-freeform affected?
Yes, solspace/craft-freeform is affected in releases prior to 5.14.7. Upgrade your dependency to 5.14.7 or later.
What CWE is associated with CVE-2026-26188?
CVE-2026-26188 is classified under CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') (The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.).
How can I check Packagist dependencies for CVE-2026-26188?
Run the dependency tree command: 'inspect dependencies for solspace/craft-freeform'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-jp3q-wwp3-pwv9",
  "modified" : "2026-02-13T14:57:31Z",
  "published" : "2026-01-22T21:41:14Z",
  "aliases" : [ "CVE-2026-26188" ],
  "summary" : "Freeform Craft Plugin CP UI (builder/integrations) has Stored Cross-Site Scripting (XSS) issue",
  "details" : "**Summary**\nAn authenticated, low-privilege user (able to create/edit forms) can inject arbitrary HTML/JS into the Craft Control Panel (CP) builder and integrations views. User-controlled form labels and integration metadata are rendered with `dangerouslySetInnerHTML` without sanitization, leading to stored XSS that executes when any admin views the builder/integration screens.\n\n**Affected Product**\n- Ecosystem: Packagist (Craft CMS plugin)\n- Package: solspace/craft-freeform\n- Version: <= 5.14.6 (latest observed). Likely all 5.x until patched.\n\n**Details**\n- Root cause: Multiple user-controlled strings (field labels, section labels, integration icons, short names, WYSIWYG previews) are injected into React components using `dangerouslySetInnerHTML` without sanitization.\n- Evidence: `dangerouslySetInnerHTML` on user-controlled properties in bundled CP JS at [packages/plugin/src/Resources/js/client/client.js](packages/plugin/src/Resources/js/client/client.js#L1).\n\n**PoCs**\n- Label-based XSS:\n  1. In Craft CP, create/edit a Freeform field and set its label to `<img src=x onerror=\"alert('xss-label')\">`.\n  2. Open the form builder view containing the field.\n  3. Alert executes (stored XSS).\n- Integration icon SVG:\n  1. Set an integration \"icon SVG\" to `<svg><script>alert('xss-icon')</script></svg>`.\n  2. Open the integrations CP view.\n  3. Script executes.\n\n**Impact**\nArbitrary JS in admin CP; session/CSRF token theft; potential full admin takeover via DOM-driven actions.\n\n**Remediation**\n- Sanitize/HTML-encode all user-controlled strings before passing to `dangerouslySetInnerHTML`, or avoid it for labels/titles/icons.\n- Server-side: strip/escape disallowed tags on save for fields, integration metadata, WYSIWYG content.\n- Add regression tests with `<img onerror>` payloads to ensure no execution in builder/integration views.\n\n**Workarounds**\n- Restrict form-edit permissions to trusted admins only until patched.\n- Consider CSP that disallows inline scripts (defense-in-depth only).\n\n**Credits**\n- Discovered by https://www.linkedin.com/in/praveenkavinda/ | Prav33N-Sec.",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:P"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "solspace/craft-freeform"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "5.0.0"
      }, {
        "fixed" : "5.14.7"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 5.14.6"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/solspace/craft-freeform/security/advisories/GHSA-jp3q-wwp3-pwv9"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-26188"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/solspace/craft-freeform/commit/b9adad6cdf1eba5400aae8b1ae39bd7d4d33af5e"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/solspace/craft-freeform"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/solspace/craft-freeform/releases/tag/v5.14.7"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-79" ],
    "severity" : "LOW",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-01-22T21:41:14Z",
    "nvd_published_at" : "2026-02-12T23:16:09Z"
  }
}