{"id":"CVE-2025-23204","aliases":["EUVD-2025-7991","GHSA-7mxx-3cgm-xxv3"],"status":"published","title":"GraphQl securityAfterResolver not called","description":"API Platform Core is a system to create hypermedia-driven REST and GraphQL APIs. Starting in version 3.3.8, a security check that gets called after GraphQl resolvers is always replaced by another one as there's no break in a clause. As this falls back to `security`, the impact is there only when there's only a security after resolver and none inside security. Version 3.3.15 contains a patch for the issue.","severity":{"version":"3.1","score":4.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00301,"percentile":0.23133,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-20","CWE-484"],"published":"2025-03-24T15:53:19Z","modified":"2026-10-28T02:30:45Z","fixes":[{"ecosystem":"Packagist","package":"api-platform/core","fixed_in":["3.3.15"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Packagist","package":"api-platform/core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.3.8"},{"fixed":"3.3.15"}]}]},{"source":"osv","ecosystem":"Packagist","package":"api-platform/core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.3.8"},{"fixed":"3.3.15"}]}],"versions":["v3.3.10","v3.3.11","v3.3.12","v3.3.13","v3.3.14","v3.3.8","v3.3.9"]}],"products":[{"vendor":"api-platform","product":"core"},{"vendor":"opnsense","product":"core"}],"references":[{"url":"https://github.com/api-platform/core/security/advisories/GHSA-7mxx-3cgm-xxv3","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/api-platform/core/pull/6444","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/api-platform/core/pull/6444/files#diff-09e3c2cfe12a2ce65bd6c983c7ca6bfcf783f852b8d0554bb938e8ebf5e5fa65R56","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/api-platform/core/commit/dc4fc84ba93e22b4f44a37e90a93c6d079c1c620","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/soyuka/core/blob/7e2e8f9ff322ac5f6eb5f65baf432bffdca0fd51/src/Symfony/Security/State/AccessCheckerProvider.php#L49-L57","tags":["x_refsource_MISC","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-23204","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-7mxx-3cgm-xxv3"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/23xxx/CVE-2025-23204.json","tags":["advisory"]},{"url":"https://github.com/api-platform/core","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2025-23204","title":"GraphQl securityAfterResolver not called","description":"API Platform Core is a system to create hypermedia-driven REST and GraphQL APIs. Starting in version 3.3.8, a security check that gets called after GraphQl resolvers is always replaced by another one as there's no break in a clause. As this falls back to `security`, the impact is there only when there's only a security after resolver and none inside security. Version 3.3.15 contains a patch for the issue.","status":"published","published":"2025-03-24T15:53:19.156Z","modified":"2025-03-24T18:03:54.959Z","cvss":[{"version":"3.1","score":4.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-20"],"updated_at":"2026-11-02T14:32:33.082076Z"}],"euvd":[{"id":"EUVD-2025-7991","description":"API Platform Core is a system to create hypermedia-driven REST and GraphQL APIs. Starting in version 3.3.8, a security check that gets called after GraphQl resolvers is always replaced by another one as there's no break in a clause. As this falls back to `security`, the impact is there only when there's only a security after resolver and none inside security. Version 3.3.15 contains a patch for the issue.","status":"published","published":"2025-03-24T15:53:19Z","modified":"2025-03-24T18:03:54Z","cvss":[{"version":"3.1","score":4.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T20:52:54.592858Z"}],"ghsa":[{"id":"GHSA-7mxx-3cgm-xxv3","title":"API Platform Core does not call GraphQl securityAfterResolver","description":"### Summary\nA security check that gets called after GraphQl resolvers is always replaced by another one as there's no break in this clause: https://github.com/api-platform/core/pull/6444/files#diff-09e3c2cfe12a2ce65bd6c983c7ca6bfcf783f852b8d0554bb938e8ebf5e5fa65R56\n\nhttps://github.com/soyuka/core/blob/7e2e8f9ff322ac5f6eb5f65baf432bffdca0fd51/src/Symfony/Security/State/AccessCheckerProvider.php#L49-L57 \n\n### PoC\n\nCreate a graphql endpoint with a security after resolver.\n\n### Impact\n\nAs this fallsback to `security`, the impact is there only when there's only a security after resolver and none inside security. The test at https://github.com/api-platform/core/pull/6444 is probably broken.","status":"published","published":"2025-03-24T16:31:08Z","modified":"2025-03-24T18:41:26Z","cvss":[{"version":"3.1","score":4.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-20","CWE-484"],"updated_at":"2026-11-02T14:38:36.51789Z"}],"nvd":[{"id":"CVE-2025-23204","description":"API Platform Core is a system to create hypermedia-driven REST and GraphQL APIs. Starting in version 3.3.8, a security check that gets called after GraphQl resolvers is always replaced by another one as there's no break in a clause. As this falls back to `security`, the impact is there only when there's only a security after resolver and none inside security. Version 3.3.15 contains a patch for the issue.","status":"published","published":"2025-03-24T16:15:56.04Z","modified":"2026-06-17T08:52:37.043Z","cvss":[{"version":"3.1","score":4.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-20"],"updated_at":"2026-11-02T14:10:55.858901Z"}],"osv":[{"id":"CVE-2025-23204","title":"GraphQl securityAfterResolver not called","description":"API Platform Core is a system to create hypermedia-driven REST and GraphQL APIs. Starting in version 3.3.8, a security check that gets called after GraphQl resolvers is always replaced by another one as there's no break in a clause. As this falls back to `security`, the impact is there only when there's only a security after resolver and none inside security. Version 3.3.15 contains a patch for the issue.","status":"published","published":"2025-03-24T15:53:19.156Z","modified":"2026-10-28T02:30:45.79904672Z","cvss":[{"version":"3.1","score":4.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-20"],"updated_at":"2026-11-02T15:44:47.009967Z"},{"id":"GHSA-7mxx-3cgm-xxv3","title":"API Platform Core does not call GraphQl securityAfterResolver","description":"### Summary\nA security check that gets called after GraphQl resolvers is always replaced by another one as there's no break in this clause: https://github.com/api-platform/core/pull/6444/files#diff-09e3c2cfe12a2ce65bd6c983c7ca6bfcf783f852b8d0554bb938e8ebf5e5fa65R56\n\nhttps://github.com/soyuka/core/blob/7e2e8f9ff322ac5f6eb5f65baf432bffdca0fd51/src/Symfony/Security/State/AccessCheckerProvider.php#L49-L57 \n\n### PoC\n\nCreate a graphql endpoint with a security after resolver.\n\n### Impact\n\nAs this fallsback to `security`, the impact is there only when there's only a security after resolver and none inside security. The test at https://github.com/api-platform/core/pull/6444 is probably broken.","status":"published","published":"2025-03-24T16:31:08Z","modified":"2025-03-24T18:56:56.970231Z","cvss":[{"version":"3.1","score":4.4,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-20","CWE-484"],"updated_at":"2026-11-02T15:46:41.349637Z"}]}}
