TinyMCE Cross-Site Scripting (XSS) vulnerability through `mce:protected` comments
Published 5 Jun 2026 · Updated 15 Jul 2026
Affected packages
- Affected
- <=5.10.9
- Fixed in
- No fix released
- Affected
- >=6.0.0 <7.9.3
- Fixed in
- 7.9.3
npm install tinymce@7.9.3- Affected
- >=8.0.0 <8.5.1
- Fixed in
- 8.5.1
npm install tinymce@8.5.1- Affected
- <=5.10.9
- Fixed in
- No fix released
- Affected
- >=6.0.0 <7.9.3
- Fixed in
- 7.9.3
composer require tinymce/tinymce:^7.9.3- Affected
- >=8.0.0 <8.5.1
- Fixed in
- 8.5.1
composer require tinymce/tinymce:^8.5.1Details
Impact
Stored XSS vulnerability via forged mce:protected comments. Allows attackers to bypass sanitization and inject scripts that execute when content is restored. Impacts users who utilize the protect option.
Patches
Patched by validating decoded mce:protected content against configured protect regex rules before restoring. Users should upgrade to the latest patched version.
Workarounds
No official workaround available.
Fix
To avoid this vulnerability:
Upgrade to TinyMCE 8.5.1 or higher. Upgrade to TinyMCE 7.9.3 or higher. Upgrade to TinyMCE 5.11.1 LTS or higher for TinyMCE 5.x (only available as part of commercial long-term support contract).
Acknowledgements
Tiny thanks Ivan Babenko for their help identifying this vulnerability.
Is GHSA-v98h-vmpc-fpqv in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected tinymce, and gives you the command that fixes it.
References
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.