Skip to main content

Grav CMS CVE-2026-61690

| EUVDEUVD-2026-62534 MEDIUM
Improper Handling of Highly Compressed Data (Data Amplification) (CWE-409)
2026-08-19 GitHub_M GHSA-928x-9mpw-8h56
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain low-privilege Grav account with install access
  2. Delivery
    Craft decompression bomb ZIP archive
  3. Exploit
    Submit archive via admin panel or GPM install path
  4. Execution
    ZipArchiver::extract() calls ZipArchive::extractTo() without limit checks
  5. Persist
    Archive expands to exhaust disk space or inodes
  6. Impact
    Grav site becomes unavailable

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Compression ratio limits
Exploitation Conditions

Exploitation requires an authenticated Grav session with sufficient privileges to upload or install archives through any code path invoking Archiver::create('zip') - specifically the ZipArchiver::extract() path triggered during plugin, theme, or package installation via the admin panel or GPM. The CVSS PR:L metric confirms that full administrative access is not required; a low-privilege account with upload or install capability is sufficient. The Grav admin panel or GPM must be enabled and accessible, which is the default configuration for sites using the Grav admin plugin. No special protocol, non-default setting, or external service is required beyond an accessible authenticated session. Exploitation is bounded by its pure availability impact: an attacker cannot read or modify data, only exhaust storage resources. Deployments where archive upload functionality is entirely disabled or inaccessible to non-admin users have a reduced but not eliminated attack surface.

Impact

CVSS 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H) accurately represents the threat profile: network-accessible, low complexity, requiring only a low-privilege authenticated account, with pure availability impact and no confidentiality or integrity exposure. KEV status is negative and no public exploit code has been identified, placing this in a 'track and patch' posture rather than emergency response for most organizations. EPSS data was not supplied in the intelligence feed, so probabilistic exploitation likelihood cannot be quantified from this dataset - that is a gap in the available signals. The realistic risk is highest in shared-hosting or resource-constrained environments where disk exhaustion would cascade to affect co-located services; a mid-sized IT operation running multiple applications on a single server should treat this as a prompt patching-cycle item rather than a deferred issue. The absence of scope change (S:U) in the CVSS vector is technically conservative - disk exhaustion inherently affects the underlying host - but the primary, intended impact is the Grav application itself.

Exploit ScenarioDerived

An attacker with a low-privilege Grav account (for example, a contributor or editor with plugin upload access) constructs a decompression bomb ZIP - a small compressed file whose entries expand to many gigabytes - and submits it for installation through the Grav admin panel or GPM. ZipArchiver::extract() passes the archive directly to ZipArchive::extractTo() without checking uncompressed size, file count, or nesting depth, causing the extraction to fill available disk space or exhaust inodes. The Grav site and any other services sharing the same filesystem become unavailable. Constructing a decompression bomb is a well-documented, trivially reproducible technique requiring no specialized tooling, though no public exploit targeting this specific code path has been identified.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 19, 2026

Disk-exhaustion denial of service in Grav CMS prior to 2.0.1 is reachable through the ZipArchiver::extract() code path, which passes attacker-controlled ZIP archives to PHP's ZipArchive::extractTo() without enforcing the platform's configured limits on uncompressed size, file count, or directory nesting depth. An authenticated attacker with plugin or theme upload access can submit a crafted decompression bomb to exhaust disk space or inodes, rendering the site unavailable. No public exploit code has been identified, and CISA KEV listing is absent; a vendor-released patch is available as of Grav 2.0.1 (June 22, 2026).

RemediationAI

Upgrade to Grav 2.0.1, released June 22, 2026, which introduces pre-extraction limit enforcement in ZipArchiver::extract() matching the caps already applied by GPM\Installer::unZip(). The patched release is available at https://github.com/getgrav/grav/releases/tag/2.0.1 and the fixing commit is https://github.com/getgrav/grav/commit/1c1003cfcab5344203d6fde1aaa1f9a4ee3413ff. If immediate patching is not possible, restrict plugin and theme installation privileges to the smallest set of fully trusted administrator accounts, reducing the pool of principals who can supply attacker-controlled archives to the vulnerable code path. Additionally, configure server-side disk quota alerts to detect abnormal storage growth early. Note that access restriction does not eliminate risk from compromised admin credentials and is not a substitute for patching.

Affected VersionsENISA

grav < 2.0.1

Affected Packages

composer getgrav/grav fix: 2.0.1
euvd grav fix: 2.0.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, 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 PHP-based flat-file CMS whose plugin management system (GPM) includes two ZIP extraction paths: GPM\Installer::unZip() and the more general ZipArchiver::extract() in system/src/Grav/Common/Filesystem/ZipArchiver.php. CWE-409 (Improper Handling of Highly Compressed Data) is the root cause: PHP's ZipArchive::extractTo() applies no built-in limits on total uncompressed bytes, entry count, or nesting depth, so a crafted ZIP that is tiny on disk can expand to fill an entire volume. Grav's configuration already exposes safe defaults under system.gpm.archive (max_uncompressed_size: 1 GiB, max_files: 50,000, max_depth: 48), but prior to 2.0.1 these limits were read and enforced only by the Installer path; the ZipArchiver path bypassed them entirely. The fix (commit 1c1003cfcab5344203d6fde1aaa1f9a4ee3413ff) adds a pre-extraction pass using ZipArchive::statIndex() to accumulate uncompressed totals and reject over-limit archives before any files are written to disk. CPE: cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*.

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 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Network-reachable via web upload requiring a low-privilege authenticated account; impact is pure availability via disk exhaustion with no confidentiality or integrity effect.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
Patch available
Aug 19, 2026 - 16:17 EUVD

DescriptionCVE.org

Grav is a file-based Web platform. Prior to 2.0.1, Grav ZipArchiver::extract() in system/src/Grav/Common/Filesystem/ZipArchiver.php passes archives to ZipArchive::extractTo() without enforcing the system.gpm.archive uncompressed-size, file-count, or nesting-depth limits. Code using Archiver::create('zip') to extract an attacker-controlled archive can exhaust disk space or inodes and make the site unavailable. This issue is fixed in version 2.0.1.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Medium
popular open-source flat-file PHP CMS with active community but limited enterprise footprint
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
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 MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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