Уязвимость в Angular SSR позволяет злоумышленникам получать доступ к конфиденциальным данным

vulnerability

Обнаружена высокоопасная уязвимость в функции серверного рендеринга (SSR) фреймворка Angular, которая может приводить к утечке конфиденциальных данных при одновременной обработке нескольких запросов. Проблема, получившая идентификатор CVE-2025-59052, связана с состоянием гонки в платформенном инжекторе зависимостей, что может вызывать межзапросную утечку данных.

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

Организациям, использующим уязвимые версии Angular, рекомендуется немедленно обновить систему или реализовать рекомендованные временные решения для предотвращения потенциальных утечек информации. Оценка серьёзности уязвимости составляет 7.1 балла по шкале CVSS, что соответствует высокому уровню опасности.

Техническая суть проблемы заключается в механизме работы внедрение зависимости в Angular SSR. Платформенный инжектор, используемый для хранения запрососпецифичных данных во время рендеринга, исторически определялся как глобальная переменная в пределах модуля. При одновременной обработке двух или более запросов рендеринга возникает ситуация, когда они могут совместно использовать или перезаписывать состояние этого глобального инжектора.

В результате информация, предназначенная для одной пользовательской сессии - включая токены аутентификации, пользовательские настройки или результаты запросов к базе данных - может появляться в ответах, отправляемых другим пользователям. Злоумышленники с сетевым доступом могут эксплуатировать эту уязвимость, отправляя повторяющиеся SSR-запросы и анализируя отрендеренные страницы или заголовки ответов в поисках данных, принадлежащих другим сессиям.

Согласно отчету, для эксплуатации уязвимости не требуются специальные привилегии или взаимодействие с пользователем, что делает её одновременно простой в использовании и опасной для высоконагруженных приложений. Несколько API Angular полагались на предыдущее поведение платформенного инжектора и требуют изменений в серверных средах.

Функция bootstrapApplication, используемая standalone-приложениями, теперь требует явного аргумента BootstrapContext для обеспечения использования корректного инжектора для каждого запроса. Аналогично, getPlatform больше не возвращает последний созданный экземпляр платформы на сервере, всегда возвращая значение null. Функция destroyPlatform была преобразована в no-op при вызове во время SSR.

Патч-релизы Angular вносят эти критические изменения только для серверного кода. Разработчикам необходимо добавить новый аргумент для bootstrapApplication. Angular предоставляет автоматические схемы для применения этих корректировок кода через ng update для версий 18, 19 и 20.

Проблема исправлена во всех активных линиях выпуска Angular, включая предрелизные версии. Разработчикам следует обновиться до @angular/platform-server 18.2.14, 19.2.15, 20.3.0 или 21.0.0-next.3 и обновить соответствующие пакеты @angular/ssr и @nguniversal/common, где это применимо.

До применения патчей команды могут отключить SSR с помощью серверной маршрутизации или опций сборщика, удалить асинхронное поведение из пользовательских функций bootstrap, исключить вызовы getPlatform() и принудительно отключить режим jit в серверных сборках. Эти меры снижают риск утечки состояния платформенного инжектора между запросами.

CVE-2025-59052 подчеркивает сложность серверных фреймворков и важность изоляции данных, специфичных для каждого запроса. Применяя официальные обновления или следуя рекомендованным временным решениям, разработчики могут защитить свои развертывания Angular SSR от этой высокоопасной уязвимости и сохранить конфиденциальность пользовательских данных.

Ссылки

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