Skip to main content

Formie EUVDEUVD-2026-85547

| CVE-2026-76087 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-09-23 https://github.com/verbb/formie GHSA-584p-f93j-wpgc
8.2
CVSS 3.1 · Vendor: https://github.com/verbb/formie
View

Attack ChainAIDerived

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

  1. Access
    Identify Formie site with multi-page forms
  2. Delivery
    Enumerate sequential submissionId via submit action
  3. Exploit
    Load victim's incomplete submission (no ownership check)
  4. Execution
    Overwrite/tamper submission field data
  5. Impact
    Poisoned data forwarded via notifications/integrations on completion

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

The affected Craft CMS site must use Formie multi-page forms or the save-for-later feature, since only incomplete submissions (isIncomplete=true) can be targeted; completed submissions are unaffected. Exploitation requires an in-progress submission to exist for enumeration/hijack, and the attacker needs no authentication, no session, and no user interaction against the anonymous formie/submissions/submit endpoint. Disabling multi-page forms or save-for-later reduces exposure but does not fully remediate; the only reliable fix is upgrading to Formie 3.1.31 (Craft 5) or 2.2.23 (Craft 4).

Impact

This is a genuine, high-impact authorization flaw (CWE-639 IDOR) that deserves prompt patching, though not emergency-tier response. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N, 8.2) is internally consistent with the description: a fully unauthenticated network attacker can enumerate sequential submission IDs against the anonymous formie/submissions/submit action with no session binding or ownership check, yielding high integrity impact (overwriting/hijacking another user's in-progress submission) and low confidentiality (exposure of the loaded submission's field data). I largely AGREE with the 8.2 score; the primary counterweight is that exploitation is gated on the target site actually using multi-page or save-for-later forms and on an in-progress incomplete submission existing to hijack - realistic but not universal. No EPSS score, no CISA KEV listing, and no public POC are present in the input, so there is no signal of active exploitation; the risk here is potential/technical rather than observed. Notably this is explicitly an INCOMPLETE remediation of prior advisory GHSA-pgxq-p76c-x9cg (which fixed save-submission but not submit), which raises the plausibility of a knowledgeable attacker revisiting the same class - a factor worth weighting above the raw absence of a POC.

Exploit ScenarioDerived

An unauthenticated attacker scripts requests to formie/submissions/submit, supplying guessed sequential submissionId values to load and overwrite other visitors' in-progress multi-page or save-for-later submissions. The tampered data is persisted and later forwarded through the form's notifications and integrations when the victim completes the submission. No public exploit code is identified at time of analysis, but the attack is mechanically simple (enumeration of an integer ID).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 23, 2026

Unauthenticated attackers can overwrite or hijack other users' in-progress multi-page or save-for-later submissions in the Craft CMS Formie plugin by enumerating sequential submission IDs against the anonymous formie/submissions/submit endpoint, which trusted a client-supplied submissionId with no session binding, ownership check, or edit-token validation (CWE-639, CVSS 3.1 base 8.2, vector AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N, so no authentication or user interaction is required). Affected installations are Formie 3.0.0 through 3.1.30 on Craft 5 and all versions before 2.2.23 on Craft 4; completed submissions are unaffected because the vulnerable code path only loads records with isIncomplete=true, meaning exposure requires the site to actually use multi-page forms or save-for-later. Exploitation status: no public exploit identified at time of analysis, and the flaw is not listed in CISA KEV; vendor-released patches exist (3.1.31 for Craft 5, 2.2.23 for Craft 4).

RemediationAI

Upgrade Formie to the vendor-released patch for your Craft branch: 3.1.31 on Craft 5 or 2.2.23 on Craft 4, per the advisory at https://github.com/verbb/formie/security/advisories/GHSA-584p-f93j-wpgc and the release tags https://github.com/verbb/formie/releases/tag/3.1.31 and https://github.com/verbb/formie/releases/tag/2.2.23. The upstream commits (https://github.com/verbb/formie/commit/323c2fe647a76fbccadf749728ee4ad9420efee1 and https://github.com/verbb/formie/commit/78a298ac3baf85ac283988dfce9cd42c9b958f16) implement the fix by requiring the resumed submission to match the session-bound submission or present a valid submissionEditToken, and by rejecting cross-form ID reuse; applying them on top of an older release is possible but the tagged releases are the supported path. There is no reliable workaround short of upgrading: disabling multi-page forms and the save-for-later feature removes the targetable incomplete-submission state and therefore the practical exploit path, but the advisory explicitly notes this only reduces exposure rather than removing the vulnerability, and it degrades legitimate user experience for long forms. The same patch release also fixes separate authorization and SSRF issues in integrations/form-settings and sent-notifications/get-resend-modal-content plus an XSS in the form importer, so deferring the upgrade leaves those additional weaknesses open. If immediate upgrade is impossible, temporary compensating controls include blocking or rate-limiting anonymous POSTs to the formie/submissions/submit endpoint at the WAF/reverse-proxy layer - which will break legitimate multi-page form submission for real users - or minimizing the window by monitoring for anomalous sequential submissionId enumeration in application logs; note that all of these are mitigations only and do not address the underlying missing authorization check.

Affected VersionsENISA

formie 3.0.0, < 3.1.31
formie < 2.2.23

Affected Packages

composer verbb/formie fix: 2.2.23, 3.1.31
euvd formie fix: 2.2.23, 3.1.31

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, euvd

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

Technical ContextAI · show details

The root cause is CWE-639, Authorization Bypass Through User-Controlled Key - a classic IDOR. Formie is a Craft CMS form-building plugin distributed as the Composer package verbb/formie (CPE pkg:composer/verbb_formie). Its front-end controller action SubmissionsController::actionSubmit accepts a client-supplied submissionId and, via the internal _populateSubmission helper, loaded any matching incomplete submission (isIncomplete=true) without verifying that the record belonged to the requesting session or that a valid edit token was presented. Because the submit action is reachable anonymously and submission IDs are sequential, an attacker could walk the ID space and persist tampered field data into another person's draft submission; that data would then be carried into notifications and integrations when the legitimate user finished the form. This was an incomplete remediation of GHSA-pgxq-p76c-x9cg, which added edit-token validation to the save-submission action but left the equivalent gap in submit. The upstream fix (commits 323c2fe and 78a298ac) adds an _authorizeExistingSubmission() gate: for site requests the submission ID must either match the session-bound submission returned by Form::getCurrentSubmission() or be accompanied by a valid submissionEditToken when editingSubmission is set, and cross-form ID reuse is rejected with a BadRequestHttpException. The same commit series also tightened front-end parameter handling by restricting title, statusId, and isSpam assignment to control-panel requests, and it bundles fixes for other advisories (missing authorization on integrations/form-settings permitting SSRF and integration-credential exposure, missing authorization on sent-notifications/get-resend-modal-content, sensitive parameters accepted by save-submission, and an XSS issue when importing forms with manipulated title, handle, or notification names), so upgrading also closes those separate weaknesses.

Know when the next one hits your stack

  • 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 (https://github.com/verbb/formie) PRIMARY 8.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
vuln.today AI 8.2 HIGH

Unauthenticated remote enumeration of sequential IDs (PR:N/AC:L) lets an attacker overwrite another user's submission (I:H) with incidental data read (C:L) and no availability impact.

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

Primary rating from Vendor (https://github.com/verbb/formie).

CVSS VectorVendor: https://github.com/verbb/formie

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
High
Availability
None

DescriptionCVE.org

Impact

The anonymous front-end action formie/submissions/submit (SubmissionsController::actionSubmit) trusted a client-supplied submissionId when loading an incomplete submission, with no session binding, ownership check, or edit token validation.

An unauthenticated attacker could enumerate sequential submission IDs and overwrite or hijack another user's in-progress (multi-page / save-for-later) submission. Tampered data could be persisted and forwarded via notifications and integrations when the submission was completed.

Completed submissions were not affected (isIncomplete=true filter). This is an incomplete remediation of GHSA-pgxq-p76c-x9cg, which added edit-token validation to save-submission but not to submit.

Patches

Fixed in 3.1.31 (Craft 5) and 2.2.23 (Craft 4).

When resuming an existing submission on a site request, the submission ID must match the session-bound submission (Form::getCurrentSubmission()) or a valid submissionEditToken when editingSubmission is set. Cross-form submission ID reuse is also rejected.

Workarounds

No reliable workaround without upgrading. Disabling multi-page forms or save-for-later reduces exposure but does not remove the vulnerability.

  • Reported by Jorge González (jorge@jmilla.es)

Technical POC Analysis

CWE-639 (Authorization Bypass Through User-Controlled Key); the advisory also tags CWE-862 (Missing Authorization).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

The Craft CMS Formie plugin - versions 3.0.0 through 3.1.30 on Craft 5 and all releases before 2.2.23 on Craft 4 - allows unauthenticated outsiders to overwrite or hijack visitors' in-progress multi-page and save-for-later form submissions by simply guessing sequential submission IDs. Any organization using those form features risks corrupted or lost customer and prospect data, plus the reputational harm of having user submissions altered by third parties, and the attack requires no credentials or user interaction. Vendor patches are available, so this is a manageable, time-bound remediation rather than an open-ended exposure.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Low
Most popular form plugin, but for niche Craft CMS ecosystem
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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