{"id":"CVE-2026-88974","summary":"WPGraphQL: Contributor can publish and modify posts without the required capabilities via updatePost","details":"WPGraphQL provides a GraphQL API for WordPress sites. Prior to 2.22.2, the updatePost mutation in src/Mutation/PostObjectUpdate.php checks only the collection-level edit_posts capability and the post author, but does not enforce the object-level edit_post capability or require publish_posts for public status transitions. An authenticated Contributor can therefore publish the Contributor's own draft without editorial approval or modify the Contributor's previously published post despite lacking edit_published_posts, while posts owned by other authors remain protected. This issue is fixed in version 2.22.2.","aliases":["GHSA-5mmc-8pc9-wggg"],"modified":"2026-09-25T03:48:49.734013294Z","published":"2026-09-23T14:11:06.092Z","database_specific":{"cwe_ids":["CWE-863"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/88xxx/CVE-2026-88974.json","cna_assigner":"GitHub_M"},"references":[{"type":"WEB","url":"https://github.com/wp-graphql/wp-graphql/releases/tag/wp-graphql%2Fv2.22.2"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/88xxx/CVE-2026-88974.json"},{"type":"ADVISORY","url":"https://github.com/wp-graphql/wp-graphql/security/advisories/GHSA-5mmc-8pc9-wggg"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-88974"},{"type":"FIX","url":"https://github.com/wp-graphql/wp-graphql/commit/55441663eaa33c3f2e05de038c8286c845916461"},{"type":"FIX","url":"https://github.com/wp-graphql/wp-graphql/pull/4270"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/wp-graphql/wp-graphql","events":[{"introduced":"0"},{"fixed":"55441663eaa33c3f2e05de038c8286c845916461"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"2.22.2"}],"source":["AFFECTED_FIELD","REFERENCES"]}}],"versions":["wp-graphql/v2.22.1","wp-graphql/v2.22.0","wp-graphql/v2.21.1","wp-graphql-ide/v5.5.0","wp-graphql-acf/v2.8.0","wp-graphql/v2.21.0","wp-graphql-acf/v2.7.1","wp-graphql-smart-cache/v2.3.1","wp-graphql-ide/v5.4.2","wp-graphql/v2.20.0","wp-graphql-ide/v5.4.1","wp-graphql-ide/v5.4.0","wp-graphql/v2.19.0","wp-graphql-ide/v5.3.0","wp-graphql-smart-cache/v2.3.0","wp-graphql-acf/v2.7.0","wp-graphql/v2.18.0","wp-graphql-ide/v5.2.0","wp-graphql-acf/v2.6.5","wp-graphql-ide/v5.1.0","wp-graphql-acf/v2.6.4","wp-graphql-smart-cache/v2.2.2","wp-graphql/v2.17.0","wp-graphql-acf/v2.6.3","wp-graphql-ide/v5.0.1","wp-graphql/v2.16.0","wp-graphql-ide/v5.0.0","wp-graphql/v2.15.1","wp-graphql-acf/v2.6.2","wp-graphql/v2.15.0","wp-graphql-ide/v4.5.0","wp-graphql-smart-cache/v2.2.1","wp-graphql/v2.14.1","wp-graphql-acf/v2.6.1","wp-graphql/v2.14.0","wp-graphql/v2.13.0","wp-graphql-ide/v4.4.1","wp-graphql-smart-cache/v2.2.0","wp-graphql-smart-cache/v2.1.0","wp-graphql-acf/v2.6.0","wp-graphql/v2.12.0","wp-graphql-ide/v4.4.0","wp-graphql-ide/v4.3.0","wp-graphql/v2.11.2","wp-graphql/v2.11.1","wp-graphql-ide/v4.2.0","wp-graphql-acf/v2.5.2","wp-graphql/v2.11.0","wp-graphql/v2.10.1","wp-graphql/v2.10.0","wp-graphql-acf/v2.5.1","wp-graphql-acf/v2.5.0","wp-graphql/v2.9.1","wp-graphql/v2.9.0","wp-graphql-ide/v4.1.0","wp-graphql-smart-cache/v2.0.1","wp-graphql/v2.8.0","wp-graphql/v2.7.0","v1.0","v1.14.3","v1.13.7","v1.13.6","v1.13.5","v1.13.4","v1.13.3","v1.13.2","v1.13.1","v1.13.0","v1.12.3","v1.12.2","v1.12.1","v1.12.0","v1.11.3","v1.8.7","v1.11.2","v1.11.1","v1.11.0","v1.10.0","v1.9.1","v1.9.0","v1.8.6","v1.8.5","v1.8.4","v1.8.3","v1.8.2","v1.8.1","v1.8.0","v1.7.2","v1.7.1","v1.7.0","v1.6.12","v1.6.11","v1.6.10","v1.6.9","v1.6.8","v1.6.7","v1.6.6","v1.6.5","v1.6.4","v1.6.3","v1.6.2","v1.6.1","v1.6.0","v1.5.8","v1.5.7","v1.4.7","v1.5.6","v1.5.5","v1.5.4","v1.5.3","v1.5.2","v1.5.1","v1.5.0","v1.4.3","v1.4.0","v1.4.2","v1.4.1","v1.3.10","v1.3.9","v1.3.8","v1.3.7","v1.3.6","v1.3.5","v1.3.4","v1.3.3","v1.3.2","v1.3.1","v1.3.0","v1.2.6","v1.2.5","v1.2.4","1.2.2","v1.2.1","v1.1.8","v1.1.5","v1.1.4","v1.1.3","v1.1.2","v1.1.1","v1.1.0","v1.0.5","v1.0.4","v1.0.3","v1.0.2","v1.0.1","v0.15.6","v0.15.4","v0.15.3","v0.15.2","v0.15.1","v0.15.0","v0.14.0","v0.13.3","v0.13.2","v0.13.1","v0.13.0","v0.12.3","v0.12.2","v0.12.1","v0.12.0","v0.11.0","v0.10.3","v0.10.2","v0.10.1","v0.10.0","v0.9.1","v0.9.0","v0.8.4","v0.8.3","v0.8.2","v0.8.1","v0.8.0","v0.7.1","v0.7.0","v0.6.3","v0.6.2","v0.6.1","v0.6.0","v0.5.1","v0.5.0","v0.4.3","v0.4.2","v0.4.1","v0.4.0","v0.3.8","v0.3.7","v0.3.6","v0.3.5","v0.3.2","v0.3.01","v0.3.0","v0.2.3","v0.2.2","v0.2.1","v0.2.0","v0.1.4","v0.1.3","v0.1.2","v0.1.1","v0.1.0","v0.0.34","v0.0.33","v0.0.32","v0.0.31","v0.0.30","v0.0.29","v0.0.28","v0.0.27","v0.0.26","v0.0.25","v0.0.24","v0.0.23","v0.0.22","v0.0.21","v0.0.20","v0.0.18","v0.0.16","v0.0.15","v0.0.14","v0.0.13","v0.0.12","v0.0.11","v0.0.10","v0.0.9","v0.0.8","v0.0.7","v0.0.6","0.0.5","0.0.3","0.0.2"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-88974.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L"}]}