Skip to main content

Formwork CVE-2026-105950

| EUVDEUVD-2026-93467 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-06 VulDB GHSA-3j63-cg5x-w8f2
5.1
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privilege content author
  2. Delivery
    Inject malicious formaction attribute
  3. Exploit
    Sanitizer fails to neutralize URI
  4. Execution
    Victim views and activates control
  5. Impact
    Execute JavaScript in victim session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires an authenticated account with privileges to submit HTML content that passes through Formwork's DomSanitizer (PR:L) - this is not an unauthenticated flaw. The specific trigger is an HTML element bearing a 'formaction' attribute, which in Formwork ≤2.3.12 was absent from the HtmlReference URI-attribute list and therefore not URI-sanitized, allowing a javascript:-style or script-bearing payload to survive. Exploitation is further LIMITED by required victim interaction (UI:P): a second user must view and activate the injected form control for the payload to execute. The flaw is fixed in 2.3.13, which adds 'formaction' (and related attributes like archive, cite, data, poster, usemap) to the sanitized set.

Impact

This is a medium-severity stored/DOM cross-site scripting flaw (CWE-79) whose real-world priority is modest. The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N, score 5.1) tells a consistent story: remotely reachable and low-complexity, but gated by two meaningful barriers - PR:L means the attacker must already hold a low-privilege authenticated account (i.e. an account able to submit the sanitizer-processed content), and UI:P means a victim must interact with the malicious element before the payload fires. Impact is limited to integrity in the victim's browser context (VI:L) with no confidentiality or availability impact asserted by the vendor. No EPSS score was provided, the CVE is NOT on CISA KEV, and no public proof-of-concept was supplied in the intelligence - so there is no public exploit identified at time of analysis. The only corroborating sources are VulDB (the reporter) and the vendor's own GHSA advisory plus the patch commit, which confirm the vulnerability and fix but indicate no observed exploitation. Note one conflict worth flagging to defenders: the vendor scored confidentiality as VC:N, yet formaction-based XSS executing in an authenticated admin/editor session can realistically read session-scoped data, so my independent assessment raises confidentiality to Low - verify impact scope against your deployment's role model. Net: a legitimate bug to patch on a normal cycle, not an emergency.

Exploit ScenarioDerived

An attacker holding a low-privilege authoring account in a Formwork site injects a crafted 'formaction' attribute that the DomSanitizer fails to recognize as a URI-bearing attribute, smuggling a script payload past sanitization. When an administrator or another user later views the content and activates the associated form control (e.g. clicks the button), the formaction payload executes JavaScript in their browser session. No public exploit code was provided in the intelligence, so exploitation would require the attacker to craft the payload themselves.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 06, 2026

Stored cross-site scripting in the Formwork PHP content management system (versions up to and including 2.3.12) lets an authenticated user who can submit HTML content inject a script-bearing 'formaction' URI that survives the built-in DomSanitizer. The payload does not fire on its own: a second user must view and activate the injected form control (UI:P/UI:R) for the script to execute, which is why this is rated medium severity (CVSS 4.0 base 5.1; independently assessed CVSS 3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N). The flaw is fixed in Formwork 2.3.13, and no public exploit code has been identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade Formwork to 2.3.13 (https://github.com/getformwork/formwork/releases/tag/2.3.13), which incorporates the fix commit 729701e59c5886685c5a1d477bdc3035e41f18b1 and PR https://github.com/getformwork/formwork/pull/940; if a full upgrade is not immediately possible, the same change can be back-ported by adding 'formaction' (and the related URI attributes archive, background, cite, classid, codebase, data, longdesc, manifest, poster, src, usemap) to the sanitized attribute set in formwork/src/Sanitizer/Reference/HtmlReference.php - note that a hand-applied backport will be overwritten by a later framework update and must be re-validated against the vendor diff. As compensating controls, restrict the ability to submit raw/sanitized HTML to trusted accounts only (the flaw requires an authenticated user with HTML submission privileges), or temporarily disable rendering of user-supplied HTML blocks and form controls in the affected application, which reduces functionality for legitimate content authors but removes the injection path. Because exploitation also requires a victim to view and activate the injected control, deploying a Content-Security-Policy that blocks inline script and javascript: URIs limits impact but does not fix the underlying sanitizer gap; it is a backstop, not a substitute for upgrading to 2.3.13. Additional context is in the GitHub advisory at https://github.com/getformwork/formwork/security/advisories/GHSA-p78q-v3pr-p87j and the VulDB entry at https://vuldb.com/vuln/413925.

Affected VersionsENISA

formwork 2.3.12
formwork 2.3.8
formwork 2.3.3
formwork 2.3.4
formwork 2.3.7
formwork 2.3.11
formwork 2.3.1
formwork 2.3.9
formwork 2.3.5
formwork 2.3.10
formwork 2.3.6
formwork 2.3.0
formwork 2.3.2

Affected Packages

euvd formwork no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Formwork ships a PHP HTML sanitizer (formwork/src/Sanitizer/DomSanitizer.php) that cleans user-supplied markup by walking DOM nodes and URL-bearing attributes through an allowlist defined in formwork/src/Sanitizer/Reference/HtmlReference.php, which is used by DomSanitizer::sanitizeNodeAttribute(). In Formwork <=2.3.12 that allowlist covered URI attributes such as 'src' and 'background' but omitted 'formaction', so a form control carrying formaction="javascript:..." (or another script-bearing scheme) bypassed URI scheme validation and was emitted into rendered output. This is a classic CWE-79 cross-site scripting case with an insufficient allowlist root cause rather than an encoding failure: the sanitizer simply never inspected the attribute. The upstream fix (commit 729701e59c5886685c5a1d477bdc3035e41f18b1, PR #940) expands the sanitized URI-attribute set to include 'formaction' alongside 'archive', 'background', 'cite', 'classid', 'codebase', 'data', 'longdesc', 'manifest', 'poster', 'src' and 'usemap'. The single affected CPE is cpe:2.3:a:getformwork:formwork:*:*:*:*:*:*:*:*, covering all releases from the affected line through 2.3.12; the technology stack is PHP with server-side DOM sanitization, tagged PHP/XSS/Formwork.

Know when Formwork gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulDB) PRIMARY 5.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.4 MEDIUM

Authenticated authoring access needed (PR:L) and victim must activate the control (UI:R); XSS crosses into the victim's browser context (S:C) with limited confidentiality and integrity, no availability impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

A security vulnerability has been detected in getformwork formwork up to 2.3.12. Impacted is the function DomSanitizer::sanitizeNodeAttribute of the file formwork/src/Sanitizer/DomSanitizer.php of the component URI Sanitizer. Such manipulation of the argument formaction leads to cross site scripting. The attack may be launched remotely. Upgrading to version 2.3.13 is recommended to address this issue. The name of the patch is 729701e59c5886685c5a1d477bdc3035e41f18b1. Upgrading the affected component is advised.

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
Low
Formwork is a niche flat-file PHP CMS with limited enterprise footprint
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy