CVE-2026-69089

Grav CMS before 2.0.11 Path Traversal via watermark

Published Aug 3, 2026 CVSS 4.0 · 8.7 High EPSS < 1% KEV · Not listed
Description
Grav CMS 2.0.10 contains a path traversal vulnerability in ImageMedium::watermark(), which passes its unsanitized $image argument to RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator::findResource(). Because the file:// scheme branch only lexically collapses '..' segments without a realpath/containment check, an editor authoring Markdown image syntax with traversal sequences can cause arbitrary image files outside Grav's media sandbox to be composited into a carrier image, which is then cached and served from a public, unauthenticated URL — disclosing those files to anonymous visitors.

Analysis

AI-generated

Technical impact

Grav CMS 2.0.10 contains a path traversal vulnerability in the ImageMedium::watermark() function, which forwards its unsanitized image argument to the UniformResourceLocator::findResource() method. The file:// scheme branch of the locator collapses '..' sequences without a containment check, allowing an editor who can add or edit Markdown to include a traversal sequence in an image URL. The result is that arbitrary files outside the media sandbox can be composited into a carrier image, cached, and then served from a public, unauthenticated URL, disclosing those files to anonymous visitors.

Affected Systems

Identified by the Common Platform Enumeration string cpe:2.3:a:getgrav:grav, this flaw affects the Grav CMS product from getgrav, specifically versions prior to 2.0.11. The vendor’s advisories and source‑code commits confirm that versions 2.0.10 and earlier are vulnerable.

Risk and Exploitability

With a CVSS score of 8.7, this vulnerability is considered high severity. The EPSS score is not available, and the issue is not listed in the CISA Known Exploited Vulnerabilities catalog, indicating that it is not currently confirmed exploited in the wild. Nevertheless, the attack vector is straightforward: an unauthenticated user who can edit markdown content can craft a malicious image tag, triggering the path traversal. Successful exploitation results in unauthorized disclosure of arbitrary local files to all visitors, compromising confidentiality and potentially enabling further attacks.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Grav CMS to version 2.0.11 or later to include the patched watermark function.
  • If upgrading is not immediately possible, restrict editor access so they cannot modify Markdown files or use image tags with traversal sequences.
  • As a temporary workaround, configure your web server to deny or sanitize file:// URIs in image tags served by Grav, preventing the compositing of arbitrary files.

Generated by OpenCVE AI on August 4, 2026 at 10:19 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-w3f4-8pj2-599w Grav: Path Traversal in ImageMedium::watermark() — arbitrary file disclosure via publicly-cached images
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description Grav CMS 2.0.10 contains a path traversal vulnerability in ImageMedium::watermark(), which passes its unsanitized $image argument to RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator::findResource(). Because the file:// scheme branch only lexically collapses '..' segments without a realpath/containment check, an editor authoring Markdown image syntax with traversal sequences can cause arbitrary image files outside Grav's media sandbox to be composited into a carrier image, which is then cached and served from a public, unauthenticated URL — disclosing those files to anonymous visitors.
Title Grav CMS before 2.0.11 Path Traversal via watermark
First Time appeared Getgrav
Getgrav grav
Weaknesses CWE-22
CPEs cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*
Vendors & Products Getgrav
Getgrav grav
References
Metrics cvssV3_1

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

cvssV4_0

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

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

Sources

Status
PUBLISHED
Assigner
VulnCheck
Published
Updated
Oct 8, 2026, 3:24 PM
Reserved
Aug 3, 2026, 10:42 AM
Status
Deferred
Published
Aug 3, 2026, 2:16 PM
Modified
Oct 23, 2026, 9:10 PM