Skip to main content

Grav API Plugin CVE-2026-62668

| EUVDEUVD-2026-62538 CRITICAL
Server-Side Request Forgery (SSRF) (CWE-918)
2026-08-19 GitHub_M
9.4
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain API key with api.webhooks.write
  2. Delivery
    Register webhook URL with file/gopher/http scheme
  3. Exploit
    Server dereferences target without protocol restriction
  4. Execution
    Read local files or cloud metadata credentials
  5. Impact
    Pivot to internal services and exfiltrate data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential 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 an authenticated Grav API key whose scope includes api.webhooks.write (per CVSS PR:L); an unscoped/unprivileged key or session cannot register webhooks. Beyond that, no non-default configuration is needed - the vulnerable FILTER_VALIDATE_URL-only validation and unrestricted cURL protocols are the default behavior in grav-plugin-api versions before 1.0.6. The attack is limited to what the server can reach on the network: file disclosure requires readable local paths, and metadata/internal-pivot impact requires that the Grav host actually has network access to 169.254.169.254 or internal services (a host with strict egress filtering and IMDSv2 substantially limits the payoff). No user interaction is required.

Impact

The vendor CVSS 4.0 score of 9.4 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H) is aggressive: it treats the SSRF as yielding full confidentiality, integrity, and availability impact on both the vulnerable and subsequent systems, which is plausible for gopher-based writes to internal services and metadata-credential theft but is an upper-bound reading - the described primary impact (retrieving local files and response bodies, pivoting requests) is most reliably a confidentiality/pivot issue, with integrity/availability contingent on what internal services are reachable. The one genuine gating factor is PR:L: the attacker must already possess an API key carrying the api.webhooks.write scope, so this is not an unauthenticated internet-wide bug, and no EPSS score, KEV listing, or public PoC was provided to indicate active or automated exploitation. That said, the low attack complexity and the high value of the targets (cloud metadata credentials, internal-service pivot) mean any operator who issues scoped API keys to semi-trusted integrators or tenants should treat this as urgent and patch promptly rather than deferring on the assumption that the required privilege makes it low-risk. The realistic risk is high for multi-tenant or integration-heavy Grav deployments and lower for single-operator sites where the only key holders are fully trusted administrators.

Exploit ScenarioDerived

An attacker holding a Grav API key scoped for api.webhooks.write registers a webhook pointing at http://169.254.169.254/latest/meta-data/iam/security-credentials/ (or a file:// path). When the dispatcher fires, the Grav server fetches the target and returns the response body - including temporary cloud IAM credentials or local file contents - back to the attacker. No public PoC is identified at time of analysis, but the low attack complexity means exploitation requires only a valid crafted webhook registration request.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 19, 2026

Server-Side Request Forgery in the Grav API plugin (grav-plugin-api) for Grav CMS before 1.0.6 lets a caller holding the api.webhooks.write permission register webhook URLs that the server dereferences with no protocol allow-listing. Because WebhookController.php validates the URL only with FILTER_VALIDATE_URL and WebhookDispatcher.php builds cURL without CURLOPT_PROTOCOLS/CURLOPT_REDIR_PROTOCOLS, an attacker can force the server to fetch file://, gopher://, dict://, and private/link-local targets, exfiltrating local files and internal HTTP responses including cloud metadata credentials. There is no public exploit identified at time of analysis and it is not in CISA KEV, but the root cause and fix are confirmed in the vendor advisory and commit.

RemediationAI

Vendor-released patch: upgrade the Grav API plugin to version 1.0.6, which replaces the bare FILTER_VALIDATE_URL check with a validateWebhookUrl() routine (see commit dfcc947f and release https://github.com/getgrav/grav-plugin-api/releases/tag/1.0.6). If you cannot upgrade immediately, the most effective compensating control is to revoke or withhold the api.webhooks.write scope from all API keys except fully trusted administrators, which disables the attack path at the cost of losing webhook registration for those integrators; additionally, restrict outbound egress from the Grav host so it cannot reach 169.254.169.254 and RFC1918/link-local ranges (blocks metadata and internal-pivot abuse but may break legitimate internal webhooks), and enforce IMDSv2 on cloud instances to blunt metadata-credential theft. Consult GHSA-58q8-f7v4-w2vf for vendor guidance. Note that the same 1.0.6 release also carries unrelated fixes (GHSA-x7hm scope-capping, GHSA-p97c-g455-q447 super-admin target guards), so upgrading closes several issues at once.

Affected VersionsENISA

grav-plugin-api < 1.0.6
grav < 2.0.4

Affected Packages

euvd grav fix: 2.0.4
euvd grav_plugin_api fix: 1.0.6

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability is a classic CWE-918 SSRF in a PHP webhook dispatcher. Grav is a flat-file CMS (cpe:2.3:a:getgrav:grav) and the API plugin (cpe:2.3:a:getgrav:grav-plugin-api) exposes RESTful headless access, including a webhook registration feature. FILTER_VALIDATE_URL only checks syntactic well-formedness of a URL - it does not restrict scheme, so file:, gopher:, and dict: pass validation as readily as http:. cURL, when handed such a URL without CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS restrictions, will happily speak those protocols and follow redirects into them, turning the server into a request proxy. gopher:// is especially dangerous because it lets an attacker craft arbitrary line-based payloads to internal TCP services (e.g. Redis, SMTP), while file:// yields local file disclosure and 169.254.169.254 access yields cloud instance-metadata credentials.

Know when Grav 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 (GitHub_M) PRIMARY 9.4 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
vuln.today AI 8.5 HIGH

Attacker needs an api.webhooks.write-scoped key (PR:L); SSRF crosses a trust boundary into internal/metadata systems (S:C) and primarily yields high confidentiality (file and credential disclosure) with limited integrity via internal pivots.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Aug 19, 2026 - 16:17 EUVD
CVE Published
Aug 19, 2026 - 15:29 cve.org
CRITICAL 9.4

DescriptionCVE.org

Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, the Grav API plugin WebhookController.php accepts webhook URLs after only FILTER_VALIDATE_URL syntax validation, and WebhookDispatcher.php initializes cURL without CURLOPT_PROTOCOLS or CURLOPT_REDIR_PROTOCOLS restrictions. An account with api.webhooks.write can submit file, dict, gopher, private-network, or link-local targets, retrieve local files and delivery response bodies, and pivot requests to internal services or cloud metadata endpoints. This issue is fixed in version 1.0.6.

Executive ViewAI

Why It Matters

Grav CMS API plugin versions before 1.0.6 contain a critical vulnerability allowing attackers with webhook administration permissions to steal sensitive data, including cloud credentials and local files, from affected servers. This poses immediate risk of credential compromise and unauthorized access to cloud infrastructure and internal systems. Immediate isolation of vulnerable systems and credential rotation is required to prevent security breach.

Business Impact: Severe
Compensating Controls

Disable grav-plugin-api on all affected systems immediately. No vendor-released patch identified at time of analysis. Implement network isolation by restricting outbound connections from Grav servers to standard protocols (HTTP/HTTPS only), blocking file://, gopher://, dict://, and other SSRF-prone protocol handlers. Restrict api.webhooks.write permission to essential administrators only. Rotate and revoke all cloud credentials and service keys accessible from affected systems. Enable continuous monitoring of server and cloud provider audit logs for exploitation attempts or unauthorized credential access.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Low
optional API plugin for a niche flat-file CMS
Data Quality
6 sources
Confidence: High

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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

47
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +47
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

More in Grav

View all
CVE-2025-66294 HIGH POC
8.7 Dec 01

Server-side template injection (SSTI) in Grav (getgrav/grav) prior to 1.8.0-beta.27 allows an authenticated attacker hol

CVE-2025-66301 HIGH POC
8.6 Dec 01

Broken access control in Grav CMS (CWE-285) before 1.8.0-beta.27 lets an authenticated editor-level user escalate their

CVE-2025-50286 HIGH POC
8.1 Aug 06

A Remote Code Execution (RCE) vulnerability in Grav CMS v1.7.48 allows an authenticated admin to upload a malicious plug

CVE-2024-34082 CRITICAL POC
9.9 May 15

Grav is a file-based Web platform. Rated critical severity (CVSS 9.9), this vulnerability is remotely exploitable, low a

CVE-2021-47812 CRITICAL POC
9.8 Jan 16

GravCMS 1.10.7 allows unauthenticated remote attackers to write arbitrary YAML configuration files, leading to full serv

CVE-2026-65008 CRITICAL POC
9.3 Jul 21

Remote code execution in Grav CMS 2.0.4 (fixed in 2.0.7) lets an authenticated user holding the admin.pages or api.pages

CVE-2026-75827 CRITICAL POC
9.3 Aug 18

Remote code execution in Grav CMS before 2.0.15 allows attackers holding page-edit or blueprint-config privileges to wri

CVE-2026-75837 CRITICAL POC
9.3 Aug 18

Vertical privilege escalation in Grav CMS before 2.0.14 lets a delegated administrator holding only the admin.users perm

CVE-2026-75828 CRITICAL POC
9.3 Aug 18

Stored cross-site scripting in Grav CMS before 2.0.15 lets authenticated editors smuggle JavaScript event handlers past

CVE-2025-66844 CRITICAL POC
9.1 Dec 15

Server-side request forgery (SSRF) in Grav CMS versions prior to 1.7.49.5 allows remote authenticated attackers to make

CVE-2025-66299 HIGH POC
8.8 Dec 01

Grav is a file-based Web platform. Prior to 1.8.0-beta.27, Grav CMS is vulnerable to a Server-Side Template Injection (S

CVE-2026-72819 HIGH POC
8.7 Aug 14

Remote code execution in Grav CMS before 2.0.13 allows authenticated low-privilege users to plant and execute arbitrary

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