Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach unauthenticated translations API
-
DeliveryRequest many unique language codes
-
ExploitCache ~560KB per code
-
ExecutionExhaust disk/APCu storage
-
ImpactDenial of service
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The Grav API plugin (grav-plugin-api) must be installed and enabled - it is an optional add-on, not part of a default Grav install, which limits exposure. The cache-exhaustion DoS needs no authentication and works against the default configuration of the plugin: the unauthenticated GET /api/v1/translations/{lang} endpoint caches a full dictionary (~560 KB) for every well-formed language code, so it is exploitable by any remote attacker who can reach the endpoint. The permission-bypass path is strictly limited: it requires an authenticated account holding the api.pages.write capability and only affects the sync and batch copy endpoints, where target/destination page rules are not enforced. |
| Impact | This CVE bundles two distinct weaknesses with sharply different risk profiles, and the input signals partly conflict. The unauthenticated path (CWE-770 resource exhaustion) is genuine and low-barrier: GET /api/v1/translations/{lang} caches ~560 KB per well-formed language code with no authentication, so an attacker can cheaply exhaust disk or APCu - a pure availability attack. The second path (sync/batch-copy permission bypass that overwrites translations or creates pages) delivers the confidentiality/integrity impact but REQUIRES an account with api.pages.write, i.e. it is authenticated. The provided CVSS:4.0 vector (9.3, PR:N with VC:H/VI:H/VA:H) therefore overstates the unauthenticated worst case: it credits full confidentiality/integrity/availability impact at PR:N, but per the description the high C/I impact is gated behind api.pages.write (PR:L), while the PR:N portion yields only availability loss. CWE-770 and the 'Denial Of Service' tag align with the availability-only reading of the unauthenticated bug. No EPSS score, no KEV listing, and no POC were provided, so there is no public exploit identified at time of analysis and no evidence of active exploitation. Net: a real priority for any site actually running the Grav API plugin (trivial unauthenticated DoS), but the CRITICAL 9.3 rating is driven by impacts that require authentication - verify the PR:N/impact combination against the GHSA advisory. |
| Exploit ScenarioDerived | An unauthenticated attacker scripts repeated small GET requests to /api/v1/translations/{lang}, iterating distinct well-formed language codes; each response caches roughly 560 KB, so a few thousand requests fill the cache store and exhaust disk or APCu, taking the site offline. Separately, an attacker who already holds an api.pages.write token uses the sync or batch-copy endpoints to overwrite translations or create pages in locations that page-level rules should deny. No public exploit code was provided in the intelligence. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Unauthenticated resource exhaustion in the Grav API plugin (grav-plugin-api) before 1.0.42 allows any remote attacker who can reach GET /api/v1/translations/{lang} to make the plugin cache a full ~560 KB translation dictionary for each well-formed language code, potentially filling disk or APCu; separately, authenticated accounts with api.pages.write can bypass target/destination page rules in the sync and batch copy endpoints to overwrite translations or create pages that page-level rules deny. The plugin is an optional add-on rather than part of a default Grav install, which limits exposure, and no public exploit has been identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade grav-plugin-api to 1.0.42 or later, which addresses both the translation-cache growth and the missing target/destination page-rule checks; see https://github.com/getgrav/grav/security/advisories/GHSA-8pcm-97fc-4xwh and https://www.vulncheck.com/advisories/grav-api-plugin-before-1.0.42-cache-exhaustion-and-page-permission-bypass. If upgrading immediately is not possible, disable or uninstall the optional grav-plugin-api add-on, or block or rate-limit unauthenticated access to /api/v1/translations/{lang} at the reverse proxy - blocking may break translation-dependent API clients, and rate limiting only slows cache growth rather than eliminating it. Reduce exposure to the page-rule bypass by limiting api.pages.write to trusted accounts and reviewing pages created or modified through sync and batch copy endpoints; this may restrict legitimate editorial workflows. Monitor APCu and disk usage for repeated ~560 KB translation-cache entries as a detection signal.
Affected VersionsENISA
Affected Packages
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
The Grav API plugin exposes REST endpoints under /api/v1. In affected releases, the translations endpoint accepts a language code and builds and caches a full translation dictionary (~560 KB) per code without limiting cache growth; CWE-770 describes this as allocation of resources without limits or throttling, and APCu or filesystem exhaustion can degrade the whole Grav site. In the same plugin, the sync and batch copy endpoints fail to enforce configured target and destination page rules, so a user holding api.pages.write can write to pages that policy should block; this is an authorization/access-control gap rather than a remote unauthenticated compromise. CPE cpe:2.3:a:getgrav:grav-plugin-api:* identifies the plugin family, and the affected ranges are 1.0.40 before 1.0.42 for the cache issue and 1.0.16 before 1.0.42 for the page-rule bypass. The independent assessment scores the primary impact as availability-only (CVSS 3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H); the published CVSS 4.0 score is higher (9.3), so defenders should treat confidentiality/integrity claims cautiously and focus on the confirmed DoS and the api.pages.write prerequisite.
Know when Grav Plugin Api 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
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
The unauthenticated path (PR:N, AC:L) yields only resource-exhaustion availability loss (A:H, C:N, I:N); the high integrity/confidentiality impact is a separate authenticated (PR:L) issue, not part of the PR:N vector.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Grav API plugin (grav-plugin-api) 1.0.40 before 1.0.42 caches a full translation dictionary for every well-formed language code sent to the unauthenticated GET /api/v1/translations/{lang} endpoint, and 1.0.16 before 1.0.42 fails to check target and destination page rules in the sync and batch copy endpoints. Unauthenticated attackers can send small requests that each store about 560 KB to exhaust disk or APCu, while accounts with api.pages.write can overwrite translations or create pages that page-level rules deny.
Technical POC Analysis
The supplied advisory rates this GHSA Moderate and says no CVE was known; the prompt's CRITICAL/CVSS 9.3 and CVE identifier are not in the supplied evidence.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A critical-severity flaw in the optional Grav API plugin (grav-plugin-api) allows attackers able to reach the translations endpoint to repeatedly force ~560 KB dictionary caching that can exhaust disk or APCu, and allows holders of page-write API permissions to overwrite or create content that page-level rules are meant to block. The plugin is an add-on rather than part of a stock Grav installation, so only sites that deliberately deployed it are exposed, and no public exploit has been identified at time of analysis. Leadership should care because affected sites could face site outage or unauthorized content changes, but the population at risk is limited to installations running this specific add-on.
No vendor-released patch identified in the feed data at time of analysis (the advisory references 1.0.42 as the remediated build, so upgrade to that version once obtainable). Interim mitigations: remove or disable the optional grav-plugin-api add-on where it is not business-required; block external access to /api/v1/translations/ at the WAF or reverse proxy; restrict api.pages.write to a minimal set of trusted accounts; monitor disk and APCu consumption for abnormal growth; review API logs for repeated translation requests and unexpected page sync or batch copy operations.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
More in Grav Plugin Api
View allHost header injection in the Grav API plugin's forgot-password endpoint allows unauthenticated remote attackers to redir
Server-Side Request Forgery in the Grav API plugin (grav-plugin-api) for Grav CMS before 1.0.6 lets a caller holding the
Privilege escalation in Grav API Plugin (all versions before 1.0.6) allows any authenticated user holding the api.users.
Privilege escalation in grav-plugin-api before 1.0.20 allows a low-privileged API manager to self-create a super-admin a
Privilege escalation in grav-plugin-api before 1.0.20 allows authenticated API users holding api.access and api.users.wr
Privilege escalation in the Grav API plugin (grav-plugin-api) before 1.0.36 allows an account that already holds the api
Permissive CORS misconfiguration in the Grav API Plugin (all versions prior to 1.0.0-rc.16) allows cross-origin JavaScri
Scope enforcement is entirely absent in the Grav API Plugin prior to 1.0.6, meaning any scoped API key silently exercise
JWT bearer token leakage in the Grav API Plugin for Grav CMS (prior to 1.0.0-rc.16) exposes valid access tokens to any p
Disabled accounts in Grav API plugin versions before 1.0.36 can continue to access API endpoints because SessionAuthenti
Stored XSS in Grav CMS's grav-plugin-api (Admin2) allows a low-privileged editor to persist malicious JavaScript in page
Stored cross-site scripting in the Grav API Plugin (all versions prior to 1.0.2) allows an authenticated attacker holdin
EUVD-2026-104585
GHSA-5hrq-qph9-cjf6
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB