Skip to main content
← All vulnerabilities
CVE-2026-65896

Grav API Plugin before 1.0.10 Path Traversal via move

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 1.0.10
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: poc
  • Automatable: no
  • Technical impact: partial

Summary

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.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: poc · Automatable: no · Technical impact: partial

  3. Record last updated

Affected versions

  • getgrav grav

    fixed in 1.0.10

References 3

GitHub · getgrav/grav

GitHub · getgrav/grav-plugin-api

vulncheck.com