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

CVE-2026-86784

CVE-2026-86784 Vulnerability in Themeisle
📅 PUBLISHED: 2026-09-16 00:00 UTC 🔄 UPDATED: 2026-10-02 19:21 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.40%
👁️
0.40% probability
9.9× 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.
Country: Romania License: Freemium
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS VECTOR BREAKDOWN 6.8
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: H Privileges Required High
UI: R User Interaction Required
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: H Availability High
6.8
THREAT LEVEL
INTEL SOURCES NVD EPSS HOW WE SCORE →
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-86784 is a stored cross-site scripting (XSS) vulnerability in the WordPress plugin "Visualizer" (by Themeisle) affecting versions before 4.0.8. The flaw allows an authenticated user with the Contributor role or higher to inject arbitrary JavaScript into a chart's JSON data source configuration, which is stored and later rendered without sanitisation or escaping in the chart editor. When a higher-privileged user (e.g., an Administrator) views or edits the affected chart, the script executes in their browser session, potentially enabling session hijacking, privilege escalation, or site-wide compromise.

⚡ 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 resides in the plugin's handling of chart data source configuration — specifically the JSON payload that defines a chart's data source. According to the NVD description, the plugin "does not sanitise and escape a chart's JSON data source configuration before outputting it back in the chart editor." This means user-supplied content within the JSON structure is persisted to the database (or stored as a chart configuration) and then reflected back into the HTML/JavaScript context of the chart editor without output encoding.

The attack surface is the chart editor interface, which is accessible to users with the Contributor role and above. Contributors can create and manage their own posts and, in this plugin's context, likely create charts associated with their content. By embedding JavaScript within a JSON field that the editor later renders unfiltered, an attacker-injected payload is executed in the DOM of any privileged user who opens the chart editor.

The root cause is improper neutralisation of user-controlled input within a JavaScript execution context (CWE-79). Because the data source configuration is output into the editor's HTML without contextual escaping, characters such as <, >, ", ', and script tags are not encoded. This allows script injection even if the surrounding JSON is technically valid. The lack of sanitisation applies to the entire JSON configuration blob, so a malicious contributor can place payloads in any string value that is later interpolated into the editor UI.

No function names, class names, file paths, or parameter names are available from the NVD description; therefore, the exact code location cannot be confirmed. The vulnerability class is stored XSS via unsanitised persistent user input echoed back to a privileged administrative interface. The plugin's JSON data source feature is the specific vector, per the CNA/NVD text.

Exploitation Scenarios

Because no public proof-of-concept exists, the following chain is inferred strictly from the vulnerability class and the NVD description. No specific function names, endpoints, or parameters are invented.

  1. Reconnaissance and target identification: The attacker identifies a WordPress site running the Visualizer plugin version prior to 4.0.8. This can be done by inspecting plugin assets on the site (e.g., /wp-content/plugins/visualizer/ present, with a version detectable via readme or asset query strings) or by searching Shodan using the dorks provided. The attacker also needs an account with at least the Contributor role on the target site (self-registration, compromised low-privilege account, or a malicious insider).

  2. Triggering the specific flaw class: As a Contributor, the attacker creates or edits a chart using the plugin's chart editor. In the chart's "JSON data source" configuration field, the attacker supplies a crafted JSON object containing a JavaScript payload embedded in one of the string values. Because the plugin fails to sanitise and escape this configuration on output, the payload is stored in the database. The exact JSON structure and field names are not disclosed in the NVD description and are not fabricated here.

  3. Payload execution method: The stored payload remains dormant until a higher-privileged user — such as an Administrator or Editor — opens the chart editor for the affected chart. At that point, the unsanitised JSON configuration is rendered back into the HTML/JavaScript context of the editor page, and the embedded script executes in the privileged user's browser session.

  4. Post-exploitation impact: Executed in an Administrator's session, the script can perform any action the Administrator can, including creating new administrative users, installing malicious plugins, exfiltrating session cookies (if not HttpOnly-protected), modifying site content, or pivoting to full site takeover. Since the payload is stored, this is a persistent compromise until the malicious chart is removed.

Impact Assessment

CVE-2026-86784 is a stored XSS in a privileged administrative interface. It requires the attacker to hold a Contributor-level (or higher) account, lowering the barrier compared to pre-authentication flaws, but still limiting exploitation to sites that allow such accounts or where one has been obtained. The victim must review the affected chart, which introduces user-interaction requirements.

The likely CVSS v3.1 assessment (in the absence of an official vector) is AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N — network-exploitable, low complexity, low privileges required, user interaction required, scope changed because the vulnerable component (chart editor) affects resources in the broader WordPress administrative domain. The confidentiality and integrity impacts are low to moderate, while availability impact is none. EPSS is 0.00199 (9.9th percentile), indicating very low predicted exploitation activity at present; there is no CISA KEV listing and no known public PoC or exploit code.

Business impact: A successful exploit can result in full WordPress site compromise, data theft, defacement, malware distribution, or use of the site as a watering hole. The blast radius includes all users of the affected site and potentially its customers. Sites that grant Contributor accounts to external parties (guest authors, community contributors) face elevated risk. Multi-site WordPress installations with many administrators are high-value targets.

Detection Guidance

Sigma Rule

title: Visualizer Plugin Stored XSS via JSON Data Source Configuration
id: 8b8f8d3e-4c1a-4a5b-9c2d-7e6f5a4b3c2d
status: experimental
description: Detects attempts to store JavaScript in Visualizer chart JSON data source configuration, leading to stored XSS (CVE-2026-86784).
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-86784
author: valtersit.com
date: 2026/01/01
logsource:
  category: web
  product: wordpress
detection:
  selection_method:
    cs-method:
      - 'POST'
      - 'GET'
  selection_uri:
    cs-uri-query|contains:
      - 'visualizer'
      - 'chart'
      - 'data_source'
  selection_payload:
    cs-body|contains:
      - '<script'
      - 'javascript:'
      - 'onerror='
      - 'onload='
  condition: selection_method and selection_uri and selection_payload
falsepositives:
  - Legitimate chart data containing JavaScript-like strings
level: high

YARA Rule

rule CVE_2026_86784_Visualizer_Stored_XSS
{
    meta:
        description = "Detects malicious JavaScript payloads embedded in Visualizer chart JSON data source configurations (CVE-2026-86784)"
        author = "valtersit.com"
        date = "2026-01-01"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-86784"
        severity = "high"
    strings:
        $json_ds = "data_source" ascii nocase
        $visualizer = "visualizer" ascii nocase
        $js1 = "<script" ascii nocase
        $js2 = "javascript:" ascii nocase
        $js3 = "onerror" ascii nocase
        $js4 = "onload" ascii nocase
        $js5 = "document.cookie" ascii nocase
        $js6 = "fetch(" ascii nocase
        $js7 = "XMLHttpRequest" ascii nocase
    condition:
        ($visualizer or $json_ds) and any of ($js*)
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-86784 Visualizer WordPress Plugin Stored XSS Attempt"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"visualizer"; nocase; http.uri; content:"chart"; nocase; http.request_body; content:"<script"; nocase; http.request_body; content:"data_source"; nocase; reference:cve,2026-86784; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-86784; classtype:web-application-attack; sid:202686784; rev:1;)

Elastic Detection

sequence by source.ip, user.name with maxspan=1m
  [http where http.request.method == "POST" and http.request.uri : "*visualizer*" and http.request.body : ("*<script*" or "*javascript:*" or "*onerror=*")]
  [http where http.request.method in ("GET", "POST") and http.request.uri : "*visualizer*chart*"]

Splunk SPL Query

index=web sourcetype=access_combined
| search (uri="*visualizer*" OR uri="*chart*")
| eval payload=urldecode(form_data)
| search payload="*<script*" OR payload="*javascript:*" OR payload="*onerror=*" OR payload="*document.cookie*"
| stats count min(_time) as first_seen max(_time) as last_seen values(payload) as payloads by src_ip, user, uri
| where count > 0
| convert ctime(first_seen) ctime(last_seen)

Wazuh OSSEC Rule

<group name="web,wordpress,visualizer,">
  <rule id="202686784" level="12">
    <decoded_as>web-accesslog</decoded_as>
    <match>visualizer</match>
    <regex type="pcre2">(?i)(%3Cscript|<script|javascript:|onerror=|onload=)</regex>
    <description>CVE-2026-86784: Possible Visualizer stored XSS payload in request to chart editor</description>
    <mitre>
      <id>T1059.007</id>
    </mitre>
    <group>cve_2026_86784,web_attack,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).

  1. Immediate mitigations:
  • Restrict the Contributor role and above to trusted users only; review and remove unnecessary low-privilege accounts that can create charts.
  • Disable the Visualizer plugin if it is not business-critical until a trusted patch can be verified.
  • Apply a WordPress security plugin or Web Application Firewall (WAF) rule set that blocks JavaScript payloads in chart-related JSON fields.
  • Enforce the HttpOnly and SameSite flags on session cookies to reduce the impact of script execution.
  • Enforce a Content Security Policy (CSP) that disallows inline script execution and restricts script sources, which can neutralise many stored XSS payloads.
  1. Patch/upgrade steps:
  • The NVD description states the issue is fixed in Visualizer version 4.0.8. Upgrade to 4.0.8 or later from the official WordPress plugin repository as soon as it is available and verified.
  • Because no patch reference, changelog entry, or vendor advisory is tracked (patch confidence 0/4), validate the fix independently: confirm the installed version, test that chart JSON configuration fields are output-encoded, and monitor the vendor's release notes.
  • After upgrading, remove any charts created by untrusted users that may contain stored payloads, and scan the site for injected JavaScript.
  1. Long-term hardening:
  • Adopt a least-privilege model for WordPress roles; avoid granting Contributor or Author unless necessary.
  • Implement output encoding at the point of rendering and contextual escaping for all user-controlled data, especially within JSON/JavaScript contexts.
  • Maintain an inventory of plugins and subscribe to vulnerability feeds (NVD, WPScan, vendor advisories) to track issues like CVE-2026-86784.
  • Conduct regular security reviews and penetration tests of administrative interfaces that display user-supplied content.

References

No threat actor campaigns or exploit-in-the-wild evidence are associated with CVE-2026-86784 at this time. CISA KEV: not listed. Public PoC: none. Nuclei template: none.

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