- Package
- verbb/formie
- Fixed in
- 3.1.31, 2.2.23
- Published
- Wed 23 Sep 2026, 19:33 LisbonUpdated Mon 26 Oct 2026, 01:25 Lisbon
- Installs on Packagist
- 427K
In plain words
An authenticated user without the appropriate form integration permissions could make Formie send requests to an attacker-controlled host, exposing stored integration API keys or OAuth tokens. They could also probe internal network endpoints and read the responses. This includes low-privileged front-end members on sites with public registration.
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| verbb/formie | >= 3.0.0, < 3.1.31 | 3.1.31 |
| verbb/formie | < 2.2.23 | 2.2.23 |
Am I affected?
Check composer.lock for verbb/formie: affected versions are below 2.2.23, or >= 3.0.0, < 3.1.31. If affected, check whether low-privileged users can authenticate, including through front-end registration, and whether configured CRM, email-marketing or webhook integrations hold credentials. The vulnerable action is formie/integrations/form-settings; lacking form integration permissions does not prevent access. Fixed versions are 3.1.31 for Craft 5 and 2.2.23 for Craft 4.
What to do
Check which version you have, then update to a fixed release for your branch (3.1.31, 2.2.23):
composer show verbb/formie | grep versions
composer update verbb/formie
If your version constraint in composer.json keeps you below a fixed release, raise it first. Whether your configuration is affected, and the exact version ranges, are in the advisory itself.
If you cannot update yet
Restrict front-end user registration and limit control panel access until upgraded. No configuration-only workaround fully mitigates the issue.
The advisory's description
Impact
The control panel action formie/integrations/form-settings (IntegrationsController::actionFormSettings) was reachable by any authenticated user without the appropriate form integration permissions. The action applied request-supplied settings to a fully configured integration via setAttributes($settings, false), allowing an attacker to overwrite outbound host properties (e.g. apiUrl) while the server sent stored API keys or OAuth tokens to the attacker-controlled host. The remote response was returned in the JSON body (non-blind SSRF).
This is an incomplete remediation of GHSA-cvpc-hccg-wmw4. The form-settings action was excluded from the permission gate added in 3.1.28.
Any site where a low-privileged user can authenticate (including front-end members on sites with public registration) could exfiltrate CRM/email-marketing/webhook integration credentials and probe internal network endpoints.
Patches
Fixed in 3.1.31 (Craft 5) and 2.2.23 (Craft 4).
The action now requires a CP request, a valid formId, and form integration permissions (formie-showFormIntegrations / per-form variant on Craft 5; formie-manageFormIntegrations / per-form variant on Craft 4). Request settings are filtered to an allowlist; URL, host, and credential properties cannot be overridden from user input.
Workarounds
Restrict front-end user registration and limit CP access until upgraded. No configuration-only workaround fully mitigates the issue.
- Reported by Jorge González (jorge@jmilla.es)
Weakness: CWE-862 Missing Authorization; CWE-915 Improperly Controlled Modification of Dynamically-Determined Object Attributes; CWE-918 Server-Side Request Forgery (SSRF). Reported by Pig-Tail.
The advisory
- GitHub Advisory Database: GHSA-v3f3-cmj4-cvj9, with who is affected and how
- OSV.dev: GHSA-v3f3-cmj4-cvj9
- The week's digest, with the other advisories from 21 Sep 2026
- All advisories for verbb/formie