Media

@angular/platform-server: Redirección abierta mediante URLs relativas al protocolo en Server-Side Rendering (SSR)

  • Publicada: 20.10.2026
  • Actualizado: 20.10.2026 18:18

Se ha identificado una vulnerabilidad de redirección abierta (open redirect) en @angular/platform-server cuando Server-Side Rendering (SSR) está habilitado.

Cuando Angular SSR procesa una solicitud entrante, la resolución de URLs y la navegación de la plataforma son gestionadas por ServerPlatformLocation utilizando resolveUrl (o parseUrl en v20). Aunque resolveUrl rechazaba URLs relativas al protocolo cuya cadena cruda comenzara directamente con //, esta validación se ejecutaba antes de la normalización de URLs de WHATWG.

Cuando una URL de solicitud incluye un segmento de punto de retroceso seguido de múltiples barras diagonales (como /.//evil.test o serializado desde estructuras de rutas del enrutador como /.;/(//evil.test)), la entrada eludía la comprobación inicial de urlStr.startsWith('//'). El análisis posterior mediante WHATWG URL resolvía los segmentos de punto y daba como resultado un pathname que comenzaba con // (//evil.test).

En consecuencia, ServerPlatformLocation almacenaba pathname = '//evil.test'. Cuando @angular/ssr detectaba una discrepancia entre la URL renderizada y el estado final de ubicación del enrutador, emitía la ruta no normalizada en la cabecera de respuesta HTTP Location, produciendo una redirección HTTP 302 con Location: //evil.test, que los navegadores resuelven como una navegación relativa al protocolo fuera del origen.

Impacto

Una explotación exitosa permite a un atacante remoto no autenticado crear URLs que inducen a Angular SSR a redirigir a los usuarios a un dominio externo arbitrario.

  • Evade guardas a nivel de aplicación: Las rutinas de validación comunes a nivel de aplicación (como comprobar !returnUrl.startsWith('//') antes de invocar router.navigateByUrl) aceptan /.//evil.test o /.;/(//evil.test) como una ruta relativa segura, permitiendo a los atacantes eludir listas permitidas de redirecciones.
  • Las aplicaciones SPA de cliente no están afectadas: Las aplicaciones Angular puramente del lado del cliente (Single Page Applications sin SSR) no son vulnerables, ya que ServerPlatformLocation solo se utiliza en entornos de ejecución del lado del servidor.

Condiciones previas del ataque y configuraciones vulnerables

Una aplicación se ve afectada si se cumplen las siguientes condiciones:

  • SSR habilitado: La aplicación se ejecuta en un entorno de Server-Side Rendering usando @angular/platform-server y @angular/ssr.
  • Estructuras de rutas con parámetros: El enrutador contiene rutas parametrizadas con comodines o segmentos secundarios (por ejemplo, /:tenant que coincide con . y serializa grupos de salidas secundarias (//evil.test) a /.//evil.test), o pasa destinos de navegación suministrados por el usuario (por ejemplo, returnUrl).
  • Paso a través del proxy inverso: Los proxies inversos upstream (Nginx, Cloudflare, ALB) reenvían puntos y comas (;) o segmentos de punto sin eliminarlos ni normalizarlos.

Ejemplo de carga útil de explotación

Un atacante envía una solicitud dirigida a una ruta con parámetros y segmentos secundarios:

http
GET /.;/(//evil.test) HTTP/1.1
Host: example.com

Respuesta:

http
HTTP/1.1 302 Found
Location: //evil.test

El navegador cliente resuelve //evil.test de manera relativa al protocolo y redirige al usuario fuera de example.com hacia evil.test.

Parches

El problema se resuelve actualizando resolveUrl (y parseUrl en v20) en @angular/platform-server para verificar que la ruta normalizada de la URL no comience con // cuando allowProtocolRelative sea false.

  • 22.2.1
  • 21.2.25
  • 20.3.33

Mitigaciones y soluciones alternativas

Si no puede actualizar inmediatamente a una versión parcheada, aplique una de las siguientes mitigaciones en su proxy inverso perimetral o WAF:

  1. Rechazar rutas con segmentos de punto seguidos de barras: Configure su proxy inverso (por ejemplo, Nginx, Cloudflare, AWS WAF) para bloquear solicitudes que contengan /.//, /..// o /.;/:
    nginx
    # Nginx example: reject suspicious path normalization sequences
    if ($request_uri ~* "(\n/\.\/|\/\.\;)") {
        return 400;
    }
  2. Sanear cabeceras de redirección: Asegúrese de que los proxies perimetrales o pasarelas de API reescriban o no permitan cabeceras de respuesta Location relativas al protocolo (//) provenientes del servicio SSR upstream.

Qué hacer

Actualice @angular/platform-server a las versiones corregidas 22.2.1, 21.2.25 o 20.3.33.

Si no es posible actualizar de inmediato, aplique estas mitigaciones en su proxy inverso o WAF:

  • Bloquear solicitudes que contengan segmentos de punto seguidos de barras diagonales (/.//, /..// o /.;/).
  • Reescribir o restringir cabeceras de respuesta Location con rutas relativas al protocolo provenientes del upstream de SSR.

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Paquete de npm @angular/platform-server >= 22.0.0, < 22.2.1, >= 21.0.0, < 21.2.25, >= 20.0.0, < 20.3.33, <= 19.2.25 22.2.1, 21.2.25, 20.3.33

Referencias

Puntuación CVSS -
Vector CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Debilidad (CWE)
CWE-601
Plataforma
npm
Paquete
@angular/platform-server
Publicada
20.10.2026
Actualizado
20.10.2026 18:18

Fuentes y licencias · Editado o traducido por DockRay; se mantienen los derechos y las licencias de las fuentes.

OSV / GitHub Advisory Database - GHSA-w739-gvwx-grc3 - CC BY 4.0

Historial de vulnerabilidades: @angular/platform-server

Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (12) en el archivo
Entradas en total
12
Primera → última
09.2025 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Alta 11
  • Media 1

Divulgaciones por año

  1. 2025: 1
  2. 2026: 11
Gravedad:
  1. @angular/platform-server: Redirección abierta mediante URLs relativas al protocolo en Server-Side Rendering (SSR) esta entrada
    Media CVE-2026-111754 >= 22.0.0, < 22.2.1, >= 21.0.0, < 21.2.25, >= 20.0.0, < 20.3.33, <= 19.2.25 22.2.1, 21.2.25, 20.3.33
  2. Alta CVE-2026-101895 >= 22.0.0, < 22.1.6, >= 21.0.0, < 21.2.23, >= 20.0.0, < 20.3.31, <= 19.2.25 22.1.6, 21.2.23, 20.3.31
  3. Alta CVE-2026-88058 >= 22.0.0, < 22.1.4, >= 21.0.0, < 21.2.22, >= 20.0.0, < 20.3.30, <= 19.2.25 22.1.4, 21.2.22, 20.3.30
  4. Alta CVE-2026-88060 >= 22.0.0, < 22.1.4, >= 21.0.0, < 21.2.22, >= 20.0.0, < 20.3.30, <= 19.2.25 22.1.4, 21.2.22, 20.3.30
  5. Alta CVE-2026-88056 >= 22.0.0, < 22.1.4, >= 21.0.0, < 21.2.22, >= 20.0.0, < 20.3.30, <= 19.2.25 22.1.4, 21.2.22, 20.3.30
  6. Alta CVE-2026-69149 >= 22.0.0-next.0, < 22.0.7, >= 21.0.0-next.0, < 21.2.19, >= 20.0.0-next.0, < 20.3.27, <= 19.2.25 22.0.7, 21.2.19, 20.3.27
  7. Alta CVE-2026-50556 >= 22.0.0-next.0, < 22.0.0-rc.2, >= 21.0.0-next.0, < 21.2.16, >= 20.0.0-next.0, < 20.3.24, >= 19.0.0-next.0, < 19.2.25, <= 18.2.14 22.0.0-rc.2, 21.2.16, 20.3.24, 19.2.25
  8. Alta · 6.1 CVE-2026-50555 >= 22.0.0-next.0, < 22.0.0-rc.2, >= 21.0.0-next.0, < 21.2.16, >= 20.0.0-next.0, < 20.3.24, >= 19.0.0-next.0, < 19.2.25, <= 18.2.14 22.0.0-rc.2, 21.2.16, 20.3.24, 19.2.25
  9. Alta · 8.2 CVE-2026-50168 >= 22.0.0-next.0, < 22.0.0-rc.2, >= 20.0.0-next.0, < 20.3.22, >= 19.0.0-next.0, < 19.2.23, <= 18.2.14, >= 21.0.0-next.0, < 21.2.15 22.0.0-rc.2, 20.3.22, 19.2.23, 21.2.15
  10. Alta · 6.1 CVE-2026-46417 >= 22.0.0-next.0, < 22.0.0-next.12, >= 21.0.0-next.0, < 21.2.13, >= 20.0.0-next.0, < 20.3.21, >= 19.0.0-next.0, < 19.2.22, <= 18.2.14 22.0.0-next.12, 21.2.13, 20.3.21, 19.2.22
  11. Alta CVE-2026-41423 >= 22.0.0-next.0, < 22.0.0-next.8, >= 21.0.0-next.0, < 21.2.9, >= 20.0.0-next.0, < 20.3.19, >= 19.0.0-next.0, < 19.2.21, <= 18.2.14 22.0.0-next.8, 21.2.9, 20.3.19, 19.2.21
  12. Alta CVE-2025-59052 >= 16.0.0-next.0, < 18.2.14, >= 20.0.0-next.0, < 20.3.0, >= 19.0.0-next.0, < 19.2.15, >= 21.0.0-next.0, < 21.0.0-next.3 18.2.14, 20.3.0, 19.2.15, 21.0.0-next.3

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.