pimcore/studio-backend-bundle
Studio Backend bundle
Activity
- Latest release
- 1d ago
- Total releases
- 44
- Cadence
- ~6 days
- Last 12 months
- 40
Reach
- Stars
- 20
Details
- License
- custom
- First release
- Apr 30, 2025
| Version | Released | |
|---|---|---|
v2025.4.14
patch
1 CVE
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev |
v2025.4.14
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.10
patch
|
v2026.2.10
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.9
patch
|
v2026.2.9
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2025.4.13
patch
1 CVE
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev |
v2025.4.13
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.8
patch
|
v2026.2.8
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2025.4.12
patch
1 CVE
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev |
v2025.4.12
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.7
patch
|
v2026.2.7
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.6
patch
|
v2026.2.6
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2025.4.11
patch
1 CVE
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev |
v2025.4.11
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.5
patch
|
v2026.2.5
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2025.4.10
patch
1 CVE
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev |
v2025.4.10
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.4
patch
|
v2026.2.4
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.3
patch
|
v2026.2.3
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.2
patch
|
v2026.2.2
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2025.4.9
patch
1 CVE
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev |
v2025.4.9
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2026.2.1
patch
| ||
v2025.4.8
patch
1 CVE
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
v2026.2.0
minor
| ||
v2025.4.7
patch
1 CVE
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
v2026.2.0-RC1
pre
| ||
v2026.1.6
patch
|
v2026.1.6
patch
Dependencies (16)
+ 8 more
Changelog
Compare changes
|
|
v2025.4.6
patch
1 CVE
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev | ||
v2026.1.5
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v2026.1.5
patch
Dependencies (14)
+ 6 more
Changelog
Compare changes
|
|
v2025.4.5
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v2025.4.5
patch
Dependencies (14)
+ 6 more
Changelog
Compare changes
|
|
v2026.1.4
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v2026.1.4
patch
Dependencies (14)
+ 6 more
Changelog
Compare changes
|
|
v2025.4.4
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v2025.4.4
patch
Dependencies (14)
+ 6 more
Changelog
Compare changes
|
|
v2026.1.3
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev | ||
v2025.4.3
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev | ||
v2026.1.2
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev | ||
v2025.4.2
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev | ||
v2026.1.1
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev | ||
v2025.4.1
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev | ||
v2026.1.0
major
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v2026.1.0
major
Dependencies (14)
+ 6 more
Changelog
Compare changes
|
|
v2025.4.0
major
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v2025.4.0
major
Dependencies (14)
+ 6 more
Changelog
Compare changes
|
|
v0.15.17
minor
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v0.15.17
minor
Dependencies (14)
+ 6 more
Changelog
Compare changes
|
|
v0.14.19
minor
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v0.14.19
minor
Dependencies (11)
+ 3 more
Changelog
Compare changes
|
|
v0.13.20
minor
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev | ||
v0.12.18
patch
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v0.12.18
patch
Dependencies (11)
+ 3 more
Changelog
Compare changes
|
|
v0.12.9
minor
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev | ||
v0.10.21
minor
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v0.10.21
minor
Dependencies (11)
+ 3 more
Changelog
Compare changes
|
|
v0.9.30
minor
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev | ||
v0.6.30
minor
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v0.6.30
minor
Dependencies (11)
+ 3 more
Changelog
Compare changes
|
|
v0.5.20
minor
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v0.5.20
minor
Dependencies (11)
+ 3 more
Changelog
Compare changes
|
|
v0.4.30
initial
3 CVEs
CVE-2026-55212
GHSA-f97c-ph8j-8vff
Aug 28, 2026
Pimcore: Insufficient Permission Check on Class Definition Creation Endpoint Allows Privilege Escalation
7.1
/ 10
High
Network
Low
Low
None
Unchanged
Low
High
None
SummaryThe Studio API class definition creation endpoint in DetailsIssue 1 — Incorrect permission guard on CreateController
The endpoint Any authenticated user with object editing rights can call this endpoint and create new class definitions, bypassing the intended admin-only restriction. The same user cannot perform this action through the Classic Admin UI, confirming the Studio API enforces a weaker permission check than the existing interface. Correct guard:
Issue 2 — No UID format validation at the API layer
Only an empty-string check is performed on Defense-in-depth requires validation at the API boundary consistent with the model layer. The same regex now applied in
Affected files in
Vulnerable endpoint:
PoCPrerequisites:
Step 1 — Authenticate as the editor user:
Expected response:
Step 2 — Confirm the user has no class management access in Classic Admin Log into Classic Admin as Step 3 — Create a class definition via the Studio API despite lacking the classes permission:
Expected response (vulnerable):
The class definition is created successfully by a user with no Expected response (patched):
ImpactAny authenticated Pimcore user with the standard The missing API-layer UID validation compounds this by allowing malformed UIDs to reach the model layer, producing unhandled internal exceptions that may expose stack traces depending on server debug configuration.
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 18 more Show less
v2025.4.10
v2025.4.11
v2025.4.12
v2025.4.13
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2025.4.6
v2025.4.7
v2025.4.8
v2025.4.9
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2026.1.6
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-55208
GHSA-79cw-hfcc-7mw9
Aug 28, 2026
Pimcore: SQL Injection via Column Name in DateFilter allows authenticated user to extract arbitrary database data including admin password hashes
7.7
/ 10
High
Network
Low
Low
None
Changed
High
None
None
SummaryAn authenticated user extracts the admin password hash and any other database content through a time-based blind SQL injection in the Vulnerability DetailsExploitable: DateFilter with Fixed Named Parameters
Because the named parameters are fixed strings, PDO accepts the binding regardless of what the column name contains. Same Pattern in Note FilterService
No Validation on Column Key
Why Backtick Wrapping is Not EscapingManual backtick wrapping ( Input: Produces:
Everything after Contrast with Safe Patterns in the Same Codebase
Note on EqualsFilter/LikeFilterThe Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit Step 1: Baseline request (no injection)
Response: Step 2: Unconditional SLEEP(3) injection
Response: The 6-second delay (3s x 2 queries: SELECT + COUNT) confirms SQL injection. The MySQL general log shows the injected SQL executed:
Step 3: Conditional SLEEP proving data extraction (TRUE case)This query tests whether the admin password hash starts with
Response: Step 4: Conditional SLEEP (FALSE case, wrong guess)Same query but testing for
Response: Timing comparison| Request | Payload | Response Time | Meaning |
|---------|---------|---------------|---------|
| Baseline | No injection | 0.07s | Normal |
| Unconditional SLEEP | By iterating through characters with ImpactAn authenticated user with Directly extractable high-value data:
Affected EndpointsAll endpoints using
Recommended FixReplace manual backtick wrapping with
Apply the same fix to Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev
CVE-2026-55207
GHSA-h854-c3m3-mh5v
Aug 28, 2026
Pimcore: Account Takeover via Password Reset URL Injection allows unauthenticated attacker to hijack any admin account with 2FA bypass
8.8
/ 10
High
Network
Low
None
Required
Unchanged
High
High
High
SummaryAn unauthenticated attacker takes over any Pimcore admin account by sending a password reset request with an attacker-controlled Vulnerability DetailsUnauthenticated Endpoint Accepts Attacker URLThe reset password endpoint at
Token Appended to Attacker URLIn
The token is generated and stored in the database BEFORE Token Login Bypasses 2FA
Token ValidityThe token is encrypted with the application secret, valid for 24 hours, and single-use (nullified after authentication). The attacker's server captures it before the victim completes any reset flow. Steps to ReproduceTested on Pimcore 12.x (2026.x branch, latest commit 1. Send password reset with attacker URL (no authentication needed)
2. Confirm token was generatedDatabase query shows the recovery token was created:
3. Token login (after victim clicks the link in their email)
Response:
4. Verify full admin access with the stolen session
Response:
Full admin session obtained. All CMS content, assets, PIM data, user accounts, and system configuration are accessible. ImpactAn unauthenticated attacker who knows a valid admin username takes over the account with full administrative privileges. The only user interaction is the victim clicking a password reset link in a legitimate email from the Pimcore instance. The email comes from the real Pimcore server, making it indistinguishable from a genuine reset email. The attack bypasses authentication (public endpoint), two-factor authentication (explicitly disabled on token login), and rate limiting (allows 3 attempts per window, trivially worked around with multiple IPs). Once authenticated as admin, the attacker controls all CMS content, digital assets, PIM product data, user accounts, system configuration, and server-side code execution via class definitions. Recommended FixRemove the
If the frontend needs to specify the URL for multi-domain setups, validate the host against the configured domain and any registered Site domains. Supporting Materials
Affected versions
v0.10.21
v0.12.18
v0.12.9
v0.13.20
v0.14.19
v0.15.17
v0.4.30
v0.5.20
v0.6.30
v0.9.30
v2025.4.0
v2025.4.1
+ 10 more Show less
v2025.4.2
v2025.4.3
v2025.4.4
v2025.4.5
v2026.1.0
v2026.1.1
v2026.1.2
v2026.1.3
v2026.1.4
v2026.1.5
Fixed in
2025.4.6
2026.1.6
References
Updated Aug 28, 2026 · Source: OSV.dev |
v0.4.30
initial
Dependencies (11)
+ 3 more
Changelog
|