Medium, CVSS 4.3PyPIAmendedPublished
plone.app.textfield: Stored XSS by spoofing mime type
CVE-2026-54503 · GHSA-4r4f-gg25-rmg5
- Affected
- PyPI plone-app-textfield < 2.0.2; >= 3.0.0, < 3.0.2; >= 4.0.0, <= 4.0.0
- Fixed in
- 3.0.22.0.24.0.1· Vendor fix available
- Issue
- Impact A stored XSS affecting RichText fields. RichTextValue.output returns the raw, unsanitized stored value whenever the stored mimeType equals the outputMimeType. Because the safe-HTML output type (text/x-html-safe) is the type that signifies "already sanitized", any value whose stored mimeType equals it bypasses the safehtml transform entirely on render. The transform itself is sound — it correctly strips on event-handler attributes and javascript:/data: URIs; the defect is that it is never invoked for these values. The unsanitized value is then emitted via tal:content="structure ...", which performs no escaping, so the payload executes in the viewer's browser. This can be a problem when a RichText field is wrongly defined in code with a mimeType and outputMimeType that are the same, or when the REST API is used to the same effect. Patches The problem has been patched: For Plone 6.0, upgrade plone.app.textfield to 2.0.2. For Plone 6.1, upgrade plone.app.textfield to 3.0.2. For…
Recommended action: Upgrade to 4.0.1, 3.0.2 or 2.0.2 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.