CVE-2025-7725: WP Contest Gallery: Stored XSS exposes OpenAI API creds
HIGHAny WordPress site running Contest Gallery with OpenAI integration is exposed to unauthenticated stored XSS that can harvest admin sessions and OpenAI API keys. Update to version 26.1.1+ immediately or disable the plugin. Rotate your OpenAI API key as a precaution if this plugin is deployed in your environment.
What is the risk?
High risk. The vulnerability requires no authentication, no user interaction from the attacker side, and carries a scope change — impact extends beyond the plugin itself. The amplified risk in AI environments is post-exploitation: a stolen OpenAI API key means unauthorized API usage costs, potential exposure of data processed through the AI features, and possible pivoting to broader WordPress admin compromise. With CVSS 7.2, UI:N (self-executing on page load), and WordPress's massive deployment footprint, the exposure surface is significant despite C:L/I:L ratings.
How severe is it?
What is the attack surface?
What should I do?
6 steps-
Patch immediately: upgrade Contest Gallery to version > 26.1.0 via WordPress plugin dashboard.
-
If patching is not immediately feasible, disable the plugin and display a maintenance notice.
-
Rotate your OpenAI API key in the OpenAI dashboard and update the plugin configuration post-patching.
-
Review WordPress and web server logs for suspicious comment submissions containing script tags, event handlers, or base64-encoded payloads.
-
Deploy a WAF rule (Wordfence, Cloudflare) to block XSS patterns in comment fields as a temporary compensating control.
-
Audit which WordPress users have admin access to plugin configuration to minimize blast radius if exploitation occurred.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2025-7725?
Any WordPress site running Contest Gallery with OpenAI integration is exposed to unauthenticated stored XSS that can harvest admin sessions and OpenAI API keys. Update to version 26.1.1+ immediately or disable the plugin. Rotate your OpenAI API key as a precaution if this plugin is deployed in your environment.
Is CVE-2025-7725 actively exploited?
No confirmed active exploitation of CVE-2025-7725 has been reported, but organizations should still patch proactively.
How to fix CVE-2025-7725?
1. Patch immediately: upgrade Contest Gallery to version > 26.1.0 via WordPress plugin dashboard. 2. If patching is not immediately feasible, disable the plugin and display a maintenance notice. 3. Rotate your OpenAI API key in the OpenAI dashboard and update the plugin configuration post-patching. 4. Review WordPress and web server logs for suspicious comment submissions containing script tags, event handlers, or base64-encoded payloads. 5. Deploy a WAF rule (Wordfence, Cloudflare) to block XSS patterns in comment fields as a temporary compensating control. 6. Audit which WordPress users have admin access to plugin configuration to minimize blast radius if exploitation occurred.
What systems are affected by CVE-2025-7725?
This vulnerability affects the following AI/ML architecture patterns: WordPress AI plugins, LLM API integrations, Web applications with embedded AI features, OpenAI API consumers.
What is the CVSS score for CVE-2025-7725?
CVE-2025-7725 has a CVSS v3.1 base score of 7.2 (HIGH). The EPSS exploitation probability is 0.22%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0048.003 User Harm AML.T0049 Exploit Public-Facing Application AML.T0055 Unsecured Credentials AML.T0093 Prompt Infiltration via Public-Facing Application Compliance Controls Affected
What are the technical details?
Original Advisory
The Photos, Files, YouTube, Twitter, Instagram, TikTok, Ecommerce Contest Gallery – Upload, Vote, Sell via PayPal or Stripe, Social Share Buttons, OpenAI plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the comment feature in all versions up to, and including, 26.1.0 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
Exploitation Scenario
An unauthenticated attacker submits a crafted comment to a Contest Gallery-enabled page containing a JavaScript payload — for example, a cookie-stealing script or a routine that reads the OpenAI API key from the plugin's JavaScript configuration object and exfiltrates it via a beacon request to an attacker-controlled server. The payload is stored without sanitization. When a WordPress administrator reviews submissions or simply visits the page, the script executes silently in their browser session, harvesting the session cookie and any API credentials in scope. The attacker then uses the stolen OpenAI API key to run unauthorized queries at the victim's expense or leverages the admin session to backdoor the WordPress installation.
Weaknesses (CWE)
CWE-79 — Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'): The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
- [Architecture and Design] Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid [REF-1482]. Examples of libraries and frameworks that make it easier to generate properly encoded output include Microsoft's Anti-XSS library, the OWASP ESAPI Encoding module, and Apache Wicket.
- [Implementation, Architecture and Design] Understand the context in which your data will be used and the encoding that will be expected. This is especially important when transmitting data between different components, or when generating outputs that can contain multiple encodings at the same time, such as web pages or multi-part mail messages. Study all expected communication protocols and data representations to determine the required encoding strategies. For any data that will be output to another web page, especially any data that was received from external inputs, use the appropriate encoding on all non-alphanumeric characters. Parts of the same output document may require different encodings, which will vary depending on whether the output is in the: etc. Note that HTML Entity Encoding is only appropriate for the HTML body. Consult the XSS Prevention Cheat Sheet [REF-724] for more details on the types of encoding and escaping that are needed. HTML body Element attributes (such as src="XYZ") URIs JavaScript sections Casca
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N References
Timeline
Related Vulnerabilities
CVE-2023-3765 10.0 MLflow: path traversal allows arbitrary file read
Same attack type: Data Extraction CVE-2025-5120 10.0 smolagents: sandbox escape enables unauthenticated RCE
Same attack type: Code Execution CVE-2025-2828 10.0 LangChain RequestsToolkit: SSRF exposes cloud metadata
Same attack type: Data Extraction CVE-2025-53767 10.0 Azure OpenAI: SSRF EoP, no auth required (CVSS 10)
Same attack type: Data Extraction CVE-2025-59528 10.0 Flowise: Unauthenticated RCE via MCP config injection
Same attack type: Code Execution