CVE-2026-45162 - Pimcore has Unsafe PHP Deserialization in Multiple Locations Without allowed_classes Restriction

CVE-2026-45162 + Pimcore has Unsafe PHP Deserialization in Multiple Locations Without allowed_classes Restriction + High + 2026-05-27

One-sentence business risk

Attackers can turn a normal application path into code execution, making this a direct production-host takeover risk.

Research notes

  • Root cause: # GitHub Security Advisory Draft — GM-374 ## Summary Multiple locations in Pimcore v11 call PHP’s unserialize() on data from database columns and filesystem files without the allowed_classes restriction, enabling object injection if an attacker can control.
  • Affected versions: composer:pimcore/pimcore >= 12.0.0-RC1, <= 12.3.6; composer:pimcore/pimcore <= 11.5.16; composer:pimcore/pimcore >= 2026.1.0, < 2026.1.3.
  • Fixed / safe versions: 11.5.17, 12.3.7, 2026.1.3.
  • Public exploit / PoC signal: the consulted NVD/GHSA/vendor sources describe the trigger class; treat it as reproducible until patched.
  • CVSS: use upstream advisory score .

Exact vulnerable code pattern

object = unsafe_deserialize(untrusted_bytes)

Fixed / mitigated code pattern

parse JSON or another data-only format, then validate against a strict schema

Dependency or runtime update:

composer show pimcore/pimcore || true
composer require pimcore/pimcore --with-all-dependencies
composer audit

Step-by-step integration guide

  1. Inventory pimcore/pimcore across source, lockfiles, SBOMs, container images, CI images, and deployment manifests.
  2. Upgrade to 11.5.17, 12.3.7, 2026.1.3 or apply the exact vendor patch referenced below.
  3. Replace the vulnerable deserialization pattern with the fixed pattern and fail closed on malformed input.
  4. Add a regression test that exercises the advisory trigger and proves the request is rejected, bounded, or authorized.
  5. Deploy through canary, monitor security logs and resource metrics, then remove temporary edge blocks only after all runtimes are fixed.

Alternative mitigations

  • Disable the vulnerable feature path while the package/runtime update rolls out.
  • Add WAF or reverse-proxy rules for traversal tokens, prototype-polluting keys, oversized frames, shell metacharacters, or unauthenticated tool calls matching the trigger class.
  • Restrict internal egress, rotate exposed secrets, and revoke affected tokens/keys if the vulnerability can disclose config, logs, JWT secrets, proxy credentials, or PKI material.
  • For admin/API authorization issues, temporarily require elevated roles and explicit ownership checks at the gateway.

Detection signature

id: cve-2026-45162-pimcore-has-unsafe-php-deserialization-in-multip
source: "GitHub Advisory Database"
dependency_or_product: "pimcore/pimcore"
affected: "composer:pimcore/pimcore >= 12.0.0-RC1, <= 12.3.6; composer:pimcore/pimcore <= 11.5.16; composer:pimcore/pimcore >= 2026.1.0, < 2026.1.3"
fixed: "11.5.17, 12.3.7, 2026.1.3"
signals:
  - "deserialization"
  - "../"
  - "__proto__"
  - "tools/call"
  - "wp_ajax_nopriv"
  - "pickle.loads"
  - "shell command construction"
action: "upgrade, add regression test, and verify deploy artifact"

Copy-paste skill

You are remediating CVE-2026-45162 (Pimcore has Unsafe PHP Deserialization in Multiple Locations Without allowed_classes Restriction) in this repository.

Find every affected dependency, runtime, image, service configuration, and reachable code path. Upgrade or patch to 11.5.17, 12.3.7, 2026.1.3. Replace the vulnerable deserialization pattern with a fail-closed implementation, add a regression test for the trigger shape, and update deployment/SBOM artifacts. If this repository does not control the affected runtime, create TRIAGE.md naming the owner, affected version, fixed version, and blocking decision.

Keywords, affected tech stack, and revenue tags

  • Keywords: CVE-2026-45162, deserialization, pimcore/pimcore, GitHub Advisory Database.
  • Affected tech stack: php/composer.
  • Revenue tags: sellable_to_fintech, enterprise_blocker, high_priority_sla.

References