Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Stored XSS requires a victim to visit the page (UI:R); contributor authentication required (PR:L); scope changes to victim browser (S:C).
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
Lifecycle Timeline
2DescriptionCVE.org
The weDocs: AI Powered Knowledge Base, Docs, Documentation, Wiki & AI Chatbot plugin for WordPress is vulnerable to Stored Cross-Site Scripting via 'sectionTitleTag' and 'articleTitleTag' Block Attributes in all versions up to, and including, 2.3.0 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
AnalysisAI
Stored Cross-Site Scripting in the weDocs WordPress plugin (versions through 2.3.0) allows authenticated contributors to persist malicious JavaScript in documentation pages by injecting arbitrary values into the 'sectionTitleTag' and 'articleTitleTag' Gutenberg block attributes, which are rendered without sanitization or output escaping in Sidebar block render.php. Any WordPress user who subsequently visits an injected documentation page will execute the attacker's script in their browser context, enabling session hijacking, credential harvesting, or defacement. No public exploit code or CISA KEV listing has been identified, but the low privilege bar (contributor) makes this accessible to a broad class of authenticated WordPress users.
Technical ContextAI
weDocs (by weDevs, CPE: cpe:2.3:a:wedevs:wedocs) is a WordPress Gutenberg block-based knowledge base and documentation plugin. The vulnerability resides in the Sidebar block renderer at assets/build/blocks/Sidebar/render.php (confirmed at lines 154, 540, and 634 of version 2.3.0 via plugin Trac). Block attributes 'sectionTitleTag' and 'articleTitleTag' allow contributors to control HTML tag names used for section and article headings in rendered output. Due to CWE-79 (Improper Neutralization of Input During Web Page Generation), these attributes are echoed directly into the HTML output without server-side sanitization or WordPress's esc_html/esc_attr output escaping, allowing tag values to carry injected script payloads that persist in post content and execute on page load.
RemediationAI
An upstream fix is available via WordPress plugin repository changeset 3589430 (https://plugins.trac.wordpress.org/changeset?old=3589430%40wedocs&new=3589430%40wedocs), which addresses the missing sanitization and output escaping in render.php. Site administrators should update weDocs to the first release beyond 2.3.0 that incorporates this changeset - the exact patched version number was not independently confirmed from the available data, so administrators should check the WordPress plugin dashboard or the weDevs plugin page for the latest available release and update immediately. As a compensating control pending update, restrict the WordPress contributor role to fully trusted users only, or temporarily disable the weDocs Sidebar block via a block-disabling plugin. Disabling the block will prevent new injection but will not sanitize payloads already stored in existing page content.
Stored Cross-Site Scripting in the weDocs WordPress plugin (all versions through 2.3.0) allows authenticated contributor
Missing authorization in weDevs weDocs WordPress plugin through version 2.1.18 allows unauthenticated remote attackers t
Missing authorization on the BetterDocs-to-weDocs migration AJAX endpoint in the weDocs WordPress plugin (versions up to
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-41470
GHSA-pr6j-r5mf-cj49