TinyMCE: Stored cross-site scripting in media plugin
Summary
TinyMCE, an open source rich text editor, has a stored Cross-Site Scripting vulnerability in its media plugin. Crafted data-mce-object elements are processed before sanitization and can execute malicious scripts. An attacker who can enter rich text that a victim later views, for example in a CMS, portal or ticket system, could run scripts in the victim's browser and potentially compromise sessions or accounts, especially in admin or back-office editors. The issue only applies where the media plugin is enabled.
Affected
- TinyMCE 8.5.1 up to but not including 8.9.3
- TinyMCE 7.9.3 up to but not including 7.9.4
- Whether older releases are affected is unknown.
Fixed in
- TinyMCE 8.9.3
- TinyMCE 7.9.4
Workaround
- No vendor-documented workaround. Upgrading is the fix.
- A third-party write-up suggests disabling the media plugin if patching is not immediately possible. This is not an official vendor recommendation.
- Server-side sanitisation of internal TinyMCE attributes before storing user content is defence-in-depth only and must be validated with developers.
Exploitation
- CISA SSVC: exploitation none, not automatable, total technical impact.
- No evidence of exploitation in the wild found.
- No public proof-of-concept found. A third-party write-up describes the root cause.
Our recommendation
- Inventory all TinyMCE instances, including npm, NuGet, Packagist and bundled copies in CMS plugins.
- Upgrade to 8.9.3 or 7.9.4 and verify the running version in the browser.
- Prioritise internet-facing and admin-facing editors.
- If you cannot patch promptly, disable the media plugin where possible.
- Check the npm registry for 7.9.4 availability before relying on it for self-hosted deployments; an unverified report says it is unavailable.
- Plan for regular TinyMCE updates, as several similar advisories were published in 2026.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-mf2p-h6hf-fcwm github.com
- Fix commit bd1ab5ef github.com
- TinyMCE 8.9.3 release notes www.tiny.cloud
- TinyMCE 7.9.4 release notes www.tiny.cloud
- TinyMCE 8.9.3 GitHub release github.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 09:57.
Original description (NVD)
TinyMCE is an open source rich text editor. From 7.9.3 until 7.9.4 and from 8.5.1 until 8.9.3, the media plugin creates elements crafted through data-mce-object in the active document before sanitization. Those elements can execute malicious scripts during processing, resulting in stored cross-site scripting for users with the media plugin enabled. This issue is fixed in versions 8.9.3 and 7.9.4.
NVD references (5)
- https://github.com/tinymce/tinymce/commit/bd1ab5ef024c648c3f9c0b409e54a6c227c7d8a2
- https://github.com/tinymce/tinymce/releases/tag/8.9.3
- https://github.com/tinymce/tinymce/security/advisories/GHSA-mf2p-h6hf-fcwm
- https://www.tiny.cloud/docs/tinymce/7/7.9.4-release-notes/#overview
- https://www.tiny.cloud/docs/tinymce/latest/8.9.3-release-notes/#overview
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
