CVE-2025-31485 – api-platform/core
Package
Manager: composer
Name: api-platform/core
Vulnerable Version: >=4.0.0-alpha.1 <4.0.22 || >=0 <3.4.17 || >=4.1.0-alpha.1 <4.1.5
Severity
Level: High
CVSS v3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CVSS v4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
EPSS: 0.00017 pctl0.02737
Details
GraphQL grant on a property might be cached with different objects ### Original message: I found an issue with security grants on on properties in the GraphQL ItemNormalizer: If you use something like `#[ApiProperty(security: 'is_granted("PROPERTY_READ", [object, property])')]` on a member of an entity, the grant gets cached and is only evaluated once, even if the `object` in question is a different one. There is the `ApiPlatform\GraphQl\Serializer\ItemNormalizer::isCacheKeySafe()` method that seems to be intended to prevent this: https://github.com/api-platform/core/blob/88f5ac50d20d6510686a7552310cc567fcca45bf/src/GraphQl/Serializer/ItemNormalizer.php#L160-L164 and in its usage on line 90 it does indeed not create a cache key, but the `parent::normalize()` that is called afterwards still creates the cache key and causes the issue. ### Impact It grants access to properties that it should not. ### Workarounds Override the ItemNormalizer. Patched at: https://github.com/api-platform/core/commit/7af65aad13037d7649348ee3dcd88e084ef771f8
Metadata
Created: 2025-04-04T14:19:42Z
Modified: 2025-08-29T21:08:09Z
Source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/04/GHSA-428q-q3vv-3fq3/GHSA-428q-q3vv-3fq3.json
CWE IDs: ["CWE-696"]
Alternative ID: GHSA-428q-q3vv-3fq3
Finding: F014
Auto approve: 1