В версиях от DOMPurify до 3.3.3 предикаты функций, передаваемые через ADD_ATTR или ADD_TAGS в DOMPurify.sanitize(), сохраняются во внутреннем состоянии (EXTRA_ELEMENT_HANDLING) при последующих вызовах sanitize() в том же экземпляре. Если более поздний вызов того же экземпляра предоставляет ADD_ATTR или ADD_TAGS в виде массива, а не функции, ранее установленный обработчик функции не очищается и не перезаписывается, поэтому он продолжает утверждать атрибуты или теги, контролируемые злоумышленником. Это может позволить опасным атрибутам обработчика событий или запрещенным тегам (в обход FORBID_TAGS) пережить очистку, что приведет к созданию межсайтовых сценариев.
Поставщик (Cure53) считает это крайним случаем, выходящим за рамки модели угроз DOMPurify; в указанной рекомендации указана версия 3.4.0 как исправленная версия.
Показать оригинальное описание (EN)
In DOMPurify through 3.3.3, function predicates supplied via ADD_ATTR or ADD_TAGS to DOMPurify.sanitize() persist in internal state (EXTRA_ELEMENT_HANDLING) across subsequent sanitize() calls on the same instance. If a later call on the same instance provides ADD_ATTR or ADD_TAGS as an array rather than a function, the previously set function handler is neither cleared nor overwritten, so it continues to approve attacker-controlled attributes or tags. This can allow dangerous event-handler attributes or forbidden tags (bypassing FORBID_TAGS) to survive sanitization, resulting in cross-site scripting. The vendor (Cure53) considers this an edge case outside DOMPurify's threat model; the referenced advisory lists 3.4.0 as the patched version.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Cure53 Dompurify
cpe:2.3:a:cure53:dompurify:*:*:*:*:*:*:*:*
|
— |
3.4.0
|