Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged user
-
DeliveryEdit own profile/document
-
ExploitInject HTML-macro-closing script macro payload
-
ExecutionRendering executes Groovy/Python with programming rights
-
ImpactAchieve RCE and full wiki read/write
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Eval input sanitization
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated account with edit rights over at least one document - realistically any user who can edit their own user profile, which includes self-registered users on many deployments. The attacker must be able to add an object (e.g., XWiki.UIExtensionClass) or place content whose rendered output is embedded inside an HTML macro; exploitable sinks include the user profile directly (present since XWiki syntax v2 / exploitable from XWiki 3.3 M1) and extension points such as org.xwiki.platform.search.ui.docdoesnotexist (added in XWiki 8.3 M1). No special non-default server configuration is needed and no victim user interaction is required beyond the content being rendered. Limiting factors: attacker needs a valid low-privilege account (PR:L, so not fully unauthenticated), and instances that disable open registration and restrict edit rights raise the bar. Affected versions are xwiki-rendering-xml < 14.10.2; patched in 14.10.2 and 15.0 RC1. |
| Impact | This is a genuine high-priority vulnerability, not a CVSS-inflated non-issue. The vendor CVSS 3.1 score of 9.9 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) is well-supported: any authenticated low-privilege user (PR:L) who can edit their own profile can achieve remote code execution with programming rights over the entire wiki (C:H/I:H/A:H, scope-changed S:C). The scope change and low privilege bar are the key severity drivers - self-registration is common on many wikis, effectively lowering the practical barrier. However, several signals are missing: no EPSS score is provided, the CVE is NOT in CISA KEV (no confirmed active exploitation), and no weaponized POC is published, though the advisory contains a fully detailed, reproducible proof-of-concept (exact object type, payload, extension point, and verification URL). SSVC data is absent. The realistic conclusion: exploitation status is 'no public exploit identified at time of analysis,' but the advisory's step-by-step reproduction is effectively an exploit recipe, so the gap between disclosure and working exploit is small. There is no conflict between the CVSS network vector and the description - both align on remote, authenticated (low-priv) exploitation. |
| Exploit ScenarioDerived | A low-privileged registered user edits their own user profile (or any document they can edit) and adds an XWiki.UIExtensionClass object whose content closes the surrounding HTML macro and injects a Groovy or Python script macro. When the rendered output is viewed, the injected macro executes with programming rights, giving the attacker arbitrary code execution and full read/write access to all wiki content. No published weaponized exploit exists, but the advisory provides a complete, reproducible proof-of-concept payload and verification URL. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 18, 2026
Authenticated code injection in XWiki Rendering (the xwiki-rendering-xml module, versions before 14.10.2) lets any user who can edit their own user profile - or any other document - close the surrounding HTML macro and inject Groovy or Python script macros that execute with programming rights, granting remote code execution and unrestricted read/write access to all wiki contents. Exploitation requires only a low-privilege, authenticated account (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H, severity 9.9) and needs no victim interaction beyond the affected page being rendered; the attacker reaches the flaw through rendered output that is embedded in an HTML macro without escaping, with exploitable sinks including the user profile (since XWiki syntax 2.0, demonstrably exploitable from XWiki 3.3 Milestone 1) and the extension point org.xwiki.platform.search.ui.docdoesnotexist (added in XWiki 8.3 Milestone 1). No confirmed active exploitation (not in CISA KEV) and no public exploit code identified at time of analysis, though the vendor advisory documents a detailed reproduction payload and the scope change (S:C) combined with high confidentiality, integrity and availability impact makes this a genuine high-priority issue; vendors have released the fix in XWiki 14.10.2 and 15.0 RC1.
RemediationAI
Upgrade the rendering module and the XWiki Platform distribution to the patched releases: XWiki 14.10.2 or 15.0 RC1 (artifact org.xwiki.rendering:xwiki-rendering-xml 14.10.2), which prevent rendering output from closing the surrounding HTML macro via the escaping logic added in commit 92bc8095ed3acce15ab200c8525e1623b4898be5; full details are in the advisory at https://github.com/xwiki/xwiki-rendering/security/advisories/GHSA-26vp-8gxg-v4pg and the release notes at https://github.com/xwiki/xwiki-rendering/releases/tag/xwiki-rendering-14.10.2 and https://github.com/xwiki/xwiki-rendering/releases/tag/xwiki-rendering-15.0-rc-1. Note that vendor-released patch status is confirmed, but no supported workaround exists: the advisory states that escaping could in principle be added at every place where rendering output is used in wiki documents, yet there is no inventory of those locations, so manual hardening is incomplete by design. If immediate upgrading is impossible, compensate by tightening the prerequisite that makes this exploitable - restrict document and profile edit rights to trusted users, disable open self-registration so no low-privilege account can be created, remove programming rights from non-administrative authors, and disable or restrict Groovy and Python script macros (the execution surface the injection targets) - accepting the trade-off that these measures break legitimate wiki scripting, custom extensions and self-service profile editing, and that any residual user able to edit a document that flows into an HTML macro (including extension points such as org.xwiki.platform.search.ui.docdoesnotexist) can still trigger the flaw. Because exploitation yields full read/write access to wiki contents, treat any pre-patch instance with untrusted editors as potentially compromised and review recently created objects (for example XWiki.UIExtensionClass instances) and rendered output for injected {{/html}} or script-macro sequences.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a CWE-95 (Improper Neutralization of Directives in Dynamically Evaluated Code / Eval Injection) defect in XWiki's rendering pipeline. XWiki syntax 2.0 allows raw rendering output to be placed as the content of an HTML macro; the XHTML printer class org.xwiki.rendering.renderer.printer.XHTMLWikiPrinter passed that raw text through to printRaw() without neutralizing the XWiki macro closing token. Because the surrounding document is re-parsed as wiki syntax, an attacker who can store content (for example an object of type XWiki.UIExtensionClass) can emit the literal sequence {{/html}} to terminate the enclosing HTML macro early and then open new macros. The commit 92bc8095ed3acce15ab200c8525e1623b4898be5 fixes this by escaping the full {{/html}} sequence as {{/html}} inside printRaw(), and additionally by detecting and escaping any trailing prefix of {{/html}} (the characters {, /, h, t, m, l, }, }) so that a string split across multiple render calls cannot be recombined into the full closing token - a defensive check the patch author notes may be applied even where the escaping is not contextually ideal, such as JSON output and HTML comments. The impact is compounded by XWiki's script macro model: {{groovy}} and {{python}} macros execute with the rights of the document's author, so injected macros run with programming rights regardless of the attacker's own privileges. Detection is difficult because the injected content looks like ordinary wiki markup, and the extension-point sinks (for example org.xwiki.platform.html.head and org.xwiki.platform.search.ui.docdoesnotexist) are reached through user-controlled extension data rather than obvious page bodies.
Know when Python gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Remote, low-complexity attack needing only a low-privilege account that can edit a profile (PR:L); injected macros run with programming rights, escaping the rendering sandbox (S:C) for full C/I/A compromise.
Primary rating from Vendor (https://github.com/xwiki/xwiki-rendering).
CVSS VectorVendor: https://github.com/xwiki/xwiki-rendering
DescriptionCVE.org
Impact
Any user who can edit their own user profile or any other document can execute arbitrary script macros including Groovy and Python macros that allow remote code execution including unrestricted read and write access to all wiki contents. The reason is that rendering output is included as content of HTML macros without further escaping and it is thus possible to close the HTML macro and inject script macros that are executed with programming rights.
This can be demonstrated by adding an object of type XWiki.UIExtensionClass to a document with content {{html wiki="true"}}~{~{~/~h~t~m~l~}~}~ ~{~{~c~a~c~h~e~}~}~{~{~g~r~o~o~v~y~}~}~p~r~i~n~t~l~n~(~1~)~{~{~/~g~r~o~o~v~y~}~}~{~{~/~c~a~c~h~e~}~}{{/html}}, extension point id org.xwiki.platform.html.head, extension id org.xwiki.myuser.test and extension scope "current user". When opening <xwiki-server>/xwiki/bin/view/Main/?sheet=CKEditor.ContentSheet&xpage=plain where <xwiki-server> is the URL of the XWiki installation, the output should start with {{/html}} {{cache}}{{groovy}}println(1){{/groovy}}{{/cache}} and not with 1</p>.
This escaping was always missing at least in XWiki syntax version 2, it is definitely exploitable in XWiki 3.3 Milestone 1 via the user profile (not through extension points), though this has also been fixed by a separate patch, see the advisory. Exploitable extension points include org.xwiki.platform.search.ui.docdoesnotexist which has been added in XWiki 8.3 Milestone 1.
Patches
This has been patched in XWiki 14.10.2 and 15.0 RC1 by making sure that rendering output cannot close the surrounding HTML macro.
Workarounds
It is in principle possible to add escaping to all places where rendering output is used in wiki documents but at the moment there is no list of them.
For more information
If you have any questions or comments about this advisory:
- Open an issue in Jira XWiki.org
- Email us at [Security Mailing List](mailto:security@xwiki.org)
Articles & Coverage 2
Technical POC Analysis
CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
1 PoC candidate from github (unverified)
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
XWiki Rendering (xwiki-rendering-xml) contains a critical vulnerability that enables any authenticated user with basic editing privileges to take full control of the wiki and read or modify all stored content. This poses a severe organizational risk because the platform often houses sensitive enterprise knowledge, and a low-privilege insider or compromised account could silently exfiltrate or corrupt that data. Leadership should treat remediation as urgent, as the flaw affects a widely used collaboration service and can undermine data confidentiality and integrity across teams.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2025-210935
GHSA-26vp-8gxg-v4pg
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB