Angular — это платформа разработки для создания мобильных и настольных веб-приложений с использованием TypeScript/JavaScript и других языков. Версии до 21.2.0, 21.1.16, 20.3.17 и 19.2.19 имеют уязвимость межсайтового выполнения сценариев в конвейере интернационализации Angular (i18n). В сообщениях ICU (международные компоненты для Юникода) HTML из переведенного контента не был должным образом очищен и мог выполнять произвольный JavaScript.
Angular i18n обычно включает три шага: извлечение всех сообщений из приложения на исходном языке, отправку сообщений на перевод и последующее объединение их переводов обратно в окончательный исходный код. Переводы часто выполняются по контрактам с конкретными компаниями-партнерами и включают отправку исходных сообщений отдельному подрядчику до получения окончательных переводов для отображения конечному пользователю. Если возвращенные переводы содержат вредоносный контент, он может быть отображен в приложении и выполнить произвольный код JavaScript.
При успешной эксплуатации эта уязвимость позволяет выполнить контролируемый злоумышленником код JavaScript в источнике приложения. В зависимости от характера эксплуатируемого приложения это может привести к краже учетных данных и/или вандализму страницы. К атаке применимо несколько предварительных условий.
Злоумышленник должен скомпрометировать файл перевода (xliff, xtb и т. д.). В отличие от большинства XSS-уязвимостей, эта проблема не может быть использована произвольными пользователями. Злоумышленник должен сначала скомпрометировать файл перевода приложения, прежде чем он сможет повысить привилегии клиента приложения Angular.
Приложение-жертва должно использовать Angular i18n, использовать одно или несколько сообщений ICU, отображать сообщение ICU и не защищаться от XSS с помощью политики безопасности безопасного контента. Версии 21.2.0, 21.1.6, 20.3.17 и 19.2.19 устраняют проблему. До тех пор, пока патч не будет применен, разработчикам следует рассмотреть возможность просмотра и проверки переведенного контента, полученного от ненадежных третьих сторон, прежде чем включать его в приложение Angular, включив строгие элементы управления CSP для блокировки несанкционированного выполнения JavaScript на странице и включив Trusted Types для обеспечения надлежащей очистки HTML.
Показать оригинальное описание (EN)
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Versions prior to 21.2.0, 21.1.16, 20.3.17, and 19.2.19 have a cross-Site scripting vulnerability in the Angular internationalization (i18n) pipeline. In ICU messages (International Components for Unicode), HTML from translated content was not properly sanitized and could execute arbitrary JavaScript. Angular i18n typically involves three steps, extracting all messages from an application in the source language, sending the messages to be translated, and then merging their translations back into the final source code. Translations are frequently handled by contracts with specific partner companies, and involve sending the source messages to a separate contractor before receiving final translations for display to the end user. If the returned translations have malicious content, it could be rendered into the application and execute arbitrary JavaScript. When successfully exploited, this vulnerability allows for execution of attacker controlled JavaScript in the application origin. Depending on the nature of the application being exploited this could lead to credential exfiltration and/or page vandalism. Several preconditions apply to the attack. The attacker must compromise the translation file (xliff, xtb, etc.). Unlike most XSS vulnerabilities, this issue is not exploitable by arbitrary users. An attacker must first compromise an application's translation file before they can escalate privileges into the Angular application client. The victim application must use Angular i18n, use one or more ICU messages, render an ICU message, and not defend against XSS via a safe content security policy. Versions 21.2.0, 21.1.6, 20.3.17, and 19.2.19 patch the issue. Until the patch is applied, developers should consider reviewing and verifying translated content received from untrusted third parties before incorporating it in an Angular application, enabling strict CSP controls to block unauthorized JavaScript from executing on the page, and enabling Trusted Types to enforce proper HTML sanitization.
Характеристики атаки
Последствия
Строка CVSS v4.0