{"id":"CVE-2026-69089","title":"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()","summary":"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 b…","severity":"high","cvss":7.5,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","cwe":["CWE-22"],"vendor":"getgrav","product":"grav","affected":["grav < 2.0.11"],"patched":["getgrav/grav 2.0.11"],"published":"2026-08-03","updated":"2026-10-08","sourceUpdated":"2026-10-08T16:17:33.413","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-69089","references":[{"url":"https://github.com/getgrav/grav/commit/b282200a65ce979377963180629babd2335212ba","label":"disclosure@vulncheck.com"},{"url":"https://github.com/getgrav/grav/commit/c569a53304cd7d95ff21bffa6fc590adcf0be83d","label":"disclosure@vulncheck.com"},{"url":"https://github.com/getgrav/grav/commit/db8c1fcd63aaaf6d6b244bc6b4cfa5f7b96bbc7f","label":"disclosure@vulncheck.com"},{"url":"https://github.com/getgrav/grav/security/advisories/GHSA-w3f4-8pj2-599w","label":"disclosure@vulncheck.com"},{"url":"https://www.vulncheck.com/advisories/grav-cms-before-path-traversal-via-watermark","label":"disclosure@vulncheck.com"},{"url":"https://github.com/getgrav/grav/security/advisories/GHSA-w3f4-8pj2-599w","label":"134c704f-9b21-4f2e-91b3-4a467353bcc0"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-69089"},{"url":"https://github.com/advisories/GHSA-w3f4-8pj2-599w"}],"tags":["nvd","cve.org","exploit-available","ghsa","composer"],"exploitAvailable":true,"ssvc":{"exploitation":"poc","automatable":"no","technicalImpact":"total","timestamp":"2026-08-03T20:04:13.400180Z"},"epss":0.00459,"epssPercentile":0.39605,"aliases":["GHSA-w3f4-8pj2-599w"],"ecosystem":"composer","ingestedAt":"2026-09-17T17:23:30.684Z","slug":"CVE-2026-69089","body":"## Overview\n\nGrav 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.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Package advisory (CVE-2026-69089)\n\nAffected packages:\n\n- `getgrav/grav = 2.0.10`\n\nPatched in:\n\n- `getgrav/grav 2.0.11`\n\nSource: https://github.com/advisories/GHSA-w3f4-8pj2-599w","depth":"midnight","depthScore":53,"depthScoreParts":{"impact":41.3,"likelihood":0.1,"exploitation":12,"ransomware":0},"changes":[{"seq":218144,"id":"CVE-2026-69089","ts":1791478436776,"field":"exploit_available","old":"false","new":"true"},{"seq":218143,"id":"CVE-2026-69089","ts":1791478436776,"field":"cvss","old":null,"new":"7.5"}]}