Angular SSR — это серверный инструмент рендеринга для приложений Angular. Версии ветки 22.x до 22.0.0-next.2, ветки 21.x до 21.2.3 и ветки 20.x до 20.3.21 имеют уязвимость Open Redirect в `@angular/ssr` из-за неполного исправления CVE-2026-27738. Хотя исходное исправление успешно заблокировало несколько начальных косых черт (например, `///`), внутренняя логика проверки не учитывает обход одной обратной косой черты (`\`).
Когда приложение Angular SSR развертывается за прокси-сервером, который передает заголовок `X-Forwarded-Prefix`, злоумышленник предоставляет значение, начинающееся с одной обратной косой черты, внутренняя проверка не смогла пометить одиночную обратную косую черту как недействительную, приложение добавляет ведущую косую черту, в результате чего заголовок `Location` содержит URL-адрес, а современные браузеры интерпретируют последовательность `/\` как `//`, рассматривая ее как URL-адрес, относящийся к протоколу, и перенаправляют пользователя на Домен, контролируемый злоумышленником. Кроме того, в ответе отсутствует заголовок Vary: X-Forwarded-Prefix, что позволяет вредоносному перенаправлению храниться в промежуточных кэшах (отравление веб-кеша). Версии 22.0.0-next.2, 21.2.3 и 20.3.21 содержат исправление.
До тех пор, пока патч не будет применен, разработчикам следует очистить заголовок X-Forwarded-Prefix в файле server.ts перед тем, как движок Angular обработает запрос.
Показать оригинальное описание (EN)
The Angular SSR is a server-rise rendering tool for Angular applications. Versions on the 22.x branch prior to 22.0.0-next.2, the 21.x branch prior to 21.2.3, and the 20.x branch prior to 20.3.21 have an Open Redirect vulnerability in `@angular/ssr` due to an incomplete fix for CVE-2026-27738. While the original fix successfully blocked multiple leading slashes (e.g., `///`), the internal validation logic fails to account for a single backslash (`\`) bypass. When an Angular SSR application is deployed behind a proxy that passes the `X-Forwarded-Prefix` header, an attacker provides a value starting with a single backslash, the internal validation failed to flag the single backslash as invalid, the application prepends a leading forward slash, resulting in a `Location` header containing the URL, and modern browsers interpret the `/\` sequence as `//`, treating it as a protocol-relative URL and redirecting the user to the attacker-controlled domain. Furthermore, the response lacks the `Vary: X-Forwarded-Prefix` header, allowing the malicious redirect to be stored in intermediate caches (Web Cache Poisoning). Versions 22.0.0-next.2, 21.2.3, and 20.3.21 contain a patch. Until the patch is applied, developers should sanitize the `X-Forwarded-Prefix` header in their `server.ts` before the Angular engine processes the request.
Характеристики атаки
Последствия
Строка CVSS v4.0