Skip to main content

API Platform Core CVE-2026-49858

| EUVDEUVD-2026-41129 MEDIUM
Use of Cache Containing Sensitive Information (CWE-524)
2026-07-01 GitHub_M GHSA-pjhx-3c3w-9v23
5.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as lower-privileged user
  2. Delivery
    Higher-privileged user request populates componentsCache
  3. Exploit
    Send request to same JSON:API or HAL endpoint
  4. Execution
    Cache_key collision serves higher-privileged structure
  5. Impact
    Observe hidden attribute and relationship names

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V3 - Web Frontend Security Cache-Control for sensitive pages
Exploitation Conditions

Exploitation requires three concurrent conditions: the target application must use #[ApiProperty(security: ...)] annotations to restrict property visibility on a per-user basis; the attacker must hold at least a lower-privileged authenticated account capable of issuing requests to the affected JSON:API or HAL endpoint; and a higher-privileged user's request must have populated the componentsCache for the same cache_key within the active cache window. Applications that do not configure per-user property security gates via #[ApiProperty(security: ...)] are entirely unaffected. Exploitation is further bounded by the fact that only property structure (attribute and relationship names, link shapes) is disclosed - not property values - limiting the sensitivity of the leak to the semantic meaning of the hidden field names themselves. The CVSS AC:H reflects the cache timing dependency, though in high-traffic deployments this window is frequently available.

Impact

The NVD-assigned CVSS 3.1 score of 5.9 (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N) reflects network-reachable exploitation but acknowledges high attack complexity due to the cache timing dependency. No EPSS score is available in the provided intelligence, so exploitation probability cannot be quantified precisely. There is no CISA KEV listing and no published POC, indicating no confirmed or widespread active exploitation. The C:H rating merits scrutiny: the leak exposes property structure - attribute names, relationship keys, and link shapes - rather than actual property values, which may constitute a lower effective confidentiality impact in practice than C:H implies; however, if the hidden property names themselves carry sensitive semantic meaning (e.g., the existence of an admin_override field), the structural disclosure can be operationally significant. The AC:H constraint is genuine: exploitation requires a race-condition-like scenario where a higher-privileged user's request populates the cache and a lower-privileged user's request hits the same cache_key entry before expiry. In high-traffic multi-tenant deployments this window is routinely available, making the effective complexity lower than AC:H suggests in those environments. The PR:N assignment may overstate accessibility since the attacker must hold at least a lower-privileged account to issue the API request and observe the leaked structure. Overall this is a genuine medium-severity information disclosure that should be patched in any application using per-user property security gates, but it is not an emergency given the absence of known exploitation.

Exploit ScenarioDerived

A lower-privileged user sends a JSON:API or HAL GET request to an endpoint shortly after a higher-privileged user accessed the same resource, causing their request to be served from the componentsCache entry keyed on the shared cache_key. The lower-privileged user's response includes the full attribute, relationship, and link structure computed for the higher-privileged user's security context, revealing the names of properties that the #[ApiProperty(security: ...)] predicate would have hidden. No public exploit code exists; successful exploitation depends on cache timing alignment, which is a realistic condition in high-traffic multi-tenant APIs.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 01, 2026

Cross-user attribute structure leakage in API Platform Core's JSON:API and HAL serializers exposes the schema layout of security-gated properties to lower-privileged users through improper cache reuse. Versions from 2.6.0 up to 4.1.29, 4.2.26, and 4.3.12 are affected across the core, hal, and json-api packages. The component structure computed for a higher-privileged user's request can be served from cache to a subsequent lower-privileged user's request, bypassing the per-request evaluation of #[ApiProperty(security: ...)] predicates. No public exploit identified at time of analysis; vendor-released patches are available.

RemediationAI

Upgrade to API Platform Core 4.1.29, 4.2.26, or 4.3.12 - whichever matches the installed minor branch - as these releases introduce the missing isCacheKeySafe check in both the JSON:API and HAL item normalizers, preventing cross-user reuse of the componentsCache. Full patch details are in the vendor advisory at https://github.com/api-platform/core/security/advisories/GHSA-pjhx-3c3w-9v23. If an immediate upgrade is not feasible, a targeted compensating control is to customize the API Platform serialization context builder to incorporate a user-specific token (such as a hashed user ID or role fingerprint) into the cache_key context parameter, ensuring that cache entries are never shared across users with differing security contexts. The trade-off of this workaround is increased per-request serialization overhead and potential cache size growth proportional to the number of distinct user security profiles. Applications that do not use #[ApiProperty(security: ...)] for per-user property gating are not susceptible to this specific issue and need not apply the workaround as a priority.

Affected VersionsENISA

core 2.6.0, < 4.1.29
core 4.2.0, < 4.2.25
core 4.3.0, < 4.3.8
api-platform/json-api 4.3.0, < 4.3.8
api-platform/json-api 2.6.0, < 4.1.29
api-platform/json-api 4.2.0, < 4.2.25
api-platform/hal 4.3.0, < 4.3.8
api-platform/hal 4.2.0, < 4.2.25
api-platform/hal 2.6.0, < 4.1.29

Affected Packages

composer api-platform/core fix: 4.1.29, 4.2.25, 4.3.8
composer api-platform/hal fix: 4.1.29, 4.2.25, 4.3.8
composer api-platform/json-api fix: 4.1.29, 4.2.25, 4.3.8
euvd api_platform_hal_2_6_0 fix: 4.1.29
euvd api_platform_hal_4_2_0 fix: 4.2.25
euvd api_platform_hal_4_3_0 fix: 4.3.8
euvd api_platform_json_api_2_6_0 fix: 4.1.29
euvd api_platform_json_api_4_2_0 fix: 4.2.25
euvd api_platform_json_api_4_3_0 fix: 4.3.8
euvd core_2_6_0 fix: 4.1.29
euvd core_4_2_0 fix: 4.2.25
euvd core_4_3_0 fix: 4.3.8

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 12 packages in composer, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

API Platform Core (cpe:2.3:a:api-platform:core) is a PHP framework for building hypermedia-driven REST and GraphQL APIs on top of Symfony. The root cause is CWE-524 (Use of Cache Containing Sensitive Information): both ApiPlatform\JsonApi\Serializer\ItemNormalizer and ApiPlatform\Hal\Serializer\ItemNormalizer maintain an internal componentsCache array keyed on $context['cache_key']. This key is set unconditionally before delegating to the parent normalizer, without first consulting the isCacheKeySafe gate that determines whether a given cache key is safe to reuse across security contexts. The #[ApiProperty(security: ...)] annotation is designed to be evaluated per-request to decide whether a property (attribute, relationship, or link) is exposed in the serialized output. Because the cache bypasses this per-request gate, the structural decisions made for one user's security context are frozen in cache and replayed for a subsequent user who may have a different permission set. The affected CPEs span cpe:2.3:a:api-platform:api-platform/hal and cpe:2.3:a:api-platform:api-platform/json-api as well as the core package.

Know when Core gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 5.3 MEDIUM

Attacker must hold a lower-privileged account (PR:L) to issue API requests; cache timing dependency justifies AC:H; no integrity or availability impact applies.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Jul 01, 2026 - 21:02 EUVD

DescriptionCVE.org

API Platform Core is a system to create hypermedia-driven REST and GraphQL APIs. In versions from 2.6.0 prior to 4.1.29, 4.2.26, and 4.3.12, a missing isCacheKeySafe gate in the JSON:API and HAL item normalizers causes a cross-user attribute leak. #[ApiProperty(security: ...)] is evaluated per request to decide whether a property is exposed. The componentsCache arrays in ApiPlatform\JsonApi\Serializer\ItemNormalizer and ApiPlatform\Hal\Serializer\ItemNormalizer are keyed on $context['cache_key'], which is set unconditionally before delegating to the parent normalizer. The component structure (attributes, relationships, links) computed for one request can therefore be reused for a subsequent request whose user has a different set of accessible properties. A user with lower privileges may end up seeing the structure of properties that the security predicate would otherwise have hidden for them. This issue has been fixed in versions 4.1.29, 4.2.26, and 4.3.12.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Medium
widely used PHP API framework in Symfony ecosystem
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
2
Sightings
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

50
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Core

View all
CVE-2020-15505 CRITICAL POC
9.8 Jul 07

A remote code execution vulnerability in MobileIron Core & Connector versions 10.3.0.3 and earlier, 10.4.0.0, 10.4.0.1,

CVE-2022-29777 CRITICAL POC
9.8 Jun 02

Onlyoffice Document Server v6.0.0 and below and Core 6.1.0.26 and below were discovered to contain a heap overflow via t

CVE-2022-29776 CRITICAL POC
9.8 Jun 02

Onlyoffice Document Server v6.0.0 and below and Core 6.1.0.26 and below were discovered to contain a stack overflow via

CVE-2021-38145 CRITICAL POC
9.8 Aug 31

An issue was discovered in Form Tools through 3.0.20. Rated critical severity (CVSS 9.8), this vulnerability is remotely

CVE-2026-53599 HIGH POC
7.5 Jul 31

Remote code execution in REDAXO CMS versions 5.18.2 through 5.21.0 is reachable by authenticated backend users with medi

CVE-2026-54164 MEDIUM POC
6.5 Jul 01

Type confusion in API Platform Core's AbstractItemNormalizer allows authenticated API consumers to corrupt relational da

CVE-2023-5192 MEDIUM POC
6.5 Sep 27

Excessive Data Query Operations in a Large Data Table in GitHub repository pimcore/demo prior to 10.3.0. Rated medium se

CVE-2021-38143 MEDIUM POC
6.1 Aug 31

An issue was discovered in Form Tools through 3.0.20. Rated medium severity (CVSS 6.1), this vulnerability is remotely e

CVE-2026-102115 CRITICAL
9.8 Sep 30

Unauthenticated attackers who know a target's email address can take over Kiteworks Core accounts that use locally store

CVE-2026-57155 CRITICAL
9.9 Oct 15

Root-level code execution on OPNsense firewalls running versions prior to 26.1.11 is achievable by an authenticated oper

CVE-2020-15506 CRITICAL
9.8 Jul 07

An authentication bypass vulnerability in MobileIron Core & Connector versions 10.3.0.3 and earlier, 10.4.0.0, 10.4.0.1,

CVE-2021-38144 MEDIUM POC
5.4 Aug 31

An issue was discovered in Form Tools through 3.0.20. Rated medium severity (CVSS 5.4), this vulnerability is remotely e

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy