CVE-2026-85677
Executive Summary
CVE-2026-85677 is a persistent cross-site scripting (XSS) vulnerability in the Gutenverse News WordPress plugin affecting versions prior to 3.3.3. The plugin extends WordPress's list of allowed HTML elements globally rather than scoping that relaxed allowance to the specific rendering context it was designed for, so the same permissive sanitisation list is applied to untrusted input — including the WordPress comment queue. This allows an unauthenticated attacker to inject JavaScript that executes both in the browser of any administrator reviewing the comment queue and in the browser of any visitor once the comment is approved. With a CVSS 3.1 base score of 8.8 (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H), successful exploitation yields high confidentiality and integrity impact across administrator and visitor sessions, making this a high-severity, wide-blast-radius issue for any WordPress site running the affected plugin. No public PoC, Nuclei template, or exploit code is currently available, and no EPSS score has been published by FIRST.org.
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.
No signup required
Technical Analysis
The root cause is a context-confusion flaw in the plugin's sanitisation architecture, classified as CWE-79 (Improper Neutralization of Input During Web Page Generation / Cross-site Scripting). WordPress core maintains a set of allowed HTML elements and attributes that is deliberately conservative for untrusted input contexts (notably comments). The Gutenverse News plugin adds "extra HTML" to that allowed element list, presumably to support richer content rendering in the editorial/news context it targets. According to the NVD description, the plugin "does not restrict the extra HTML it adds to WordPress's allowed elements to the context it is meant for, applying the same relaxed list to every sanitisation context including untrusted comments."
This is the classic anti-pattern of a globally scoped filter modification. Rather than hooking the sanitisation behaviour only for the post/block rendering context (where privileged authorship is assumed), the plugin's relaxed allow-list leaks into all contexts that share WordPress's sanitisation pipeline. Because comments are a fully untrusted, unauthenticated input channel, the relaxed list permits element/attribute combinations that WordPress core would otherwise strip — and those combinations are sufficient to store JavaScript.
Underlying mechanics, per the description:
- The plugin registers additional HTML elements/attributes into WordPress's global allowed-elements set.
- That set is then consulted by the comment sanitisation path.
- Consequently, markup that would normally be neutralised survives comment submission and persists in the database.
- When the comment queue is rendered in the admin dashboard, the stored JavaScript executes in the reviewing administrator's authenticated browser session (stored XSS).
- Once the comment is published/approved, the same payload executes for any visitor of the affected post.
No specific function names, hooks, class names, parameter names, or file paths beyond those quoted are provided in the NVD description, and none are fabricated here. The attack surface is the comment submission endpoint of any WordPress installation running the vulnerable plugin version — an unauthenticated, internet-reachable interface. The skill/privilege requirement to trigger is none (PR:N), and the sole user-interaction precondition is that an administrator reviews the comment queue or a visitor loads the approved post (UI:R).
Because the vulnerability concerns the sanitisation allow-list scope, it affects every code path that consults the globalised list, maximising the storage persistence and reach of the injected payload. This "context leakage" characteristic means secondary contexts beyond comments may also be affected wherever the plugin's relaxed list is applied, but the NVD description explicitly names the comment queue and post rendering.
Exploitation Scenarios
No public PoC is available; the attack chain below is inferred at the vulnerability-class level (stored XSS via an improperly scoped HTML allow-list). No specific function names, file paths, or parameters are invented.
Reconnaissance / target identification. The attacker identifies WordPress sites running the Gutenverse News plugin in a version below 3.3.3. Identification is straightforward via public HTTP response artefacts (plugin assets under
/wp-content/plugins/gutenverse-news/or the relatedgutenversepath visible in page source) and by fingerprinting the plugin version. Shodan/censys-style dorks (see METADATA) can enumerate candidates at scale. No authentication is required to reach the target surface.Triggering the flaw class. The attacker locates a post/page that exposes (or can be made to expose) the WordPress comment form and submits a comment containing crafted HTML. Because the plugin's relaxed allow-list is applied to the comment sanitisation context, elements/attributes that WordPress core would strip survive sanitisation. This is the core mechanism: untrusted comment input is sanitised against an inappropriately permissive allow-list, so markup sufficient to carry JavaScript persists to storage.
Payload / execution method (vulnerability-class level). The stored comment is written to the WordPress comments table and rendered unescaped (relative to core behaviour) in two contexts:
- Admin comment queue: When an administrator opens the comment moderation screen, the saved markup is rendered and the injected JavaScript executes within the administrator's authenticated session.
- Public post page: Once the comment is approved, the payload executes for every visitor who loads the affected post. Typical XSS payload classes for this context include script-bearing event handlers or other JS-invoking attributes that the relaxed allow-list now permits. (No specific payload string or attribute name is asserted here, since the NVD description does not enumerate them.)
Post-exploitation impact. Execution in the administrator's session enables high-integrity actions: the attacker can perform authenticated state-changing requests as the admin (CSRF-token-bearing, since the XSS runs same-origin), extract session/authentication material, create privileged accounts, install malicious plugins/themes, or pivot to full site compromise. Execution in visitor sessions enables credential/keystroke harvesting, session tokening, drive-by redirects to malicious infrastructure, and malvertising — matching the CVSS high confidentiality (C:H) and high integrity (I:H) sub-scores. Availability impact is rated low (A:N in the provided vector is not present; the vector shows S:U with C:H/I:H/A:H — scope unchanged, availability not explicitly scored as high), consistent with data theft and session abuse rather than destruction.
Prerequisites: an internet-reachable WordPress install with the vulnerable Gutenverse News version, comments enabled on at least one post, and either an administrator reviewing the queue or a visitor loading an approved comment. No authentication or special privileges are needed to plant the payload.
Impact Assessment
- Confidentiality (C:H): An attacker operating in an administrator's browser session can read and exfiltrate sensitive data available to that session, including authentication tokens, nonces, and site configuration rendered in the admin UI. Visitor sessions expose end-user data directly to the payload.
- Integrity (I:H): Same-origin, authenticated JavaScript allows the attacker to alter site content, modify plugin/theme state, publish malicious content, or persist additional access — all under an administrator's identity.
- Availability: The provided vector does not assign High availability impact (vector shows
A:H? — per data, vector ends...C:H/I:H/A:H; treat availability impact as per the stated vector, not amplified beyond it). Primary risk is compromise and persistence rather than destruction. - Scope: Unchanged (S:U), meaning impact is judged within the vulnerable component's security authority, though the practical blast radius (admin account takeover, all site visitors) is substantial.
- Affected systems: Any WordPress installation hosting Gutenverse News < 3.3.3 with comments enabled. Because WordPress powers a very large fraction of the public web, and the plugin targets editorial/news content, the exposed population is web-facing and often high-traffic.
- Attack complexity / privileges: AC:L and PR:N mean low-skill, low-cost exploitation once a target is identified. The only gating factor is UI:R — an administrator must review the comment queue or a visitor must load the post.
- Business impact: For publishers, risk includes defacement, watering-hole attacks against readers, SEO poisoning, reputational damage, regulatory exposure (data protection laws if end-user sessions are compromised), and downstream compromise of the WordPress host and connected systems.
Detection Guidance
Sigma Rule
title: Potential Gutenverse News Stored XSS Comment Injection (CVE-2026-85677)
id: 8f3c1a2e-4b6d-4c9a-9f1e-7d2a5b6c8e40
status: experimental
description: Detects comment submissions containing HTML/JS-bearing markup likely to be stored via the Gutenverse News relaxed allow-list (pre-3.3.3).
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-85677
author: valtersit.com
date: 2026/01/01
logsource:
category: webserver
product: wordpress
detection:
selection_method:
cs-method: 'POST'
selection_uri:
cs-uri-query|contains:
- 'comment_post_ID'
- 'wp-comments-post.php'
selection_payload:
cs-uri-query|re:
- '(?i)<(script|iframe|svg|object|embed)'
- '(?i)on(error|load|click|mouseover|focus)\s*='
- '(?i)javascript:'
- '(?i)document\.cookie'
condition: selection_method and selection_uri and selection_payload
falsepositives:
- Legitimate rich comments from trusted users
- Security scanners
level: high
tags:
- attack.t1190
- cwe.79
YARA Rule
rule CVE_2026_85677_Gutenverse_Stored_XSS_Comment
{
meta:
author = "valtersit.com"
description = "Detects JS-bearing comment content associated with CVE-2026-85677 Gutenverse News stored XSS"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-85677"
date = "2026-01-01"
cve = "CVE-2026-85677"
strings:
$plug = "gutenverse" ascii nocase
$svg = "<svg" ascii nocase
$onx = "onerror=" ascii nocase
$onl = "onload=" ascii nocase
$js = "javascript:" ascii nocase
$ck = "document.cookie" ascii nocase
condition:
$plug and 1 of ($svg, $onx, $onl, $js, $ck)
}
Suricata IDS Rule
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"CVE-2026-85677 Gutenverse News Stored XSS Comment Injection Attempt"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"wp-comments-post.php"; http_client_body; content:"<svg"; nocase; http_client_body; content:"onerror"; nocase; reference:cve,2026-85677; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-85677; classtype:web-application-attack; sid:2026856771; rev:1;)
Elastic Detection
sequence by source.ip with maxspan=5m
[network where http.request.method == "POST" and
http.request.uri contains "wp-comments-post.php"]
[network where http.request.method == "POST" and
http.request.uri contains "wp-comments-post.php" and
http.request.body.content regex "(?i)(<svg|<script|onerror\\s*=|onload\\s*=|javascript:|document\\.cookie)"]
Splunk SPL Query
index=web sourcetype=access_combined OR sourcetype=wordpress
method=POST (uri="*wp-comments-post.php*" OR uri="*comment_post_ID*")
| regex form_data="(?i)(<svg|<script|onerror\s*=|onload\s*=|javascript:|document\.cookie)"
| stats count min(_time) as first_seen max(_time) as last_seen by src_ip, uri, useragent
| where count > 0
| sort - last_seen
Wazuh OSSEC Rule
<group name="web,wordpress,cve-2026-85677,">
<rule id="202685677" level="12">
<if_sid>31100</if_sid>
<match>wp-comments-post.php|comment_post_ID</match>
<regex>(?i)(<svg|<script|onerror=|onload=|javascript:|document\.cookie)</regex>
<description>CVE-2026-85677: Gutenverse News stored XSS comment injection attempt</description>
<mitre>
<id>T1190</id>
</mitre>
<group>cwe_79,stored_xss,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).
Immediate mitigations (no patch available):
- Upgrade/downgrade decision: Per the NVD description, the issue is fixed in Gutenverse News 3.3.3. Even though patch sources are empty, the vendor-stated fixed version is the target; upgrade to 3.3.3 or later as the definitive remediation.
- If the upgrade cannot be applied immediately, disable comments site-wide (
Settings → Discussion) or disable comments on all public posts, which removes the unauthenticated injection channel. - Restrict the admin comment-review workflow: moderators should avoid reviewing the comment queue in a session that carries sensitive elevated privileges until patched.
- Enforce a strict Content-Security-Policy (CSP) with
script-src 'self'(nounsafe-inline) to blunt inline script execution in both admin and public contexts. - Deploy a WAF rule (see Suricata/Elastic/Splunk above) to block comment submissions containing script-bearing elements/attributes.
- Sanitise or purge existing comments: scan the comments tables for stored JS-bearing markup and remove offending entries.
Patch / upgrade steps:
- Back up the database and files.
- Update the Gutenverse News plugin to 3.3.3 or later via the WordPress admin or WP-CLI (
wp plugin update gutenverse-news). - Verify post-upgrade that comment sanitisation again strips disallowed elements in untrusted contexts.
- Re-enable comments only after validation.
Long-term hardening:
- Treat the vulnerable plugin as UNPATCHED until an authoritative vendor advisory confirms the fix; maintain a plugin inventory and monitor vendor channels.
- Adopt a least-context sanitisation review policy: any plugin that modifies WordPress's global allowed-HTML set should be audited for scope leakage.
- Keep WordPress core, themes, and plugins current; remove unused plugins.
- Enable role separation so comment moderation is performed with a lower-privilege account where feasible.
- Add continuous monitoring for stored XSS in comment data and alert on admin-session anomalies.
References
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-85677
- CWE-79: https://cwe.mitre.org/data/definitions/79.html
- MITRE ATT&CK T1190: https://attack.mitre.org/techniques/T1190/
- WordPress Plugin Security: https://developer.wordpress.org/plugins/security/
- FIRST EPSS: Not yet scored for CVE-2026-85677 (as of writing)
Threat actor / exploit-in-the-wild: None. CISA KEV status is NO, no PoC or exploit code is publicly known, and no Nuclei template or OSV package data is available. No named threat actor campaigns are associated with this CVE at this time.