Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Upload requires at least Contributor role (PR:L); victim must view content (UI:R); XSS crosses into victim browser context (S:C); confidentiality and integrity limited to browser-session scope.
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
2Description PRE-NVD
AnalysisAI
Stored cross-site scripting in Plone CMS enables persistent script injection by spoofing file MIME types within the plone.app.textfield and plone.restapi packages, announced June 5, 2026. An attacker with content-upload access can craft a file whose declared MIME type bypasses Plone's content-type enforcement, causing browsers to render the payload as HTML or JavaScript when other users access the stored content. No public exploit code or CISA KEV listing has been identified at time of analysis; the moderate severity rating (4.3) reflects the stored persistence risk offset by the upload-privilege requirement.
Technical ContextAI
Plone CMS relies on plone.app.textfield for rich-text field storage and transformation, and on plone.restapi to expose a RESTful interface over the same content objects. Both packages handle or expose MIME-typed file and field content. The vulnerability arises from insufficient validation or normalization of the declared MIME type on user-supplied uploads: if the server accepts a caller-supplied content-type without canonicalizing it against the file's actual byte signature, stored content can be later served with a type (e.g., text/html) that causes browsers to execute embedded JavaScript. This is a classic stored-XSS pattern rooted in a missing or bypassable MIME-type validation control - analogous to CWE-79 (Improper Neutralization of Input During Web Page Generation) combined with CWE-434 (Unrestricted Upload of File with Dangerous Type). No formal CWE assignment was provided in the available data.
RemediationAI
Consult the individual GitHub Security Advisories for plone.app.textfield (GHSA-4r4f-gg25-rmg5) and plone.restapi (GHSA-8rqh-vxpr-x77p) to obtain the exact patched versions and apply upgrades via pip. Both packages must be updated - patching only one leaves the other upload path exposed. Exact fixed version numbers are not available from the provided data and must be confirmed in the advisories before deployment. As a compensating control pending patch deployment, restrict file-upload and content-creation permissions to the minimum necessary set of trusted roles (e.g., remove Contributor role from externally-facing or anonymous accounts), which eliminates the attacker's ability to store the spoofed-MIME payload. Additionally, configuring a Content Security Policy (CSP) header that restricts inline script execution can materially reduce XSS impact, though it does not address the root cause. Note that tightening upload permissions may break legitimate contributor workflows.
Same weakness CWE-80 – Basic XSS
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-78836
GHSA-4r4f-gg25-rmg5