Skip to main content
← All vulnerabilities
CVE-2026-54503PYSEC-2026-3497GHSA-4R4F-GG25-RMG5

plone.app.textfield: Stored XSS by spoofing mime type

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 2.0.2, 3.0.2, 4.0.1
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: no
  • Technical impact: partial

Summary

plone.app.textfield provides a zope.schema-style field type called RichText for storing a value with a related MIME type. Prior to 2.0.2, 3.0.2, and 4.0.1, depending on the release line, RichTextValue.output returns an unsanitized stored RichText value when mimeType equals outputMimeType, including values that claim the text/x-html-safe output type. This equality shortcut bypasses the safe_html transform even though the transform itself correctly removes event-handler attributes and unsafe URI schemes. Equal types can result from a RichText field configured with the same mimeType and outputMimeType or from REST API input that supplies text/x-html-safe as its content type. The raw stored value is then emitted through tal:content=structure without escaping, allowing a user who can set a RichText field to store JavaScript that executes in a viewer's browser. This issue is fixed in versions 2.0.2, 3.0.2, and 4.0.1.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: partial

  3. Record last updated

Affected versions

  • plone plone.app.textfield

    fixed in 2.0.2; From 3.0.0 · fixed in 3.0.2; From 4.0.0 · fixed in 4.0.1

  • plone-app-textfieldPyPI

    fixed in 2.0.2; From 3.0.0 · fixed in 3.0.2; From 4.0.0 · fixed in 4.0.1

  • plone-app-textfieldPyPI

    fixed in 2.0.2

  • plone-app-textfieldPyPI

    From 3.0.0 · fixed in 3.0.2

  • plone-app-textfieldPyPI

    From 4.0.0 · fixed in 4.0.1

References 4

GitHub · plone/plone.app.textfield