Критическая уязвимость в механизме перевода Angular i18n позволяет внедрять вредоносный код

vulnerability

В сфере веб-разработки выявлена серьёзная угроза безопасности, затрагивающая один из самых распространённых фреймворков - Angular. Обнаруженная уязвимость, получившая идентификатор CVE-2026-27970, связана с процессом интернационализации (i18n) и позволяет злоумышленникам выполнять произвольный код в контексте веб-приложения. Это создаёт прямой риск для конфиденциальности пользовательских данных и целостности тысяч приложений по всему миру. Поскольку Angular широко используется для создания корпоративных порталов, банковских систем и интернет-магазинов, масштаб потенциального воздействия оценивается как значительный.

Детали уязвимости

Суть проблемы кроется в обработке так называемых ICU-сообщений (International Components for Unicode), которые применяются для управления сложными переводами, например, с учётом правил множественного числа или грамматического рода. Стандартный рабочий процесс интернационализации в Angular предполагает извлечение строк из исходного кода, их перевод, часто силами внешних подрядчиков, и последующее объединение готовых файлов переводов (форматов .xliff или .xtb) обратно в приложение. Однако в ядре фреймворка, компоненте "@angular/core", обнаружена ошибка: при рендеринге переведённого контента система недостаточно строго проверяет и очищает HTML-содержимое. В результате, если злоумышленнику удастся скомпрометировать файлы переводов на этапе их создания или передачи, он может внедрить в них вредоносный JavaScript-код.

При загрузке пользователем страницы, использующей скомпрометированный перевод, этот код выполняется в браузере. Таким образом, реализуется классическая атака типа Cross-Site Scripting (XSS, межсайтовый скриптинг). Однако данный случай имеет важную особенность. В отличие от распространённых XSS-уязвимостей, где ввод вредоносных данных может осуществить любой пользователь через формы комментариев или профилей, здесь для успешной атаки требуется сначала получить контроль над цепочкой поставки переводов. Это может быть достигнуто, например, через взлом аккаунта переводчика или компрометацию системы обмена файлами. Между тем, подобный вектор атаки не является фантастическим, учитывая растущее число инцидентов, связанных с атаками на цепочки поставок программного обеспечения (supply chain attacks).

Если атака окажется успешной, злоумышленник получает возможность выполнять код в контексте домена приложения. Это открывает путь к двум основным сценариям. Во-первых, это хищение учётных данных и другой чувствительной информации. Вредоносный скрипт может извлечь данные из сессионных куки, локального хранилища браузера (LocalStorage, IndexedDB) или даже перехватить вводимые пользователем данные, отправив их на контролируемый злоумышленником сервер. Во-вторых, возможен акт вандализма - изменение внешнего вида или логики работы веб-страницы, что может дезориентировать пользователей, подорвать доверие к бренду или нарушить бизнес-процессы.

Согласно классификации CVSS версии 4.0, уязвимость имеет высокий уровень опасности с базовым баллом, рассчитанным по метрикам: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N. Это означает, что для эксплуатации не требуется специальных условий развёртывания или привилегий, но необходимы некоторые предварительные действия (AT:P) - в данном случае компрометация файлов переводов. Уязвимость затрагивает широкий спектр версий Angular, включая основные стабильные ветки 18.x, 19.x, 20.x и 21.x. Разработчики уже выпустили исправления в версиях 19.2.19, 20.3.17, 21.1.6 и 21.2.0. Всем командам, использующим Angular, настоятельно рекомендуется как можно скорее обновить свои проекты до этих патченных релизов.

Если немедленное обновление по каким-либо причинам невозможно, существуют методы снижения риска. Ключевая рекомендация - усилить контроль над процессом интернационализации. Все переводы, полученные от сторонних поставщиков, должны проходить тщательную проверку и валидацию перед интеграцией в продакшен-среду. Кроме того, критически важным является внедрение и настройка политики безопасности контента (Content-Security Policy, CSP). Правильно настроенная CSP способна заблокировать выполнение несанкционированных скриптов, даже если они каким-то образом оказались на странице. Ещё одним эффективным механизмом защиты является активация Trusted Types в браузере. Этот современный API позволяет явно указать, какие части кода могут создавать динамический HTML, что служит мощным барьером против большинства XSS-атак на уровне браузера.

В заключение, данная уязвимость служит важным напоминанием о рисках, связанных с зависимостями и сторонними сервисами в жизненном цикле разработки. Для команд, применяющих Angular, сейчас первостепенной задачей должно стать применение патча. Между тем, для долгосрочной безопасности стоит пересмотреть процессы работы с переводческим контентом, возможно, рассматривая его как потенциальный вектор атаки, и внедрить дополнительные уровни защиты, такие как CSP, которые повысят устойчивость приложения не только к этой, но и к будущим угрозам подобного рода.

Ссылки

Комментарии: 0