Plate - это набор инструментов JavaScript, который упрощает разработку с помощью Slate, популярной платформы для создания текстовых редакторов. Одной из давних функций Plate является возможность добавления пользовательских атрибутов DOM к любому элементу или листу с помощью свойства `attributes`. Эти атрибуты передаются компоненту узла с помощью свойства `nodeProps`. Нам стало известно, что эту функцию можно использовать в злонамеренных целях, включая межсайтовый скриптинг (XSS) и раскрытие информации (в частности, IP-адреса пользователей и открыли ли они вредоносный документ). Обратите внимание, что риск раскрытия информации через атрибуты актуален только для приложений, в которых веб-запросы к произвольным URL-адресам обычно не разрешены. Например, редакторы Plate, которые позволяют пользователям встраивать изображения из произвольных URL-адресов, уже несут риск утечки IP-адресов пользователей третьим лицам. Все редакторы Plate, использующие уязвимую версию @udecode/plate-core, уязвимы для этих атак раскрытия информации через атрибут style и другие атрибуты, которые могут привести к отправке веб-запросов. Кроме того, уязвимость редактора Plate к атакам межсайтового скриптинга с использованием атрибутов зависит от ряда факторов. Наиболее вероятными уязвимыми атрибутами DOM являются href и src в ссылках и iframe соответственно. Любой компонент, который распространяет {...nodeProps} на элемент <a> или <iframe> и впоследствии не переопределяет href или src, будет уязвим для XSS. В исправленных версиях Plate мы по умолчанию отключили element.attributes и leaf.attributes для большинства имен атрибутов, за некоторыми исключениями, включая target, alt, width, height, colspan и rowspan в плагинах ссылок, изображений, видео, ячеек таблицы и ячеек заголовков таблиц. Если это критическое изменение для вас, вы можете выборочно повторно включить атрибуты для определенных плагинов следующим образом. Пожалуйста, тщательно изучите и оцените последствия для безопасности любого атрибута, который вы разрешаете, поскольку даже кажущиеся безобидными атрибуты, такие как стиль, могут быть использованы злонамеренно. Если вы не можете обновиться до какой-либо из исправленных версий, вам следует использовать такой инструмент, как patch-package или yarn patch, чтобы удалить логику из @udecode/plate-core, которая добавляет атрибуты в nodeProps.
Нажмите для просмотра деталей