@angular/platform-server: Redirección abierta mediante URLs relativas al protocolo en Server-Side Rendering (SSR)
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 invocarrouter.navigateByUrl) aceptan/.//evil.testo/.;/(//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
ServerPlatformLocationsolo 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-servery@angular/ssr. - Estructuras de rutas con parámetros: El enrutador contiene rutas parametrizadas con comodines o segmentos secundarios (por ejemplo,
/:tenantque 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:
GET /.;/(//evil.test) HTTP/1.1
Host: example.com
Respuesta:
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.121.2.2520.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:
- 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; } - Sanear cabeceras de redirección:
Asegúrese de que los proxies perimetrales o pasarelas de API reescriban o no permitan cabeceras de respuesta
Locationrelativas 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
Locationcon rutas relativas al protocolo provenientes del upstream de SSR.
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida 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
- https://github.com/angular/angular/security/advisories/GHSA-w739-gvwx-grc3
- https://github.com/angular/angular/pull/71077
- https://github.com/angular/angular/pull/71078
- https://github.com/angular/angular/pull/71079
- https://github.com/angular/angular/commit/450af9c813c7660b9bd91e5635f705ee3ed7b32a
- https://github.com/angular/angular/commit/83944fc8c50e86be90e8ec4184cd15002b5af262
- https://github.com/angular/angular/commit/928dcfd2582152655b5559509d057bf6a5a19521
- https://github.com/angular/angular/commit/d7d81e189d227108c3b9d39178dbb7389f6f970d
- https://github.com/angular/angular
- https://github.com/angular/angular/releases/tag/v20.3.33
- https://github.com/angular/angular/releases/tag/v21.2.25
- https://github.com/angular/angular/releases/tag/v22.2.1
- 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.
- 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
- 2025: 1
- 2026: 11
-
@angular/platform-server: Redirección abierta mediante URLs relativas al protocolo en Server-Side Rendering (SSR) esta entrada
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.