Skip to main content

Grav API Plugin EUVDEUVD-2026-104585

| CVE-2026-112779 CRITICAL
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-10-19 VulnCheck GHSA-5hrq-qph9-cjf6
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Reach unauthenticated translations API
  2. Delivery
    Request many unique language codes
  3. Exploit
    Cache ~560KB per code
  4. Execution
    Exhaust disk/APCu storage
  5. Impact
    Denial 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.

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 – 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

grav-plugin-api 1.0.16 <1.0.42

Affected Packages

euvd grav_plugin_api fix: 1.0.42

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

Vendor (VulnCheck) PRIMARY 9.3 CRITICAL
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
vuln.today AI 7.5 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/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
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 19, 2026 - 21:17 EUVD
CVE Published
Oct 19, 2026 - 19:10 cve.org
CRITICAL 9.3

DescriptionCVE.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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

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

EPSS Score
0.3%
Top 76% exploitable
Prevalence
Low
Optional API plugin for Grav, a niche flat-file CMS; not default-enabled
Data Quality
5 sources
Confidence: Medium

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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Medium
Technical Impact
Total

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2026-86196 HIGH POC
8.7 Sep 05

Host header injection in the Grav API plugin's forgot-password endpoint allows unauthenticated remote attackers to redir

CVE-2026-62668 CRITICAL
9.4 Aug 19

Server-Side Request Forgery in the Grav API plugin (grav-plugin-api) for Grav CMS before 1.0.6 lets a caller holding the

CVE-2026-62666 HIGH
8.8 Aug 19

Privilege escalation in Grav API Plugin (all versions before 1.0.6) allows any authenticated user holding the api.users.

CVE-2026-86195 HIGH
8.7 Sep 05

Privilege escalation in grav-plugin-api before 1.0.20 allows a low-privileged API manager to self-create a super-admin a

CVE-2026-86193 HIGH
8.7 Sep 05

Privilege escalation in grav-plugin-api before 1.0.20 allows authenticated API users holding api.access and api.users.wr

CVE-2026-109317 HIGH
8.6 Oct 12

Privilege escalation in the Grav API plugin (grav-plugin-api) before 1.0.36 allows an account that already holds the api

CVE-2026-63407 HIGH
8.2 Aug 19

Permissive CORS misconfiguration in the Grav API Plugin (all versions prior to 1.0.0-rc.16) allows cross-origin JavaScri

CVE-2026-62667 HIGH
8.1 Aug 19

Scope enforcement is entirely absent in the Grav API Plugin prior to 1.0.6, meaning any scoped API key silently exercise

CVE-2026-63408 HIGH
7.5 Aug 19

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

CVE-2026-109320 MEDIUM
5.3 Oct 12

Disabled accounts in Grav API plugin versions before 1.0.36 can continue to access API endpoints because SessionAuthenti

CVE-2026-11982 MEDIUM
5.1 Jun 18

Stored XSS in Grav CMS's grav-plugin-api (Admin2) allows a low-privileged editor to persist malicious JavaScript in page

CVE-2026-61607 MEDIUM
4.6 Aug 19

Stored cross-site scripting in the Grav API Plugin (all versions prior to 1.0.2) allows an authenticated attacker holdin

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