
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-54768 is a user enumeration and profile disclosure vulnerability in the WPGraphQL WordPress plugin affecting versions 2.0.0 through 2.14.1 (prior to 2.15.1). A deprecated user field on the SendPasswordResetEmailPayload GraphQL type allows unauthenticated callers to determine whether a given username or email belongs to a registered author-class account, and to retrieve their public profile fields — directly undermining the plugin's explicit anti-enumeration design. The vulnerability was discovered via source code review on May 29, 2026, and publicly disclosed on June 9, 2026, with the advisory published to the GitHub Advisory Database on July 31, 2026. It carries a CVSS v4.0 base score of 6.9 (Medium) (GitHub Advisory).
The root cause is an Observable Response Discrepancy (CWE-204): the sendPasswordResetEmail mutation resolver in src/Mutation/SendPasswordResetEmail.php is intentionally designed to always return success: true to prevent user enumeration, but it internally populates $payload['id'] with the real user ID when the account exists. A deprecated user field registered in src/Deprecated.php reads this internal $payload['id'] and resolves it through the standard user loader, returning a full User object for existing author-class accounts and null for non-existent ones — creating a binary oracle. The WPGraphQL User Model's allowed_restricted_fields policy permits unauthenticated reads of public author fields (databaseId, name, firstName, lastName, slug, description, uri, url), making the leak exploitable with a single unauthenticated GraphQL mutation. A proof-of-concept mutation was included in the advisory itself (GitHub Advisory).
An unauthenticated attacker can confirm whether any username or email address is registered on the WordPress site, and for author-class users (those with published posts, including editors and administrators), retrieve databaseId, name, firstName, lastName, slug, description (bio), and uri. This bypasses partial hardening measures such as disabled REST API user endpoints, suppressed author XML sitemaps, and blocked ?author=N redirects. The harvested profile data can directly facilitate targeted spearphishing campaigns, credential stuffing, or further account-targeted attacks (GitHub Advisory).
/graphql endpoint or plugin headers).https://target.example.com/graphql to verify the endpoint is active and the sendPasswordResetEmail mutation is available.query EnumerateUser {
sendPasswordResetEmail(input: { username: "victim@example.com" }) {
success
user {
databaseId
name
firstName
lastName
slug
description
uri
}
}
}data.sendPasswordResetEmail.user is null, the account does not exist. If it returns a populated User object, the account exists and profile data is disclosed.firstName, lastName, description, and email (if inferred) to craft targeted spearphishing emails or attempt credential stuffing against other services (GitHub Advisory)./graphql endpoint from a single IP or rotating IPs, each containing the sendPasswordResetEmail mutation with varying username input values.sendPasswordResetEmail and the user field; requests originating from automated tools (e.g., missing browser-typical headers, sequential timing).user field being requested on SendPasswordResetEmailPayload — legitimate clients should not be querying a deprecated field in production.Upgrade WPGraphQL to version 2.15.1 or later, which gates the deprecated user field on the list_users capability so it returns null for unauthenticated callers regardless of account existence (WPGraphQL Release). If immediate upgrade is not possible, a temporary workaround is to add a custom filter or plugin snippet that overrides the SendPasswordResetEmailPayload.user resolver to always return null. Additionally, implementing a web application firewall (WAF) rule to rate-limit or block automated GraphQL mutation requests to the sendPasswordResetEmail endpoint can reduce enumeration risk while patching is pending (GitHub Advisory).
The vulnerability was reported by independent security researcher Luke Granto (lukegranto23), who discovered it via source code review in approximately 15 minutes and reported it in good faith with no live exploitation against third-party deployments. The WPGraphQL maintainer (jasonbahl) published the advisory and released the patch on June 9, 2026. No significant broader media coverage or notable community commentary beyond the advisory itself has been identified at this time (GitHub Advisory).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."