plone.app.textfield: Stored XSS by spoofing mime type
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Cross-site scripting
- Confidentiality · integrity · availability
- Low · None · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-80.
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| plone | plone.app.textfield | before 2.0.2; 3.0.0 to before 3.0.2; 4.0.0 to before 4.0.1 | 2.0.2, 3.0.2, 4.0.1 | Patch available | CNA |
| — | plone.app.textfield (PyPI) | before 2.0.2 | 2.0.2 | Patch available | GHSA-4r4f-gg25-rmg5 |
| — | plone.app.textfield (PyPI) | 3.0.0 to before 3.0.2 | 3.0.2 | Patch available | GHSA-4r4f-gg25-rmg5 |
| — | plone.app.textfield (PyPI) | 4.0.0 to before 4.0.1 | 4.0.1 | Patch available | GHSA-4r4f-gg25-rmg5 |
- plone.app.textfield Vendorplone Affected before 2.0.2; 3.0.0 to before 3.0.2; 4.0.0 to before 4.0.1 Fixed in 2.0.2, 3.0.2, 4.0.1 Patch available CNA
- plone.app.textfield (PyPI) Vendor— Affected before 2.0.2 Fixed in 2.0.2 Patch available GHSA-4r4f-gg25-rmg5
- plone.app.textfield (PyPI) Vendor— Affected 3.0.0 to before 3.0.2 Fixed in 3.0.2 Patch available GHSA-4r4f-gg25-rmg5
- plone.app.textfield (PyPI) Vendor— Affected 4.0.0 to before 4.0.1 Fixed in 4.0.1 Patch available GHSA-4r4f-gg25-rmg5
Remediation
- Fix · CNA plone.app.textfield (plone) Fixed in 2.0.2, 3.0.2, 4.0.1
- Fix · GHSA-4r4f-gg25-rmg5 plone.app.textfield (PyPI) Fixed in 2.0.2 Advisory →
- Fix · GHSA-4r4f-gg25-rmg5 plone.app.textfield (PyPI) Fixed in 3.0.2 Advisory →
- Fix · GHSA-4r4f-gg25-rmg5 plone.app.textfield (PyPI) Fixed in 4.0.1 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-54503
- 2026-10-03 Alias added: GHSA-4r4f-gg25-rmg5
References
Other 5
- https://github.com/plone/plone.app.textfield/security/advisories/GHSA-4r4f-gg25-rmg5
- https://github.com/plone/plone.app.textfield/commit/0da1aeec2406cf640977eb857a03e792d2c7cac2
- https://github.com/plone/plone.app.textfield/commit/467638e500d804c637031387a227a2b02d12a86f
- https://github.com/plone/plone.app.textfield/commit/781d517a38524087fe57525a94806684908f852f
- https://github.com/plone/plone.app.textfield
More plone vulnerabilities
- TI-2024-15205 An issue in Plone Docker Official Image 5.2.13 (5221) open-source software that could… CVSS 3.1CRITICAL 9.8
- TI-2011-03162 Unspecified vulnerability in Zope 2.12.x and 2.13.x, as used in Plone 4.0.x through… CVSS 2.0HIGH 9.3
- TI-2021-13226 An issue in Plone CMS v. CVSS 3.1HIGH 8.8
- TI-2024-15757 The HTTP PUT and DELETE methods are enabled in the Plone official Docker version 5.2.13… CVSS 3.1HIGH 7.5
- TI-2024-15206 An issue in Plone Docker Official Image 5.2.13 (5221) open-source software allows for… CVSS 3.1MEDIUM 6.1
- TI-2008-01340 Plone CMS 3.0.5, and probably other 3.x versions, places a base64 encoded form of the… CVSS 2.0HIGH 10.0
Sources
- CVE-2026-54503 · CVE Program
- CVE-2026-54503 · NVD
- FIRST EPSS
- GHSA-4r4f-gg25-rmg5 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences