PatchClock

PHP security digest · 23 Sep 2026

Formie: Integration form-settings action allows SSRF and exfiltration of stored integration credentials

High CVE-2026-76086

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

PackageAffectedFixed in
verbb/formie>= 3.0.0, < 3.1.313.1.31
verbb/formie< 2.2.232.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.

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

From OSV.dev, which gathers the GitHub Advisory Database, FriendsOfPHP and Drupal security advisories; the summary is theirs. The description, affected versions, weakness and credits are from the GitHub Advisory Database (CC BY 4.0). "In plain words", "Am I affected?" and "If you cannot update yet" are based on that advisory, and checked to name no version it does not.