Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-priv backend user
-
DeliveryStore XSS payload in ExternalImage URL field
-
ExploitVictim admin opens version preview/diff
-
ExecutionJavaScript executes in admin origin
-
ImpactHijack admin session actions
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated Pimcore backend account that holds data object edit permission (PR:L), which the attacker uses to write an attribute-breaking payload into an ExternalImage class-definition field where the stored URL is rendered unescaped. The payload is dormant until a second user opens the affected object's version preview or version diff view (the UI:P/passive-interaction requirement), meaning no self-triggering and no fully unauthenticated path exists. Limiting factors: the attacker needs edit rights on data objects using an ExternalImage field, the victim must independently navigate to the preview/diff view, and impact is confined to the admin backend origin - there is no anonymous, default-configuration remote exploitation. |
| Impact | This is a stored XSS (CWE-79) in Pimcore through 2026.3.1 that warrants moderate, not urgent, prioritization. The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N) and its 5.1 score point to a network-reachable but privilege- and interaction-gated flaw: the attacker must already be an authenticated backend user holding data object edit permission (PR:L), and a second victim user must passively open a version preview or diff view (UI:P) for the payload to fire. Publicly available exploit code exists (write-up on hackmd.io plus a VulnCheck advisory), which raises practical likelihood and lowers the skill barrier, but there is no CISA KEV listing and no EPSS score in the provided data, so there is no evidence of active or widespread exploitation - treat the POC as proof of feasibility, not of in-the-wild use. The impact is genuine but bounded: execution occurs in the admin origin, enabling session-context actions against other operators, yet all impact sub-metrics are rated Low. The main contrast in signals is high exploit maturity (public POC) against low prerequisites-adjusted reach (requires an authenticated insider or compromised low-priv account plus victim interaction), making this primarily an insider/privilege-escalation-within-backend concern rather than an internet-facing mass-exploitation risk. No key data is internally conflicting; the chief gap is the absence of EPSS/KEV telemetry to gauge real-world activity. |
| Exploit ScenarioDerived | A low-privileged Pimcore backend user with data object edit permission enters an attribute-breaking payload into an ExternalImage field's URL so that the stored, unescaped value injects script markup. When a higher-privileged administrator later opens that object's version preview or diff view, the JavaScript executes in the admin origin, letting the attacker act in the victim's authenticated backend session. Publicly available exploit code (hackmd.io write-up and VulnCheck advisory) demonstrates the attribute-breaking technique, and the network attack vector with low complexity makes it reliably reproducible once the attacker has edit rights. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Stored cross-site scripting in Pimcore through 2026.3.1 lets an authenticated backend user who holds data object edit permission plant an attribute-breaking payload in an ExternalImage class-definition field, and that JavaScript then runs in the admin origin when another user opens the affected object's version preview or version diff view. The injected script stays dormant until a second user navigates to the preview/diff screen, so exploitation is not self-triggering and there is no anonymous or default-configuration remote path; publicly available exploit code exists and a technical write-up plus a VulnCheck advisory are referenced. Impact is confined to the admin backend origin and yields limited confidentiality and integrity effects, so this warrants moderate rather than urgent prioritization and should be scheduled with other backend XSS hardening work.
RemediationAI
No vendor-released patch was identified in the available intelligence at time of analysis; the published references point to the vulnerable source locations rather than a fixed release, so track the Pimcore repository (https://github.com/pimcore/pimcore) and the admin-ui-classic-bundle project for an updated version, and watch the VulnCheck advisory (https://www.vulncheck.com/advisories/pimcore-through-2026.3.1-stored-xss-via-externalimage-field-version-preview) for patch guidance. Until a fix ships, the most effective compensating controls are: (1) add output encoding or URL scheme validation for ExternalImage values in the preview_version.html.twig render path and the ExternalImage field model - this is a code change and must be maintained across upgrades; (2) tighten Pimcore backend permissions so that data object edit rights are limited to trusted staff and class-definition editing is restricted even further, which reduces the pool of users who can plant a payload but does not eliminate the flaw for existing editors; (3) apply a strict Content-Security-Policy to the admin origin to block inline script execution, accepting that the Pimcore admin UI may rely on inline handlers and require allowlisting or breakage; and (4) if version preview/diff is not operationally required, restrict access to those routes or the underlying version history feature, with the trade-off that auditors and editors lose rollback and change-diff visibility. Treat the publicly available exploit write-up at https://hackmd.io/@1ExmmukzRMWN7B4gQ4W-4Q/rJCbgCKjMe as actionable proof-of-concept guidance when validating any hardening you apply.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-79 (improper neutralization of input during web page generation) in Pimcore's ExternalImage data-object field type, which stores a URL supplied by an editor. That stored value is persisted in the class-definition/field data and later rendered without output encoding in the version preview template (admin-ui-classic-bundle 2.3, templates/admin/data_object/data_object/preview_version.html.twig around line 198), with the vulnerable field handling in pimcore/pimcore models/DataObject/ClassDefinition/Data/ExternalImage.php lines 169-203. Because the URL is placed into an HTML attribute context without escaping, an attacker with data object edit rights can craft an attribute-breaking value that closes the attribute and injects a script or event handler. The payload does not execute on save; it executes in the Pimcore admin origin only when a version preview or version diff view renders the stored field, which is a stored/persistent XSS pattern requiring passive interaction from a second privileged user. The CPE cpe:2.3:a:pimcore:pimcore:*:*:*:*:*:*:*:* indicates the core Pimcore product line up to and including 2026.3.1 is affected, with the classic admin UI bundle referenced as the rendering component; the assessed CVSS:3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) confirms scope change into the admin origin but low confidentiality and integrity impact and no availability impact.
Know when Pimcore gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
Authenticated edit permission gives PR:L, the victim must open a preview/diff so UI:R, and injected script executing in the admin origin crosses a security authority giving S:C with Low C/I and no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Pimcore through 2026.3.1 contains a stored cross-site scripting vulnerability that allows authenticated backend users to inject scripts by storing unescaped URLs in ExternalImage fields. Attackers with data object edit permission can store attribute-breaking payloads that execute JavaScript in the admin origin when other users open version preview or diff views.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
An issue was discovered in Pimcore before 5.7.1. Rated high severity (CVSS 8.8), this vulnerability is remotely exploita
Pimcore's Admin Classic Bundle provides a Backend UI for Pimcore. Rated critical severity (CVSS 9.3), this vulnerability
pimcore is vulnerable to Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'). Rated cri
Blind SQL injection in Pimcore's Admin Search Find API allows authenticated attackers to extract database information th
Pimcore's Admin Classic Bundle provides a backend user interface for Pimcore. Rated high severity (CVSS 8.8), this vulne
Pimcore's Admin Classic Bundle provides a backend user interface for Pimcore. Rated high severity (CVSS 8.8), this vulne
Pimcore is an Open Source Data & Experience Management Platform. Rated high severity (CVSS 8.8), this vulnerability is r
Path Traversal: '\..\filename' in GitHub repository pimcore/pimcore prior to 10.5.22. Rated high severity (CVSS 8.8), th
Privilege Defined With Unsafe Actions in GitHub repository pimcore/pimcore prior to 10.5.23. Rated high severity (CVSS 8
SQL Injection in GitHub repository pimcore/pimcore prior to 10.5.21. Rated high severity (CVSS 8.8), this vulnerability
SQL Injection in GitHub repository pimcore/pimcore prior to 10.5.19. Rated high severity (CVSS 8.8), this vulnerability
An improper SameSite Attribute vulnerability in pimCore v10.5.15 allows attackers to execute arbitrary code. Rated high
EUVD-2026-97490
GHSA-w844-4xmf-w7mw
NVD
CVE.org
EPSS
Exploit-DB