FR
live
High CVSS 7.1

CVE-2026-65896

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.

What this means

Exposure
Exploitable remotely over the network, with an ordinary user account and with no action from the victim.
Impact
An attacker can modify or destroy data and degrade the service.
Weakness
The attacker controls the name or path of a file the application operates on.
Likelihood
Its EPSS score stays low: nothing points to imminent exploitation, which is no reason to leave it unpatched.

What to doFold into the next patch cycle.

Read automatically from the CVSS vector, the weakness type (CWE) and the EPSS score. The technical description above remains the one published by NIST.

Published
23 July 2026
CVSS
7.1 (v3.1) CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L
EPSS
0.27% probability of exploitation within 30 days · above 19% of all CVEs
Weakness
CWE-73
Sources
nvd
References

Type at least two characters.

navigate open esc dismiss