{"id":"CVE-2025-31485","aliases":["GHSA-428q-q3vv-3fq3"],"url":"https://o3.security/vulnerability/CVE-2025-31485","summary":"GraphQL grant on a property might be cached with different objects","details":"### Original message:\n\nI found an issue with security grants on on properties in the GraphQL ItemNormalizer:\n\nIf 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.\n\nThere 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  \nand 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.\n\n### Impact\n\nIt grants access to properties that it should not.\n\n### Workarounds\n\nOverride the ItemNormalizer.\n\nPatched at: https://github.com/api-platform/core/commit/7af65aad13037d7649348ee3dcd88e084ef771f8","published":"2025-04-03T19:31:46.021Z","modified":"2026-10-28T02:31:13.601343375Z","cvss":{"score":7.5,"severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"},"epss":null,"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Packagist","name":"api-platform/graphql","fixedVersion":"4.0.22"},{"ecosystem":"Packagist","name":"api-platform/core","fixedVersion":"4.0.22"},{"ecosystem":"Packagist","name":"api-platform/graphql","fixedVersion":"3.4.17"},{"ecosystem":"Packagist","name":"api-platform/core","fixedVersion":"3.4.17"},{"ecosystem":"Packagist","name":"api-platform/core","fixedVersion":"4.1.5"},{"ecosystem":"Packagist","name":"api-platform/graphql","fixedVersion":"4.1.5"}],"fix":{"url":"https://github.com/api-platform/core/commit/7af65aad13037d7649348ee3dcd88e084ef771f8","label":"api-platform/core@7af65aa"},"references":[{"type":"WEB","url":"https://github.com/api-platform/core/releases/tag/v3.4.17"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/31xxx/CVE-2025-31485.json"},{"type":"ADVISORY","url":"https://github.com/api-platform/core/security/advisories/GHSA-428q-q3vv-3fq3"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-31485"},{"type":"FIX","url":"https://github.com/api-platform/core/commit/7af65aad13037d7649348ee3dcd88e084ef771f8"},{"type":"FIX","url":"https://github.com/api-platform/core/commit/cba3acfbd517763cf320167250c5bed6d569696a"},{"type":"WEB","url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/api-platform/core/CVE-2025-31485.yaml"},{"type":"WEB","url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/api-platform/graphql/CVE-2025-31485.yaml"},{"type":"PACKAGE","url":"https://github.com/api-platform/core"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-28T02:31:13.601343375Z"}}