Skip to main content

Grav Plugin Form CVE-2026-69087

| EUVDEUVD-2026-52280 HIGH
URL Redirection to Untrusted Site (Open Redirect) (CWE-601)
2026-08-03 VulnCheck GHSA-85vc-29fc-65gw
7.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Identify Grav form blueprint with Twig redirect field
  2. Delivery
    Craft POST request with malicious URL in redirect parameter
  3. Exploit
    Submit form unauthenticated over HTTP/HTTPS
  4. Execution
    Server evaluates Twig expression and calls Grav::redirect()
  5. Persist
    Browser receives 302 Location to attacker domain
  6. Impact
    Victim arrives at phishing site

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Redirect URL validation
MITRE ATT&CK

1 technique across 1 tactic: Initial Access

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

Exploitation Conditions

Exploitation requires that the target site's Grav form blueprint explicitly defines a redirect process action whose target is a Twig expression referencing a user-controllable form field, such as redirect: "{{ form.value('next') }}" or equivalent - this is an author-defined configuration choice, not the default behavior for all Grav forms. The plugin version must be 9.1.11 or 9.1.12 (the Twig evaluation feature was not present before v9.1.11). The attacker must be able to reach and submit the vulnerable form over HTTP/HTTPS (AV:N, PR:N). User interaction from the victim is required (UI:P in CVSS 4.0) - the victim must follow the redirected URL for phishing to succeed, though the redirect itself is server-issued and automatic in browser flows. Factors limiting exploitation include: the attacker cannot exploit this against installations using only hardcoded redirect strings; the site operator must have deliberately used user-input interpolation in the redirect target; and the phishing impact depends on the victim trusting and interacting with the attacker-controlled destination.

Impact

The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P, score 7.1) indicates a network-exploitable, low-complexity flaw requiring no privileges, with user interaction from the redirected victim. The VC:H rating reflects that successful phishing can yield high-value credential compromise even though the web server itself discloses no data directly. The AT:N assignment (no attack requirements) in the provided vector is debatable: the attack is only possible when a site operator has explicitly configured a form blueprint using a Twig redirect expression that references a user-controlled field - a non-default, author-defined pattern. This prerequisite meaningfully limits the exposure surface to forms intentionally built with that pattern, which argues for AT:P in CVSS 4.0 or AC:H in CVSS 3.1 under an independent assessment. No EPSS data was supplied; however, the low barrier to exploitation (HTTP POST, no auth) and the phishing payoff suggest moderate real-world exploitation likelihood once the vulnerable form pattern is identified. The absence of a KEV entry and lack of reported public exploit code indicate no confirmed widespread abuse at time of analysis, but the simplicity of the technique means automated opportunistic scanning is plausible. This is a genuine priority for any Grav deployment that uses user-supplied redirect fields in form blueprints, but low urgency for sites that do not.

Exploit ScenarioDerived

An attacker discovers a Grav site with a contact or multi-step form whose blueprint defines a post-submission redirect using a Twig expression such as redirect: "{{ form.value('next') }}". The attacker crafts an HTTP POST request to the form endpoint, setting the 'next' field value to https://evil.com/fake-login, and submits it without authentication. The server evaluates the Twig expression, calls Grav::redirect() with the attacker-supplied URL, and the victim's browser receives a 302 Location: https://evil.com/fake-login response, transparently delivering them to a phishing page styled to mimic the original site.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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 – Aug 03, 2026

Open redirect in Grav's form plugin (getgrav/grav-plugin-form) versions 9.1.11 through 9.1.12 allows unauthenticated form submitters to cause the server to issue a 302 redirect to an arbitrary external URL, enabling phishing attacks against site visitors. The vulnerability exists because the redirect process action, introduced in v9.1.11, evaluates user-supplied form field values through Twig expressions without sanitizing the resulting URL, and Grav::redirect() passes that output to the browser without origin validation. No public exploit code has been identified at time of analysis, and no active exploitation is confirmed in CISA KEV, though the low attack complexity and zero-authentication requirement make this straightforward to abuse against any site with a susceptible form blueprint.

RemediationAI

Upgrade grav-plugin-form to version 9.1.13 or later, which is the vendor-confirmed patched release per the advisory at https://github.com/getgrav/grav/security/advisories/GHSA-j2j9-gp72-wqvm. The VulnCheck advisory at https://www.vulncheck.com/advisories/grav-form-plugin-before-open-redirect-via-form-value-twig corroborates the fix boundary. If an immediate upgrade is not possible, the most effective compensating control is to audit all form blueprints and replace any redirect targets that interpolate user-supplied field values (e.g., redirect: "{{ form.value('next') }}") with hardcoded relative paths or a server-side allowlist of permitted destination URLs - this eliminates the injection point entirely without disabling the redirect feature. A secondary control is to implement a server-side middleware or Grav hook that validates the redirect destination against an allowlist of trusted origins before Grav::redirect() is called; however, this requires custom plugin development and carries a risk of incomplete coverage if new forms are added later without updating the allowlist. Disabling the form plugin entirely is the highest-assurance workaround but will break all form-based functionality on the site.

Affected VersionsENISA

grav-plugin-form 0 <9.1.13

Affected Packages

euvd grav_plugin_form fix: 9.1.13

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

Grav is a flat-file PHP CMS that uses the Twig templating engine for dynamic content rendering. The form plugin (CPE: cpe:2.3:a:getgrav:grav-plugin-form:*:*:*:*:*:*:*:*) provides form processing capabilities, including a 'redirect' process action that executes after form submission. Beginning with v9.1.11, that action passes redirect target strings through Twig evaluation before dispatching them to Grav::redirect(). The root cause is CWE-601 (URL Redirection to Untrusted Site, 'Open Redirect'): when a form blueprint declares a redirect target as a Twig expression referencing a user-controlled field - such as redirect: "{{ form.value('next') }}" - the Twig evaluator resolves that expression to whatever value the submitter supplied, and Grav::redirect() dispatches it as a 302 Location header with no scheme or host validation to enforce same-origin constraints.

Know when Open Redirect 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 (VulnCheck) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.1 LOW

AC:H reflects the prerequisite that a form blueprint must use user-controlled Twig interpolation in the redirect target; UI:R because the victim must follow the redirect for phishing impact; I:L captures the URL integrity violation with no direct server confidentiality or availability loss.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

Lifecycle Timeline

2
Patch available
Aug 03, 2026 - 14:02 EUVD
CVE Published
Aug 03, 2026 - 13:20 cve.org
HIGH 7.1

DescriptionCVE.org

The Grav form plugin (getgrav/grav-plugin-form) before 9.1.13 contains an open redirect vulnerability. Since v9.1.11, the redirect process action evaluates user-supplied form data inside Twig expressions, and Grav::redirect() accepts external URLs without origin validation. When a form blueprint defines a redirect target such as redirect: "{{ form.value('next') }}" using an attacker-controllable field, an unauthenticated form submitter can supply a value like https://evil.com to cause a 302 redirect to an arbitrary external site, enabling phishing.

Executive ViewAI

Why It Matters

Grav's form plugin (versions 9.1.11-9.1.12) contains an open redirect vulnerability enabling unauthenticated attackers to redirect site visitors to arbitrary external URLs, creating an active phishing channel. Organizations running vulnerable Grav instances with public-facing forms face direct risk of customer credential theft and brand exploitation through trust abuse.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Medium
popular flat-file CMS, moderate but not enterprise-ubiquitous footprint
Data Quality
7 sources
Confidence: High
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 HIGH
CISA KEV No
Public POC No
EPSS 0.2%
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2017-1000117 HIGH POC
8.8 Oct 05

A malicious third-party can give a crafted "ssh://..." URL to an unsuspecting victim, and an attempt to visit the URL ca

CVE-2024-52875 HIGH POC
8.8 Jan 31

GFI Kerio Control versions 9.2.5 through 9.4.5 contain an HTTP response splitting vulnerability in the dest parameter of

CVE-2016-5385 HIGH POC
8.1 Jul 19

PHP through 7.0.8 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and therefore does not protect

CVE-2013-2248 MEDIUM POC
5.8 Jul 20

Multiple open redirect vulnerabilities in Apache Struts 2.0.0 through 2.3.15 allow remote attackers to redirect users to

CVE-2018-11784 MEDIUM POC
4.3 Oct 04

When the default servlet in Apache Tomcat versions 9.0.0.M1 to 9.0.11, 8.5.0 to 8.5.33 and 7.0.23 to 7.0.90 returned a r

CVE-2012-6499 MEDIUM POC
5.8 Jan 12

Open redirect vulnerability in age-verification.php in the Age Verification plugin 0.4 and earlier for WordPress allows

CVE-2015-2863 MEDIUM POC
4.3 Jul 20

Open redirect vulnerability in Kaseya Virtual System Administrator (VSA) 7.x before 7.0.0.29, 8.x before 8.0.0.18, 9.0 b

CVE-2017-3528 MEDIUM POC
5.4 Apr 24

Vulnerability in the Oracle Applications Framework component of Oracle E-Business Suite (subcomponent: Popup windows (li

CVE-2012-0518 MEDIUM
4.7 Oct 16

Unspecified vulnerability in the Oracle Application Server Single Sign-On component in Oracle Fusion Middleware 10.1.4.3

CVE-2024-21641 MEDIUM POC
6.5 Jan 05

Flarum is open source discussion platform software. Rated medium severity (CVSS 6.5), this vulnerability is remotely exp

CVE-2015-5354 MEDIUM POC
5.8 Jul 01

Open redirect vulnerability in Novius OS 5.0.1 (Elche) allows remote attackers to redirect users to arbitrary web sites

CVE-2015-5461 MEDIUM POC
6.4 Jul 08

Open redirect vulnerability in the Redirect function in stageshow_redirect.php in the StageShow plugin before 5.0.9 for

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