{"id":"CVE-2026-116688","kind":"vulnerability","aliases":["CVE-2026-116688","GHSA-rh54-vffm-5fvp"],"related":[],"title":"CKEditor: Cross-site scripting (XSS) in the engine package","description":"### Impact\nA Cross-Site Scripting (XSS) vulnerability has been discovered in the CKEditor 5 engine. This vulnerability is caused by a prototype pollution issue in the `es-toolkit` library used in the CKEditor 5 codebase. This vulnerability could lead to unauthorized JavaScript code execution when the editor processes incoming `style` attribute values.\n\nThe underlying issue has been patched by the library maintainers, and the fix has been incorporated into CKEditor 5.\n\n### Patches\nThe problem has been recognized and patched. The fix will be available in version `48.5.1` (and above) and `47.7.4` (LTS).\n\n### For more information\nEmail us at [security@cksource.com](mailto:security@cksource.com) if you have any questions or comments about this advisory.","summary":"CKEditor 5 uses a vulnerable es-toolkit version whose prototype pollution can be reached while the editor processes style attribute values. Crafted editor content can make the browser run unauthorized JavaScript.","severity":"high","cvss":8.1,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"ckeditor5","fixed":["47.7.4"],"affected":">= 45.0.0, < 47.7.4","ecosystem":"npm"},{"name":"@ckeditor/ckeditor5-engine","fixed":["47.7.4"],"affected":">= 45.0.0, < 47.7.4","ecosystem":"npm"},{"name":"ckeditor5","fixed":["48.5.1"],"affected":">= 48.0.0, < 48.5.1","ecosystem":"npm"},{"name":"@ckeditor/ckeditor5-engine","fixed":["48.5.1"],"affected":">= 48.0.0, < 48.5.1","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["ckeditor5","cwe-79","frontend","javascript","package","rich-text"],"not_affected_if":["no-user-supplied-content","version-outside-range"],"how_to_check":"- Check the installed `ckeditor5` package version in `package.json` or the lockfile; affected versions are 45.0.0 up to 47.7.4 and 48.5.1.\n- Check whether `es-toolkit` is pinned in the lockfile to a vulnerable version.","fix":"- Upgrade `ckeditor5` to `47.7.4` or `48.5.1`, matching your major line.","status":"open","published_at":"2026-10-27T20:17:14+00:00","first_seen_at":"2026-10-27T20:33:27+00:00","triaged_at":"2026-10-27T20:35:29+00:00","updated_at":"2026-10-27T21:09:20+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-27T20:35:29Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade `ckeditor5` to `47.7.4` or `48.5.1`, matching your major line.","reach":"internet","title":"CKEditor 5: crafted content triggers prototype pollution and browser script execution","impact":"high","summary":"CKEditor 5 uses a vulnerable es-toolkit version whose prototype pollution can be reached while the editor processes style attribute values. Crafted editor content can make the browser run unauthorized JavaScript.","category":"package","nicknames":[],"who_cares":["javascript","ckeditor5","frontend","rich-text"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Unauthorized JavaScript runs in the victim's browser through crafted editor content.","analyst_note":"Check the NVD entry and the CKEditor release notes for the exact trigger and whether auth or user interaction is required.","how_to_check":"- Check the installed `ckeditor5` package version in `package.json` or the lockfile; affected versions are 45.0.0 up to 47.7.4 and 48.5.1.\n- Check whether `es-toolkit` is pinned in the lockfile to a vulnerable version.","needs_analyst":true,"not_affected_if":["no-user-supplied-content","version-outside-range"],"who_is_affected":"Applications that embed CKEditor 5 in the 45.0.0 to 47.7.4 or 48.5.1 range and let users submit or load rich-text content that is then rendered in the editor. Exposure depends on users being able to supply content, so internal-only editors with trusted content carry less risk. Teams on other major versions outside the stated ranges can skip it.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000641,"input_tokens":3372,"output_tokens":608,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-116688':13A,21A '-2026':12A,20A '-79':28B '47.7.4':159C '48.5.1':155C '5':36B,81C,102C,139C '5fvp':18A 'advisori':179C 'attribut':55B,119C 'avail':152C 'browser':63B 'caus':86C 'ckeditor':1A,35B,80C,101C,138C 'ckeditor/ckeditor5-engine':23A,25A 'ckeditor5':22A,24A,26B 'code':111C 'codebas':103C 'comment':176C 'content':59B 'could':106C 'craft':57B 'cross':3A,70C 'cross-sit':2A,69C 'cve':11A,19A 'cwe':27B 'discov':77C 'editor':52B,58B,115C 'email':164C 'engin':9A,82C 'es':41B,95C 'es-toolkit':40B,94C 'execut':112C 'fix':133C,149C 'frontend':29B 'ghsa':15A 'ghsa-rh54-vffm-5fvp':14A 'impact':67C 'incom':117C 'incorpor':136C 'inform':163C 'issu':91C,123C 'javascript':30B,66B,110C 'lead':107C 'librari':97C,129C 'lts':160C 'mailto':168C 'maintain':130C 'make':61B 'packag':10A,31B 'patch':126C,140C,147C 'pollut':46B,90C 'problem':142C 'process':53B,116C 'prototyp':45B,89C 'question':174C 'reach':49B 'recogn':145C 'rh54':16A 'rich':33B 'rich-text':32B 'run':64B 'script':5A,72C 'security@cksource.com':167C,169C 'site':4A,71C 'style':54B,118C 'text':34B 'toolkit':42B,96C 'unauthor':65B,109C 'under':122C 'us':165C 'use':37B,98C 'valu':56B,120C 'version':43B,154C 'vffm':17A 'vulner':39B,74C,84C,105C 'whose':44B 'xss':6A,73C","nicknames":[],"mitigations":[],"who_affected":"Applications that embed CKEditor 5 in the 45.0.0 to 47.7.4 or 48.5.1 range and let users submit or load rich-text content that is then rendered in the editor. Exposure depends on users being able to supply content, so internal-only editors with trusted content carry less risk. Teams on other major versions outside the stated ranges can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-27T20:17:14+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116688","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116688","severity":null,"published_at":"2026-10-27T20:17:14+00:00","modified_at":"2026-10-27T20:17:14+00:00","first_seen_at":"2026-10-27T20:33:27+00:00","fetched_at":"2026-10-27T20:33:27+00:00","note":null},{"source":"ghsa","external_id":"GHSA-rh54-vffm-5fvp","url":"https://github.com/advisories/GHSA-rh54-vffm-5fvp","severity":"high","published_at":"2026-10-27T21:05:06+00:00","modified_at":"2026-10-27T21:05:07+00:00","first_seen_at":"2026-10-27T21:09:20+00:00","fetched_at":"2026-10-27T21:09:20+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}