Back to overview

CVE-2026-65896

HIGH Exploitation: PoC
7.1
CVSS 3.1
Description
Grav API Plugin (Composer package getgrav/grav-plugin-api) before 1.0.10 fails to properly validate the slug field in the POST /pages/{route}/move endpoint. PagesController::move() sanitizes the slug only with ltrim($body['slug'], '.'), which strips leading periods but does not neutralize '/' or '..' segments. An authenticated API caller with the api.pages.write permission can supply path traversal sequences (e.g., 01.home/../../../pwned) to move an entire page directory (content and media) to an arbitrary writable location outside user/pages/, including outside the Grav installation.

Metadata

CVE ID
CVE-2026-65896
State
PUBLISHED
Assigner
VulnCheck
Reserved
2026-07-23 11:03 UTC
Published
2026-07-23 11:42 UTC
Last updated
2026-07-23 13:17 UTC
Primary CWE
CWE-73
External Control of File Name or Path
Vendor / Product
getgrav / grav
Sources
cve.org  ·  NVD

Severity & Metrics

7.1 HIGH CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L
SSVC — CISA Coordinator
Exploitation
PoC
Automatable
no
Tech. Impact
partial
Affected products (1)
VendorProductPlatformVersions
getgrav grav 0 < 1.0.10, 1.0.10
Weakness (CWE)
CWESourceDescription
CWE-73 cna External Control of File Name or Path
CVSS scores (2)
ScoreSeverityVersionSourceVector
7.1 HIGH 4.0 cna CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
7.1 HIGH 3.1 cna CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L
References (3)
Back to overview