CVE-2026-49858Medium· 5.9▾ SunlitAPI Platform Core vulnerable to cross-user attribute leak in JSON:API and HAL item normalizers due to missing isCacheKeySafe gate
▾ Sunlit zone — Low / medium · no exploitation signal
impact 32.5 · likelihood 0.1 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Jul 10.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via GHSA
0.2%
0.2% → 0.3%
#[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 is the same vulnerability class as GHSA-428q-q3vv-3fq3 / CVE-2025-31485, which fixed only the GraphQL ItemNormalizer. The JSON:API and HAL paths were not addressed at the time.
Exploitation requires all of the following to coincide:
#[ApiProperty(security: ...)] with a predicate whose result depends on the current user (or on per-request state).true populates componentsCache before a request from a user for whom the predicate evaluates to false, within the lifetime of the same PHP process.php-fpm workers the cache only survives the duration of a single request, which makes the issue much harder to observe in practice.All three branches receive patched releases of api-platform/core, api-platform/json-api, and api-platform/hal.
Override the JSON:API and HAL ItemNormalizer services to gate $context['cache_key'] with a resource-class security check, or avoid #[ApiProperty(security: ...)] on resources served as JSON:API or HAL until the patch is applied. Pinning the deployment to classic php-fpm workers also limits exposure since the cache does not survive across requests.
isCacheKeySafe to AbstractItemNormalizer.api-platform/core >= 2.6.0, < 4.1.29api-platform/core >= 4.2.0, < 4.2.25api-platform/core >= 4.3.0, < 4.3.8api-platform/json-api >= 4.0.0, < 4.1.29api-platform/json-api >= 4.2.0, < 4.2.25api-platform/json-api >= 4.3.0, < 4.3.8api-platform/hal >= 4.0.0, < 4.1.29api-platform/hal >= 4.2.0, < 4.2.25api-platform/hal >= 4.3.0, < 4.3.8Upgrade to a patched release:
api-platform/core 4.1.29api-platform/core 4.2.25api-platform/core 4.3.8api-platform/json-api 4.1.29api-platform/json-api 4.2.25api-platform/json-api 4.3.8api-platform/hal 4.1.29api-platform/hal 4.2.25api-platform/hal 4.3.8Connected by shared product, vendor, weakness, or advisory.
CVE-2026-54164Medium· 6.5API Platform Core: Relation IRIs are not type-checked: a related resource can be denormalised as the wrong resource type (type confusion)
CVE-2026-61836High· 8.6Directus: Authorization-dependent response served from unsegmented cache key
CVE-2021-46416High· 8.1Insecure direct object reference in SUNNY TRIPOWER 5.0 Firmware version 3.10.16.R leads to unauthorized user groups accessing due to insecure cookie handling.
CVE-2025-14459High· 8.5A flaw was found in KubeVirt Containerized Data Importer (CDI)
CVE-2026-20897Critical· 9.1Gitea does not properly validate repository ownership when deleting Git LFS locks
CVE-2026-54178High· 8.1backpack/crud provides Create, Read, Update & Delete (CRUD) functions for Backpack, a collection of Laravel packages that help users build custom administration panels