CVE-2026-65896 grav vulnerability
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.
Browse PHP security risksQuick answer
getgrav grav should be reviewed and updated if it matches the affected versions. The recommended fix is to apply the vendor-supported patched version or the mitigation steps below, then retest the public website with Fixnx.
Who is affected
Affected versions
- < 1.0.10
Fixed versions
- 1.0.10
How to fix it
CVE-2026-65896 affects grav and involves file access or path traversal. Successful exploitation may read, overwrite, or delete files outside the intended directory. Prioritize internet-facing, privileged, automation, and production deployments. Upgrade grav to 1.0.10 or a later vendor-supported fixed release.
- Inventory every deployment, device, package, plugin, container, build, and environment that uses grav.
- Compare the installed version with the recorded affected range: < 1.0.10.
- Upgrade grav to 1.0.10 or a later vendor-supported fixed release.
- Until patched, reject absolute and parent-relative paths, confine filesystem access to an explicit root, and accept files or manifests only from trusted sources.
- Review configuration, roles, tokens, network paths, and exposed endpoints connected to grav; remove access that is not required.
- Review filesystem, application, and audit logs for parent-directory segments, absolute paths, unexpected reads, writes, or deletions outside the intended root.
- If exploitation is suspected, isolate affected assets, preserve evidence, rotate exposed credentials or keys, restore trusted data, and rebuild compromised systems before returning them to service.
Scan now. Google sign-in is only needed to unlock fix guidance.
Verify the fix
- Confirm every affected asset now runs the fixed vendor-supported release or has the documented mitigation for CVE-2026-65896 in place.
- Use a safe regression test to confirm the affected file access or path traversal path no longer produces the vulnerable behavior.
- Confirm temporary access controls, endpoint restrictions, network blocks, and least-privilege settings remain effective after the update.
- Review post-remediation logs and rerun Fixnx plus the relevant package, dependency, firmware, browser, or product-specific security check.
- Document affected assets, versions, changes, validation evidence, reviewed logs, and any credential rotation, cleanup, or replacement completed.
Related categories
Related security risks
More published guidance from the same primary category.
Trusted references
FAQ
What is affected by CVE-2026-65896?
getgrav grav versions listed as affected should be reviewed: < 1.0.10.
What should I fix first?
Start with internet-facing sites, admin panels, login flows, plugins, themes, modules, packages, and systems that process user-controlled input or sensitive data.
How do I confirm the fix worked?
Apply the patched version or mitigation, clear caches where relevant, retest the affected workflow, and run a new Fixnx scan to verify public website exposure signals.
How are Fixnx security risk categories chosen?
Fixnx keeps one canonical risk page and assigns only broad, relevant categories such as ecosystem, technology area, or vulnerability class.
