Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate with low-privilege API credentials
-
DeliveryIdentify endpoint with writable untyped relation property
-
ExploitEnumerate valid IRI for a resource of a different class
-
InstallSubmit POST/PUT/PATCH with cross-type relation IRI
-
C2AbstractItemNormalizer bypasses is_a guard via missing $operation context
-
ExecuteWrong-typed object silently assigned to relation property
-
ImpactDownstream logic operates on type-confused data
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Type safety enforcement
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the attacker to hold a low-privilege authenticated account capable of submitting POST, PUT, or PATCH requests to an API Platform endpoint that declares at least one writable relation property. The decisive condition for silent data corruption is that the targeted relation property must be declared using the legacy PHP @var docblock annotation without a PHP 8.x native type declaration - properties with strict PHP 8.x types are partially protected by Symfony's PropertyAccessor throwing InvalidTypeException. The attacker must also know or enumerate valid IRIs for resources of the wrong type (typically discoverable via the API's hypermedia controls or collection endpoints). Exploitation is limited to data integrity corruption; there is no confidentiality or direct code execution impact. Non-default configurations that restrict writable relation fields or that enforce strict PHP 8.x typing throughout the data model significantly reduce exploitability. |
| Impact | The NVD CVSS 3.1 score of 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N) is well-calibrated for this vulnerability: network-reachable, low complexity, requiring only low-privilege write access, with high integrity impact and no confidentiality or availability impact. This is a credible risk for any API Platform deployment that exposes writable relation endpoints to non-admin authenticated users. There is no CISA KEV listing and no public exploit code referenced at time of analysis, so active exploitation is unconfirmed. EPSS data was not provided in the available intelligence. The practical blast radius is gated by two factors: the attacker must hold write access to an affected endpoint, and the full silent-corruption path only applies to legacy untyped @var-style properties - PHP 8.x typed properties receive partial protection from Symfony's PropertyAccessor. Downstream impact is application-dependent: if business logic downstream trusts the declared relation type for authorization or processing decisions, a type-confused object could subvert those checks. This is a real priority for API Platform deployments using legacy PHP typing patterns, but lower urgency for modern PHP 8.x codebases. |
| Exploit ScenarioDerived | An authenticated API user with write access submits a PATCH request to an endpoint exposing a writable untyped relation property - for example, an order's customer field expecting a User IRI - and instead supplies the IRI of an unrelated Product resource. Because the is_a guard is bypassed, the normalizer silently assigns the Product object to the customer property, corrupting the order record. Downstream business logic that assumes customer is always a User (e.g., authorization checks, invoice generation) then operates on the wrong object type, potentially bypassing guards or triggering undefined behavior. No public POC is known, but the attack requires only standard HTTP write access and knowledge of valid resource IRIs. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 01, 2026
Type confusion in API Platform Core's AbstractItemNormalizer allows authenticated API consumers to corrupt relational data by supplying IRIs pointing to resources of the wrong type during write operations (POST/PUT/PATCH). The root cause is that getResourceFromIri() omits the $operation context when calling IriConverter::getResourceFromIri(), silently bypassing the is_a type guard at IriConverter.php:86. All 4.1.x, 4.2.x, and 4.3.x releases prior to the patched versions are affected; no public exploit or CISA KEV listing has been identified at time of analysis.
RemediationAI
Upgrade to API Platform Core 4.1.30, 4.2.26, or 4.3.12, which restore type validation in AbstractItemNormalizer by correctly passing the $operation context to IriConverter::getResourceFromIri(), re-enabling the is_a type guard. The vendor advisory is at https://github.com/api-platform/core/security/advisories/GHSA-9rjg-x2p2-h68h. If an immediate upgrade is not feasible, restrict write access (POST/PUT/PATCH) on endpoints with writable relation properties to fully trusted, higher-privilege roles only, reducing exposure to least-privileged users who could exploit the bypass. Applications already using PHP 8.x typed relation properties benefit from partial mitigation via Symfony's PropertyAccessor raising an InvalidTypeException on type mismatch - but this is not a complete fix, as it depends on per-property typing discipline across the codebase and does not prevent exploitation on any untyped properties. Auditing the data model for untyped @var-only relation properties and converting them to PHP 8.x typed declarations provides an additional compensating control with the trade-off of requiring a PHP version and code refactor.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 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 is a PHP framework for building Hydra/JSON-LD hypermedia REST and GraphQL APIs. The vulnerability resides in the serialization layer's AbstractItemNormalizer, which resolves incoming relation IRIs (resource URLs) into PHP objects during deserialization of write payloads. The normalizer calls getResourceFromIri() without forwarding the $operation parameter, which causes IriConverter to skip the is_a class-type guard at IriConverter.php:86 that would otherwise reject a resource whose class does not match the relation's declared type. CWE-843 (Access of Resource Using Incompatible Type) is the root cause class. The exploitability varies by PHP property style: legacy untyped @var-annotated relation properties silently accept the wrong-typed object, directly corrupting application invariants; modern PHP 8.x strictly typed properties trigger an InvalidTypeException from Symfony's PropertyAccessor, providing a partial natural mitigation. Affected CPE: cpe:2.3:a:api-platform:core:*:*:*:*:*:*:*:*.
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
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
Network-accessible API write endpoint requires low-privilege authenticated access (PR:L); integrity is high from silent type-confused data corruption; no confidentiality or availability impact applies.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
API Platform Core is a system to create hypermedia-driven REST and GraphQL APIs. In versions prior to 4.1.30, 4.2.26 and 4.3.12, the serializer's AbstractItemNormalizer does not validate the resource type returned when resolving relation IRIs, allowing type confusion where a resource of an unintended type can be silently assigned to a relation property. An attacker who can submit write requests (POST/PUT/PATCH) to an API Platform endpoint with writable relations can supply a relation IRI pointing to a resource of a different type than the relation's declared class. Because getResourceFromIri() does not pass an $operation to IriConverter::getResourceFromIri(), the is_a type guard at IriConverter.php:86 is skipped. For untyped relation properties (legacy @var-only style), the wrong-typed object is silently assigned, corrupting invariants and potentially feeding downstream logic that assumes the declared type (CWE-843). For typed properties (modern PHP 8.x), the substitution is blocked by Symfony's PropertyAccessor with an InvalidTypeException. This issue has been fixed in versions 4.1.30, 4.2.26 and 4.3.12.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
A remote code execution vulnerability in MobileIron Core & Connector versions 10.3.0.3 and earlier, 10.4.0.0, 10.4.0.1,
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
Onlyoffice Document Server v6.0.0 and below and Core 6.1.0.26 and below were discovered to contain a stack overflow via
An issue was discovered in Form Tools through 3.0.20. Rated critical severity (CVSS 9.8), this vulnerability is remotely
Remote code execution in REDAXO CMS versions 5.18.2 through 5.21.0 is reachable by authenticated backend users with medi
Excessive Data Query Operations in a Large Data Table in GitHub repository pimcore/demo prior to 10.3.0. Rated medium se
An issue was discovered in Form Tools through 3.0.20. Rated medium severity (CVSS 6.1), this vulnerability is remotely e
Unauthenticated attackers who know a target's email address can take over Kiteworks Core accounts that use locally store
Root-level code execution on OPNsense firewalls running versions prior to 26.1.11 is achievable by an authenticated oper
An authentication bypass vulnerability in MobileIron Core & Connector versions 10.3.0.3 and earlier, 10.4.0.0, 10.4.0.1,
An issue was discovered in Form Tools through 3.0.20. Rated medium severity (CVSS 5.4), this vulnerability is remotely e
Stored cross-site scripting in Kiteworks Core (all versions prior to 9.5.0) enables unauthenticated attackers to persist
EUVD-2026-41126
GHSA-9rjg-x2p2-h68h
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB