Media

@angular/common: Fuga del token XSRF por discrepancia en el análisis de URL en el cliente HTTP de Angular (Corrección incompleta para CVE-2025-66035)

  • Publicada: 20.10.2026
  • Actualizado: 20.10.2026 23:22

Una corrección incompleta para GHSA-58c5-g7wp-6w37 (CVE-2025-66035) en el cliente HTTP de @angular/common (HttpClient) permite que los tokens de Cross-Site Request Forgery (XSRF) se filtren a dominios de origen cruzado controlados por un atacante cuando las solicitudes utilizan URL que aprovechan discrepancias de procesamiento entre expresiones regulares y el analizador de URL WHATWG del navegador.

Descripción técnica

Para solucionar CVE-2025-66035, xsrfInterceptorFn introdujo una expresión regular (const ABSOLUTE_URL_REGEX = /^(?:https?:)?\/\//i) para detectar y omitir URL absolutas y relativas al protocolo antes de adjuntar el encabezado X-XSRF-TOKEN.

Sin embargo, los navegadores resuelven las URL de solicitud pasadas a fetch() y XMLHttpRequest.open() mediante el analizador de URL WHATWG. Para los esquemas http: y https:, el estándar WHATWG URL realiza varias normalizaciones antes de resolver la autoridad/origen:

  • Las barras invertidas (\) se tratan como barras inclinadas hacia adelante (/) — p. ej., /\evil.example/x, \\evil.example/x, \/evil.example/x, https:\\evil.example/x, https:/\evil.example/x.
  • Los caracteres de control C0 y espacios iniciales y finales (<= 0x20) se eliminan — p. ej., ' //evil.example/x', '\0//evil.example/x', '\x1f//evil.example/x'.
  • Los caracteres de tabulación ASCII (\t), salto de línea (\n) y retorno de carro (\r) se eliminan en cualquier parte de la entrada — p. ej., '/\t/evil.example/x', '/\n/evil.example/x', 'htt\tps://evil.example/x'.

Dado que estas URL no coinciden con /^(?:https?:)?\/\//i, xsrfInterceptorFn las trata como URL relativas del mismo origen y adjunta el encabezado X-XSRF-TOKEN, mientras que el navegador resuelve y envía la solicitud al host de origen cruzado (evil.example).

Nota: Angular 21.0.3+ y 22.x reemplazaron la expresión regular con una comparación de origen WHATWG new URL(req.url, locationOrigin) en #65683 y ya no estaban afectadas. Sin embargo, la rama LTS 20.3.x conservó la expresión regular hasta 20.3.34.

Impacto

La fuga del token elude la protección XSRF integrada de Angular en las versiones afectadas, lo que permite a un atacante capturar el encabezado X-XSRF-TOKEN válido del usuario si su servidor permite la solicitud y el encabezado personalizado a través de CORS. Una vez obtenido, el atacante puede realizar ataques de Cross-Site Request Forgery (CSRF) contra la sesión de la víctima.

Condiciones previas del ataque

  1. La aplicación Angular de la víctima debe tener la protección XSRF habilitada (habilitada por defecto en HttpClient).
  2. El atacante debe ser capaz de hacer que la aplicación envíe una solicitud HTTP que cambie el estado (p. ej., POST, PUT, DELETE, PATCH) a una URL que controle (como /\attacker.example/api o //attacker.example/api).

Parches

El problema se soluciona analizando y comparando el origen de la URL de la solicitud con el origen actual de la aplicación utilizando el constructor estándar URL (new URL(req.url, locationOrigin)).

  • 21.0.3 (y todas las versiones de 22.x)
  • 20.3.34

Mitigaciones alternativas

Si no es posible actualizar inmediatamente a una versión corregida:

  • Valide y normalice las URL de solicitudes salientes utilizando new URL(url, window.location.origin) y verifique que parsedUrl.origin === window.location.origin antes de pasar URL dinámicas a solicitudes mutables de HttpClient.
  • Evite pasar URL no confiables o controladas por el usuario a métodos mutables de HttpClient.

Qué hacer

Actualice a las versiones corregidas:

  • 21.0.3 (y todas las versiones posteriores de 22.x)
  • 20.3.34

La vulnerabilidad se resuelve analizando y comparando el origen de la URL de la solicitud con el origen actual de la aplicación mediante URL (new URL(req.url, locationOrigin)).

Si no puede actualizar de inmediato:

  • Valide y normalice las URL salientes usando new URL(url, window.location.origin) y verifique que parsedUrl.origin === window.location.origin antes de enviar URL dinámicas a solicitudes de tipo mutable con HttpClient.
  • Evite pasar URL no confiables o provistas por el usuario a los métodos mutables de HttpClient.

Software afectado

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

PlataformaPaqueteVersiones vulnerablesCorregida en
Paquete de npm @angular/common >= 21.0.0, < 21.0.3, >= 20.0.0, < 20.3.34, <= 19.2.25 21.0.3, 20.3.34

Referencias

Puntuación CVSS -
Vector CVSS
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Debilidad (CWE)
CWE-201, CWE-359
Plataforma
npm
Paquete
@angular/common
Publicada
20.10.2026
Actualizado
20.10.2026 23:22

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

OSV / GitHub Advisory Database - GHSA-jfgx-762w-99vr - CC BY 4.0

Historial de vulnerabilidades: @angular/common

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
8
Primera → última
11.2025 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Alta 6
  • Media 2

Divulgaciones por año

  1. 2025: 1
  2. 2026: 7
  1. @angular/common: Fuga del token XSRF por discrepancia en el análisis de URL en el cliente HTTP de Angular (Corrección incompleta para CVE-2025-66035) esta entrada
    Media CVE-2026-111753 >= 21.0.0, < 21.0.3, >= 20.0.0, < 20.3.34, <= 19.2.25 21.0.3, 20.3.34
  2. Media · 4.0 CVE-2026-88059 >= 22.0.0, < 22.1.1, >= 21.0.0, < 21.2.20, >= 20.0.0, < 20.3.28, <= 19.2.25 22.1.1, 21.2.20, 20.3.28
  3. Alta CVE-2026-68945 >= 22.0.0-next.0, < 22.0.2, >= 21.0.0-next.0, < 21.2.19, >= 20.0.0-next.0, < 20.3.27, <= 19.2.25 22.0.2, 21.2.19, 20.3.27
  4. Alta · 7.5 CVE-2026-54268 >= 22.0.0-next.0, < 22.0.1, >= 21.0.0-next.0, < 21.2.17, >= 20.0.0-next.0, < 20.3.25, <= 19.2.25 22.0.1, 21.2.17, 20.3.25
  5. Alta · 6.1 CVE-2026-54266 >= 22.0.0-next.0, < 22.0.1, >= 21.0.0-next.0, < 21.2.17, >= 20.0.0-next.0, < 20.3.25, <= 19.2.25 22.0.1, 21.2.17, 20.3.25
  6. Alta · 6.1 CVE-2026-50171 >= 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
  7. Alta · 7.5 CVE-2026-50170 >= 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
  8. Alta CVE-2025-66035 >= 21.0.0-next.0, < 21.0.1, >= 20.0.0-next.0, < 20.3.14, < 19.2.16 21.0.1, 20.3.14, 19.2.16

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.