# CVE-2025-66300: grav — Fix Available

🐘

🐘 Packagist

Not in CISA KEV

HIGH severity

# CVE-2025-66300 — grav

HIGH [Fix: getgrav/grav@ed640a1](https://github.com/getgrav/grav/commit/ed640a13143c4177af013cf001969ed2c5e197ee)

CVE-2025-66300 is a high-severity (CVSS 8.5) Path Traversal vulnerability in getgrav/grav. A fix is available for getgrav/grav — see the affected versions and patch details below.

Grav is vulnerable to Arbitrary File Read

Also known as[GHSA-p4ww-mcp9-j6f2](/vulnerability/GHSA-p4ww-mcp9-j6f2)

Published

Dec 1, 2025

Updated

Oct 28, 2026

Affected

1 pkg

Patched

1 / 1

Exploits

None indexed

Exploitation data as of Nov 8, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

## Exploitation Status

### Proof-of-concept exploit code exists

-   CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.

Exploitation and automatability from CISA’s SSVC triage for CVE-2025-66300.

## EPSS Exploitation Probability

[via FIRST.org ↗](https://www.first.org/epss/)

0.5%probability of exploitation in next 30 days

Lower Risk0.00%

Lower risk than most CVEs42th percentile — riskier than 42% of all scored CVEsHighest risk

0.00%0.33%0.66%0.99%0.1%0.5%May 26Sep 26Nov 26

Probability of exploitation in the next 30 days, from [FIRST.org EPSS](https://www.first.org/epss/).

## How urgent is this, really

## Where this sits among everything scored

## Real-World Exposure

1 pkg affected

🐘`getgrav/grav`

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Packagist packages — download data is not available via public APIs for these ecosystems.

## Description

#### Summary

-   A low privilege user account with page editing privilege can read any server files using "Frontmatter" form.
-   This includes Grav user account files - /grav/user/accounts/\*.yaml. This file stores hashed user password, 2FA secret, and the password reset token.
-   This can allow an adversary to compromise any registered account by resetting a password for a user to get access to the password reset token from the file or by cracking the hashed password.

#### Details

_The vulnerability can be found in /user/plugins/form/templates/forms/fields/display/display.html.twig_ ![image](https://github.com/getgrav/grav/assets/28057767/953dbdf1-310f-4c8e-866c-8470d70cc11d)

#### PoC

1.  This PoC was conducted on Grav CMS version 1.7.46 and Admin Plugin version 1.10.46

![image](https://github.com/getgrav/grav/assets/28057767/6c8607d6-cea3-4699-8a5a-8a04d047676f)

1.  go to “[http://grav.local/admin/pages”](http://grav.local/admin/pages%E2%80%9D) then create new page with “Page Template” option set to “Form”.

![image](https://github.com/getgrav/grav/assets/28057767/451fe8bc-2e2e-4f8a-a548-385aca6d5504)

1.  Then go to “Expert” and on Frontmatter input box used to following form template.

![image](https://github.com/getgrav/grav/assets/28057767/9e44758a-021a-45fd-9e26-03abbf8095ef)

1.  Save page and go the preview or published page you will see the content of “/etc/passwd” file on the server.

![image](https://github.com/getgrav/grav/assets/28057767/94dc2363-10e1-4e74-81e4-6c7a09db4dff)

#### Impact

This can allow a low privileged user to perform a full account takeover of other registered users including Administrators. This can also allow an adversary to read any file on the web server. And Due to insufficient permission verification , user who can write a page also can use frontmatter feature using this IDOR vulnerability [PoC IDOR](https://www.youtube.com/watch?v=EU1QA0idoWE&ab_channel=%EA%B9%80%EC%A2%85%EB%AF%BC) mention in [CVE-2024-2792](https://github.com/getgrav/grav/security/advisories/GHSA-f6g2-h7qv-3m5v)

## Affected Packages

1 total 1 fixed

Ecosystem

Package

Vulnerable range

Fix

🐘Packagist

`getgrav/grav` 

all versions

1.8.0-beta.27`composer require getgrav/grav:^1.8.0-beta.27`

## Affected Products

1 product · 27 configurations

Application

`grav`getgrav

< 1.8.0

1 version

1.8.0

## Detection & mitigation playbook

Open-source dependency

1.  ### Detect
    
    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for getgrav/grav, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
    
2.  ### Fix
    
    Update getgrav/grav to 1.8.0-beta.27 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2025-66300 is resolved across your whole dependency graph.
    
3.  ### Workarounds
    
    Resolve every user-supplied path to its canonical form and reject anything that escapes the intended directory, and run the component under an account that has no read or write access outside the directory it legitimately serves.
    

## Frequently Asked Questions

\### Summary - A low privilege user account with page editing privilege can read any server files using "Frontmatter" form. - This includes Grav user account files - /grav/user/accounts/\*.yaml. This file stores hashed user password, 2FA secret, and the password reset token. - This can allow an adversary to compromise any registered account by resetting a password for a user to get access to the password reset token from the file or by cracking the hashed password. ### Details \_The vulnerability can be found in /user/plugins/form/templates/forms/fields/display/display.html.twig\_ !\[image\](https

O3 Security · Impact-Aware SCA

### Is CVE-2025-66300 in your dependencies?

Find it across Packagist, including transitive dependencies.

[Scan my dependencies](/book-demo) [How O3 SCA works](/impact-aware-sca)