Description
The Grav Form plugin (getgrav/grav-plugin-form) versions 8.0.6 through 9.1.19 select the reCAPTCHA version to validate based solely on which response field key is present in the submitted payload. On a site configured for reCAPTCHA v3, an anonymous attacker can place their v3 token under the v2 field name (g-recaptcha-response instead of token), causing validation to use the v2 branch, which never applies the score threshold or verifies the expected action. This results in a complete bypass of reCAPTCHA v3 bot protection. The issue is fixed in version 9.1.20.
Published: 2026-09-04
Score: 9.3 Critical
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Grav Form plugin (getgrav/grav-plugin-form) before version 9.1.20 validates a reCAPTCHA response based only on the name of the payload field. When a site is configured to use reCAPTCHA v3, an attacker can submit the v3 token under the legacy field name used for v2, which causes the plugin to route validation through the v2 logic. This branch does not enforce the score threshold or check the expected action, resulting in a complete bypass of the bot protection layer. The classical weakness here is an improper restriction on a resource that leads to unauthorized credential usage, identified as CWE‑807.

Affected Systems

Affected systems are Grav CMS installations that include the Grav Form plugin, specifically plugin versions 8.0.6 through 9.1.19. The vulnerability is present in all releases in that range regardless of other plugins or configurations. Version 9.1.20 and later contain the fix.

Risk and Exploitability

The CVSS score is 9.3, indicating critical severity. The EPSS score is not available, so the probability of exploitation cannot be quantified, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector is a remote anonymous attacker submitting a form and placing a reCAPTCHA v3 token into the legacy field name (g‑recaptcha‑response). Because the plugin validates using the v2 branch, the token is accepted without score verification or action checking, allowing bot traffic to bypass protection. Given the high severity score and the potential for widespread abuse, the risk to affected sites is high and must be rectified immediately.

Generated by OpenCVE AI on September 4, 2026 at 12:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update Grav Form plugin to version 9.1.20 or later, which ensures correct validation logic for reCAPTCHA v3 tokens.
  • Verify that your Grav configuration enforces the use of the correct form field for reCAPTCHA v3 tokens and disables any fallback to legacy field names.
  • Review custom form handling code to ensure the reCAPTCHA response is extracted only from the intended field and that no legacy field names are accepted.

Generated by OpenCVE AI on September 4, 2026 at 12:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 04 Sep 2026 11:45:00 +0000

Type Values Removed Values Added
Description The Grav Form plugin (getgrav/grav-plugin-form) versions 8.0.6 through 9.1.19 select the reCAPTCHA version to validate based solely on which response field key is present in the submitted payload. On a site configured for reCAPTCHA v3, an anonymous attacker can place their v3 token under the v2 field name (g-recaptcha-response instead of token), causing validation to use the v2 branch, which never applies the score threshold or verifies the expected action. This results in a complete bypass of reCAPTCHA v3 bot protection. The issue is fixed in version 9.1.20.
Title Grav Form Plugin before 9.1.20 reCAPTCHA v3 Authentication Bypass
First Time appeared Getgrav
Getgrav grav
Weaknesses CWE-807
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Vendors & Products Getgrav
Getgrav grav
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N'}

cvssV4_0

{'score': 9.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-04T11:30:04.127Z

Reserved: 2026-09-04T11:00:28.731Z

Link: CVE-2026-85602

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-04T12:17:23.903

Modified: 2026-09-04T12:17:23.903

Link: CVE-2026-85602

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-04T12:30:17Z

Weaknesses
  • CWE-807

    Reliance on Untrusted Inputs in a Security Decision