← Todos los checks
SeguridadSeveridad típica: Alto

Detector de librerías vulnerables

Detecta versiones vulnerables o sin soporte de jQuery, AngularJS y Bootstrap con CVEs de XSS conocidos.

Qué comprueba

Este escáner identifica las versiones de librerías front-end habituales como jQuery, AngularJS y Bootstrap que carga tu web. Marca las que son versiones vulnerables o que ya no reciben soporte y tienen fallos de XSS conocidos y documentados.

Por qué importa

Usar una librería con vulnerabilidades públicas es una puerta abierta bien conocida: los atacantes buscan justo esas versiones porque el fallo ya está publicado. Un XSS a través de una librería antigua puede permitir robar sesiones o inyectar contenido en tu web.

Cómo se arregla

Actualiza esas librerías a una versión soportada y sin vulnerabilidades conocidas, comprobando primero que no rompe nada. Si una librería ya no recibe mantenimiento, como AngularJS, plantea migrar a una alternativa moderna que sí lo tenga.

Cómo funciona esta comprobación

Scanaris reúne el HTML de tu página principal y descarga hasta quince de sus scripts: todos los que se sirven desde tu propio dominio y, de los externos, los que llevan "jquery" en la ruta. En ese texto busca las cabeceras de versión que las librerías incluyen al principio del fichero. Tres casos abren hallazgo, todos de severidad media. jQuery anterior a 3.5.0: vulnerabilidades XSS conocidas (CVE-2020-11022 y CVE-2020-11023) en la forma en que procesa HTML. AngularJS, cualquier versión 1.x: el framework llegó al fin de su vida en enero de 2022 y no recibe parches de seguridad. Bootstrap 3.x anterior a 3.4.1 o 4.x anterior a 4.3.1: XSS a través de atributos data- en tooltips y popovers (CVE-2019-8331). Solo marca cuando encuentra el número de versión escrito; si el fichero está minificado sin cabecera, no adivina.

Por qué importa

Una vulnerabilidad de XSS en una librería que carga toda tu web es una puerta abierta en todas las páginas a la vez: un atacante que consiga meter texto donde la librería lo interprete como HTML (un comentario, un nombre de perfil, un parámetro de URL) ejecuta JavaScript con la sesión de quien lo ve. Para estas tres librerías los fallos son públicos desde hace años, con ejemplos de explotación publicados, y las herramientas automáticas los prueban de serie. El caso de AngularJS es distinto pero peor a largo plazo: no es que tenga un fallo concreto, es que el siguiente que aparezca no se va a corregir nunca.

Por qué pasa

Porque funcionan. Una jQuery 1.12 de 2016 sigue haciendo lo que hacía y nadie la toca por miedo a romper algo. Los temas y plugins de WordPress son el caso típico: el núcleo de WordPress lleva jQuery 3.7 desde la versión 5.6, pero un tema antiguo puede cargar su propia copia. También aparece en plantillas HTML compradas, en paneles de administración heredados y en proyectos donde la IA copió un ejemplo con una URL de CDN de hace años.

Cómo arreglarlo

  • jQuery: actualiza a la última 3.x (la 3.7 es la rama actual). Cambia la URL del CDN o el fichero local, y carga jquery-migrate durante unos días para que te avise en consola de las llamadas antiguas que haya que adaptar. Prueba los formularios, los menús y cualquier plugin de jQuery que uses.
  • Bootstrap: si estás en 3.x, pasa a 3.4.1, que es compatible; si estás en 4.x, a 4.6.2. Son versiones de mantenimiento sin cambios de diseño. Saltar a 5.x es una migración mayor porque elimina jQuery y renombra clases; planifícala aparte.
  • AngularJS: no hay versión segura a la que subir. Las opciones son migrar (a Angular moderno, Vue o React, por partes si la app es grande), contratar soporte extendido comercial mientras tanto, o aislar la app: sin datos sensibles, detrás de autenticación y con una CSP estricta.
  • WordPress: actualiza el tema y los plugins; si uno de ellos sigue cargando una jQuery vieja, cámbialo. No desactives la jQuery del núcleo para "ahorrar": es la versión buena.
  • En general: instala las librerías con npm en lugar de copiar URL de CDN, y activa las alertas de dependencias de GitHub o npm audit para enterarte de la siguiente.

Comprueba que está arreglado

curl -s https://tudominio.com | grep -oE 'src="[^"]*(jquery|bootstrap|angular)[^"]*"'
curl -s URL_DEL_SCRIPT | head -c 400 | grep -oE '(jQuery|Bootstrap|AngularJS)[^0-9]{0,30}v?[0-9]+\.[0-9]+\.[0-9]+'

La primera te dice qué ficheros carga tu web; la segunda, con la URL de cada uno, la versión que declaran. Esperado: jQuery 3.5.0 o superior, Bootstrap 3.4.1, 4.3.1 o superior, y ningún AngularJS.

Preguntas frecuentes

¿Solo se detectan estas tres librerías?

De momento, sí: son las que concentran la mayoría de las vulnerabilidades explotadas en el front-end de webs reales. Para el resto de tus dependencias, npm audit o las alertas de GitHub cubren lo que un escaneo externo no puede ver.

Uso jQuery 1.12 pero no inserto HTML de usuarios. ¿Estoy a salvo?

Mientras nadie pase texto no confiable por .html(), .append() o similares, el fallo concreto no se dispara. Pero es difícil garantizarlo en toda la web y en todos los plugins, y la actualización a 3.x suele costar una tarde. Mientras tanto, una CSP estricta limita el daño; la revisa CSP débil.

¿Y si la librería viene de un CDN?

Entonces, además de actualizarla, fija la versión y añade integrity para que nadie pueda cambiarla por debajo; lo explica integridad de subrecursos.

Compruébalo en tu web

Escanea tu web gratis y mira si este y otros 44 checks pasan, con un prompt de arreglo por cada fallo.

Escanear mi web gratis

Checks relacionados