CVE-2025-66301: Grav has Broken Access Control which allows an Editor to modify the page's YAML Frontmatter to alter form processing actions
Summary Due to a broken access control vulnerability in the /admin/pages/{pagename} endpoint, an editor ( user with full permissions to pages ) can change the functionality of a form after submission.
Details Due to improper authorization checks when modifying critical fields on a POST request to /admin/pages/{pagename}, an editor with only permissions to change basic content on the form is now able to change the functioning of the form through modifying the content of the data[json][header][form] which is the YAML frontmatter which includes the process section which dictates what happens after a user submits the form which include some important actions that could lead to further vulnerabilities.
PoC
- Have Admin and Form plugins installed - Connect to panel as admin, create user and give him permission for pages all - Now connect as that user and notice you cant edit any process field in the panel - Change anything in the content of the form and save - Intercept the request: !image
- Now modify the field data[json][header][form] with the following payload URL-encoded not like this: {"name":"ssti-test 2","fields":{"name":{"type":"text","label":"Name","required":true}},"buttons":{"submit":{"type":"submit","value":"Submit"}},"process":[{"message":"{{ evaluatetwig(form.value('name')) }}"}]}
- Change the field and forward it: !image
Request goes through and changes have been made to the form. !image
Impact
- Attacker can modify submission logic of the form which leads to changing redirect value, email sending, changing template, breaking out of the Twig sandbox potentially executing code...
Fix recommendation
- Implement proper authorization checks to such requests especially when it contains fields user shouldn't be able to modify based on his role.
Other sources
Grav has Broken Access Control which allows an Editor to modify the page's YAML Frontmatter to alter form processing actions
— Packagist
Grav is a file-based Web platform. Prior to 1.8.0-beta.27, due to improper authorization checks when modifying critical fields on a POST request to /admin/pages/{pagename}, an editor with only permissions to change basic content on the form is now able to change the functioning of the form through modifying the content of the data[json][header][form] which is the YAML frontmatter which includes the process section which dictates what happens after a user submits the form which include some important actions that could lead to further vulnerabilities. This vulnerability is fixed in 1.8.0-beta.27.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
composer/getgrav/gravto a version that resolves this vulnerability.Fixed in 1.8.0-beta.27 - Upgrade
Upgrade
Gravto a version that resolves this vulnerability.Fixed in 1.8.0-beta.27 - Compensating control
Implement authorization checks on POST requests to /admin/pages/{page_name}, preventing users from modifying critical form YAML frontmatter fields such as data[_json][header][form] and the process section when their role does not permit those changes.
Event History
Frequently Asked Questions
What is the severity of CVE-2025-66301?
CVE-2025-66301 has been classified with a severity rating that indicates a potential for unauthorized modification of critical page fields.
How do I fix CVE-2025-66301?
To fix CVE-2025-66301, update Grav to version 1.8.0-beta.27 or later to ensure proper authorization checks are enforced.
What versions of Grav are affected by CVE-2025-66301?
CVE-2025-66301 affects all versions of Grav prior to 1.8.0-beta.27.
Can CVE-2025-66301 impact user data security?
Yes, CVE-2025-66301 can impact user data security by allowing unauthorized changes to critical content fields.
What specific actions are vulnerable in CVE-2025-66301?
CVE-2025-66301 allows editors to change functional parameters on POST requests to /admin/pages/{page_name}, which they should not have permission to modify.