⚠️️️ Please note that this release is a part of CKEditor 4 Extended Support Model, only available to customers who decided to acquire the LTS (Long Term Support) version of the editor. All editor versions below 4.24.0-lts can no longer be considered as secure! ⚠️
Security Updates:
-
Fixed cross-site scripting (XSS) vulnerability caused by incorrect CDATA detection reported by Michal Frýba, ALEF NULA.
Issue summary: The vulnerability allowed to inject malformed HTML content bypassing Advanced Content Filtering mechanism, which could result in executing JavaScript code. See GHA for more details.
-
Fixed cross-site scripting (XSS) vulnerability in AJAX sample reported by Rafael Pedrero, see INCIBE report.
Issue summary: The vulnerability allowed to execute JavaScript code by abusing the AJAX sample. See GHA for more details.
-
Cross-site scripting (XSS) vulnerability in samples with enabled the preview feature reported by Marcin Wyczechowski & Michał Majchrowicz, AFINE Team.
Issue summary: The vulnerability allowed to execute JavaScript code by abusing the misconfigured preview feature. See GHA for more details.
You can read more details in the relevant security advisories. Contact us if you have more questions.
An upgrade is highly recommended!
Fixed Issues:
- Fixed: The CDATA parsing mechanism incorrectly detects the end of CDATA content. This fix unifies how style and script elements are parsed with the browser's behavior.
This release introduces the LTS (”Long Term Support”) version of the editor, available under commercial terms ("Extended Support Model").
If you acquired the Extended Support Model for CKEditor 4 LTS, please read the CKEditor 4 LTS key activation guide.
This is the last open source release of CKEditor 4. As announced in 2018, CKEditor 4 has reached its End of Life in June 2023.
New Features:
- #5316: Added vertical margins support for list elements in the Paste from Word plugin.
-
#5410: Added the ability to indicate the language of styles in the Styles Combo plugin via the
config.styleSet
configuration option. -
#5510: Added notification system to the editor informing users that the editor version is up-to-date and secure. See
config.versionCheck
configuration option to learn more.
Fixed Issues:
- #5437: Fixed: Incorrect indication of selected items in combo boxes. The selected item was unmarked upon each opening of the combo box.
- #5495: Fixed: Insufficient color ratio for links inside Notifications.
Other Changes:
Security Updates:
A cross-site scripting vulnerability has been discovered affecting Iframe Dialog and Media Embed plugins.
This vulnerability might affect a small percentage of integrators that depend on dynamic editor initialization/destroy mechanism. See GitHub advisory for more details.
Potential breaking changes
In some rare cases, a security release may introduce a breaking change to your application. We have provided configuration options that will help you mitigate any potential issues with the upgrade:
- Starting from version 4.21, the Iframe Dialog plugin applies the
sandbox
attribute by default, which restricts JavaScript code execution in the iframe element. To change this behavior, configure theconfig.iframe_attributes
option. - Starting from version 4.21, the Media Embed plugin regenerates the entire content of the embed widget by default. To change this behavior, configure the
config.embed_keepOriginalContent
option.
If you choose to change either of the above options, make sure to properly configure Content Security Policy to avoid any potential security issues that may arise from embedding iframe elements on your web page.
You can read more details in the relevant security advisory and contact us if you have more questions.
An upgrade is highly recommended!
New Features:
-
#4400: Added the
config.uploadImage_supportedTypes
configuration option allowing to change the image formats accepted by the Upload Image plugin. Thanks to SilverYoCha!
Fixed Issues:
- #5431: Fixed: No notification is shown when pasting or dropping unsupported image types into the editor.
Fixed Issues:
- #439: Fixed: Incorrect Tab and Shift+Tab navigation for radio buttons inside the dialog.
- #4829: Fixed: Undo reversed entire table content instead of a single cell. Thanks to that fix, multiple changes in a table can be undone one by one.
-
#5396: Fixed: Event listeners for
popstate
andhashchange
events on thewindow
, added by the Maximize plugin, were not removed when destroying the editor instance. -
#5414: Fixed: File and image uploaders based on the Upload Widget plugin and Easy Image plugin didn't fire the
change
event upon finishing upload, resulting in passing incorrect data in form controls for integration frameworks, like Reactive forms in Angular. - #698: Fixed: An error was thrown after applying formatting to the widget with inline editable and switching to the source mode. Thanks to Glen!
API changes:
- #3540: The startup data passed to the widget's command is now used to also populate the widget's template.
-
#5352: Added the
colorButton_contentsCss
configuration option allowing to add custom CSS to the Color Button menu content. Thanks to mihilion!