Skip to main content

WPGraphQL EUVDEUVD-2026-114106

| CVE-2026-119701 MEDIUM
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-10-30 VulnCheck GHSA-f8vm-v352-pm3p
6.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach WPGraphQL endpoint unauthenticated
  2. Delivery
    Craft single POST aliasing sendPasswordResetEmail many times
  3. Exploit
    Bypass batch_limit via aliases
  4. Execution
    Server sends one email per alias
  5. Persist
    Exhaust mail quota and rotate reset keys
  6. Impact
    Legitimate password recovery and transactional email denied

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

No special conditions for the mail-exhaustion case - remote unauthenticated exploitation against default configurations of WPGraphQL 2.24.0 and earlier, because the per-request batch_limit (default 10) counts batched operations and never sees aliased field invocations inside a single operation. To deny recovery to a specific person, the attacker additionally needs that account's username or email address, which the advisory notes is public information on most sites. Limiting factors: the vulnerability requires the WPGraphQL plugin to be installed and its GraphQL endpoint reachable; impact is confined to email delivery and reset-key rotation (no data read or modified). Edge mitigations do not fully help - lowering the batch limit is ineffective because aliases are not batch entries, and WAF/reverse-proxy rate limiting caps request count but not the work a single request performs; the vendor states updating to 2.24.1 is the fix.

Impact

This is a genuine but bounded availability issue, not a top-tier emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) confirms remote, unauthenticated, low-complexity exploitation against default configurations, and the only impact metric set is VA:L - no confidentiality or integrity effect, limited availability impact confined to email delivery and password recovery. The vendor advisory corroborates the mechanism in detail (alias-based bypass of the batch_limit counter) and states the reporter measured ~1000 emails in 5 seconds from one anonymous request, so the flaw is real and trivially triggerable. However, the input provides no EPSS score, no CISA KEV listing, and no public exploit reference - so there is no public exploit identified at time of analysis and no evidence of active exploitation. The vuln.today decision label is 'this_month' (not act_now/emergency), consistent with a moderate-severity DoS. Net: a real, patch-this-month priority for sites running WPGraphQL, driven by ease of exploitation rather than impact severity, but it is a high-CVSS-adjacent availability nuisance rather than a critical compromise vector - no data is exposed or modified beyond the target account's own reset key.

Exploit ScenarioDerived

An unauthenticated attacker sends a single HTTP POST to the WPGraphQL endpoint containing one operation that aliases the sendPasswordResetEmail mutation hundreds of times (and can stack this across up to 10 batched operations), causing the site to fire a password-reset email per alias. This either exhausts the host's or mail provider's sending quota so all transactional email (orders, notifications, admin alerts, resets) stops, or - supplying a known username/email - continuously rotates a specific user's reset key faster than they can use it, denying that person account recovery. No public exploit code is identified in the provided data, but the vendor reports the behavior was reproduced at roughly 1000 emails in 5 seconds.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 30, 2026

Unauthenticated email flooding in WPGraphQL 2.24.0 and earlier lets a remote attacker send roughly a thousand password reset emails from a single HTTP request by aliasing the sendPasswordResetEmail mutation until the site's transactional mail quota is exhausted and legitimate password recovery is blocked. The plugin's batch limit of 10 counts entries in a batched request array, not aliased field invocations inside one operation, so it never applies, and the two vectors multiply: 10 batched operations carrying 200 aliases each yield about 2000 emails from one POST. Because get_password_reset_key() overwrites the previous key on every call, repeated sends also invalidate each reset link before the account holder can use it; no data is exposed or modified, so impact is confined to availability (assessed CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L). There is no CISA KEV listing and no public exploit identified at time of analysis; the vendor patch is 2.24.1, and the priority decision is this_month.

RemediationAI

Vendor-released patch: update WPGraphQL to version 2.24.1, which limits a single GraphQL request to one password reset email and rejects surplus aliased invocations with the error 'Too many password reset requests in one request. Send them separately.' rather than silently dropping them. The fix is the commit at https://github.com/wp-graphql/wp-graphql/commit/760db555e3e60fbd86c1d96f1689bacfc9265592 and the release at https://github.com/wp-graphql/wp-graphql/releases/tag/wp-graphql%2Fv2.24.1, with details in advisory GHSA-f5f8-v768-93c8. Sites that legitimately trigger several resets in one request, such as administrative bulk-reset tooling, can raise the new cap via the graphql_allowed_password_reset_emails_per_request filter (for example returning 5) or should send resets as separate requests. The vendor states that workarounds do not remove the exposure: lowering the batch_limit is ineffective because aliases are not batch entries and never reach that check, and WAF or reverse-proxy rate limiting at the edge caps how many requests arrive but not how much a single request does, so updating to 2.24.1 is the only complete fix. Note that this patch is scoped to the sendPasswordResetEmail mutation only; the same pattern in other unauthenticated email-sending mutations, notably registerUser, remains tracked upstream in issue #4439.

Affected VersionsENISA

WPGraphQL 0 <2.24.1

Affected Packages

euvd wpgraphql fix: 2.24.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

WPGraphQL exposes a GraphQL endpoint for WordPress; the sendPasswordResetEmail mutation wraps WordPress core's password reset flow, which calls get_password_reset_key() to write a fresh reset key to the user record, overwriting whatever key existed before. GraphQL permits the same field to appear multiple times in one operation under different aliases, and each alias resolves independently, so the mutation can be invoked arbitrarily many times within a single document. The plugin's request-layer batch_limit (default 10) only counts batched operations in the request array; aliases never reach that counter. The underlying weakness class is CWE-770 (allocation of resources without limits or throttling), with the advisory additionally citing CWE-799 (improper control of interaction frequency) and CWE-640 (weak password recovery mechanism) because repeated key rotation denies recovery to a targeted account. The fix adds resolver-level accounting: a per-request attempt counter keyed on the AppContext object, a DEFAULT_MAX_EMAILS_PER_REQUEST constant of 1, and a graphql_allowed_password_reset_emails_per_request filter. Critically, attempts are counted when the mutation is invoked rather than when mail is sent, so the error is identical for existing and non-existing accounts and the limit does not become the account-enumeration oracle the mutation is written to avoid. Surplus aliases are rejected with a UserError rather than silently dropped. The CPE cpe:2.3:a:wpgraphql:wpgraphql:*:*:*:*:*:*:*:* covers the affected plugin line. The advisory explicitly scopes this as a narrow fix for one mutation, not general rate limiting, and notes registerUser is a worse instance of the same shape (caller-supplied destination address), tracked in issue #4439.

Know when Wpgraphql gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 6.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 5.3 MEDIUM

Remote, unauthenticated, low-complexity bypass of the batch limit (AV:N/AC:L/PR:N/UI:N); only availability is affected and partially (A:L), with no confidentiality or integrity impact and no scope change.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

WPGraphQL before 2.24.1 contains a missing rate limiting vulnerability that allows unauthenticated attackers to flood password reset emails by aliasing the sendPasswordResetEmail mutation. Attackers can send one HTTP request with many aliases, bypassing batch_limit, to exhaust mail provider quota and repeatedly rotate reset keys, blocking legitimate password recovery.

Threat Intelligence Overview

EPSS Score
0.6%
Top 52% exploitable
Prevalence
Medium
popular WordPress GraphQL plugin, widely used but not universal
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

35
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2019-9879 CRITICAL POC
9.8 Jun 10

The WPGraphQL 0.2.3 plugin for WordPress allows remote attackers to register a new user with admin privileges, whenever

CVE-2019-9880 CRITICAL POC
9.1 Jun 10

An issue was discovered in the WPGraphQL 0.2.3 plugin for WordPress. Rated critical severity (CVSS 9.1), this vulnerabil

CVE-2021-47959 HIGH POC
8.7 May 15

WordPress Plugin WPGraphQL 1.3.5 contains a denial of service vulnerability that allows unauthenticated attackers to exh

CVE-2019-9881 MEDIUM POC
5.3 Jun 10

The createComment mutation in the WPGraphQL 0.2.3 plugin for WordPress allows unauthenticated users to post comments on

CVE-2026-40762 HIGH
7.5 Jun 15

Unauthenticated SQL injection in the WPGraphQL WordPress plugin versions prior to 2.11.1 allows remote attackers to inje

CVE-2026-119702 MEDIUM
6.9 Oct 30

Unauthenticated callers can create comments on WordPress content they are not allowed to see through the createComment G

CVE-2026-119700 MEDIUM
6.9 Oct 30

WPGraphQL 2.24.0 and earlier leak object existence through four GraphQL write mutations - deleteMediaItem, updateMediaIt

CVE-2026-119699 MEDIUM
6.9 Oct 30

Unbounded automatic persisted-query storage in WPGraphQL Smart Cache 2.3.2 and earlier lets unauthenticated remote attac

CVE-2025-68604 MEDIUM
5.4 May 07

Cross-site request forgery (CSRF) in WPGraphQL plugin versions up to 2.5.3 allows unauthenticated attackers to perform u

CVE-2026-109703 MEDIUM
5.3 Oct 13

Unauthenticated retrieval of embedded sensitive data is possible on WordPress sites running the WPGraphQL plugin through

CVE-2023-23684 MEDIUM
4.4 Nov 13

Server-Side Request Forgery (SSRF) vulnerability in WPGraphQL.14.5. Rated medium severity (CVSS 4.4), this vulnerability

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy