Summary
CVE-2026-52889 is a critical Server-Side Template Injection (SSTI) vulnerability in Formie, a widely used form-building plugin for Craft CMS. The plugin passed request-controlled values used as Hidden field defaults (HTTP User Agent, Referer URL, Current URL, Query Parameter, and Cookie Value) into Craft’s Twig rendering engine without proper sanitization, allowing an unauthenticated attacker to inject and execute Twig template syntax server-side. The issue carries a CVSS v3.1 base score of 9.8 (Critical) and affects all Formie sites exposing a public form that uses a Hidden field with a request-derived default value.
Technical details
- Root cause: Formie’s Hidden field supported dynamic default values sourced directly from incoming HTTP request data (User Agent header, Referer header, current URL, query string parameters, and cookie values), and these values were rendered through Craft CMS’s Twig templating engine without sanitizing or escaping Twig syntax.
- Trigger conditions: A public-facing form must contain a Hidden field configured to use one of the affected request-derived default value types.
- Attack vector: Network-based and unauthenticated — an attacker can simply submit a crafted HTTP request (e.g., via a manipulated User-Agent/Referer header, query parameter, or cookie) to a public form endpoint to have malicious Twig syntax evaluated on the server.
- Impact: Because Craft’s Twig environment exposes application objects, successful exploitation can lead to disclosure of sensitive information, modification of application state, and potentially remote code execution.
Affected software
- verbb/formie (Craft CMS plugin), versions from 3.0.0-beta.1 up to and including 3.1.26
Severity
- CVSS v3.1 Base Score: 9.8 (Critical)
- Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Mitigation and recommended actions
- Immediate: Upgrade Formie to version 3.1.27 or later, which restricts Twig rendering to admin-authored "custom default" templates only, removing evaluation of request-derived values as Twig.
- If immediate patching is not possible: Audit all public forms for Hidden fields configured with dynamic defaults (User Agent, Referer URL, Current URL, Query Parameter, or Cookie Value) and reconfigure or disable those fields until the upgrade can be applied. Consider restricting or filtering suspicious header/query/cookie values at a WAF or reverse proxy pending the update.

