CVE-2026-65896 Grav API Plugin before 1.0.10 Path Traversal via move
Authenticated attackers can move page directories to arbitrary locations outside the installation via path traversal in the move endpoint.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- None listed
What is CVE-2026-65896?
CVE-2026-65896 is a high-severity path traversal vulnerability in getgrav grav, published on 23 Jul 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official 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.
Weakness: CWE-73
Which versions are affected by CVE-2026-65896?
How do I fix CVE-2026-65896?
No fix has been published for CVE-2026-65896 yet. Limit exposure of the affected software until one is available.
Upgrade, and resolve every user-supplied path against an allowed base folder before opening it. More about Path traversal.
Is CVE-2026-65896 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-65896 exists.
Sources
Also known as GHSA-hc3p-4h64-j8wr, GHSA-qjq4-jp55-4mx2.