El 84% de los sitios web está afectado por vulnerabilidades XSS de jQuery
30 de octubre de 2019
0 minutos de lecturaTe damos la bienvenida al informe de Snyk sobre el estado de la seguridad de los frameworks de JavaScript en 2019. En esta publicación, analizaremos las vulnerabilidades de seguridad encontradas en otros proyectos del ecosistema frontend.
Después de analizar Angular y React como frameworks principales de JavaScript, haremos un breve repaso de algunos frameworks de JavaScript y CSS: Vue.js, jQuery y Bootstrap.
Seguridad de jQuery
jQuery revolucionó el desarrollo web hace una década, pero desde entonces este campo ha seguido evolucionando gracias a tecnologías para aplicaciones de una sola página como Angular y React. Dicho esto, según W3Techs, que realiza encuestas periódicas y publica informes sobre el uso de tecnologías web, jQuery se utiliza en el 73% de los sitios web que analizó en agosto de 2019.
Un estudio de Snyk de 2017 refuerza esta conclusión: informó que el 77% de los sitios utiliza al menos una biblioteca de JavaScript vulnerable y señaló que jQuery estaba presente en el 79% de las 5.000 URL principales de Alexa. Si aún no te convence, las descargas del módulo npm de jQuery sumaron 120.641.977 solo en los últimos 12 meses.
En total, registramos seis vulnerabilidades de seguridad que afectan a jQuery en todas sus versiones hasta la fecha: cuatro vulnerabilidades de Cross-Site Scripting de gravedad media, una vulnerabilidad de contaminación de prototipos de gravedad media y, por último, una vulnerabilidad de denegación de servicio de gravedad baja. Si no usas jQuery 3.4.0 o una versión posterior, publicada recientemente el 10 de abril de 2019, estás usando una versión vulnerable de jQuery.

Como jQuery suele encontrarse en aplicaciones web como componente heredado, también es importante entender los patrones de uso de sus versiones y su estado de seguridad.
W3Techs informa que, entre todos los sitios web que usan jQuery, la versión 1.x predomina con una cuota del 83,4%, mientras que las versiones 2 y 3 quedan muy atrás, con aproximadamente el 8% del uso total de jQuery. Al analizar las vulnerabilidades de seguridad conocidas y relacionarlas con las versiones de jQuery, descubrimos que cuatro vulnerabilidades de Cross-Site Scripting de gravedad media afectan a jQuery v1. Esto puede ser preocupante si consideramos su cuota de mercado del 83,4%, especialmente para quienes no utilizan análisis de composición de software para encontrar y corregir vulnerabilidades en sus componentes de código abierto.
Muchos sitios y aplicaciones web también usan bibliotecas de jQuery para ampliar sus funcionalidades y recurren a bibliotecas mantenidas por la comunidad para hacerlo.
Encontramos 13 bibliotecas vulnerables de jQuery, que se muestran en la siguiente tabla. Estas son nuestras observaciones:
Tres bibliotecas de jQuery son versiones maliciosas de módulos de la comunidad de código abierto. Como no podemos determinar las descargas de las versiones vulnerables específicas —esa información no está disponible en el registro de npm—, destacamos jquery.js, un paquete malicioso que registró 5.444 descargas en los últimos 12 meses.
Las bibliotecas de jQuery jquery-mobile, jquery-file-upload y jquery-colorbox suman más de 340.000 descargas en los últimos 12 meses, pese a incluir vulnerabilidades de ejecución de código arbitrario y Cross-Site Scripting, y no contar con una ruta de actualización para corregirlas.
Nombre de la biblioteca de jQuery | Tipo de vulnerabilidad | Fecha de divulgación | Gravedad de la vulnerabilidad | Descargas anuales del módulo | ¿Hay una corrección? |
Paquete malicioso | 2019-08-06 | alta | 322 | n/a | |
Cross-Site Scripting | 2019-07-03 | media | 17,898 | ✅ | |
Paquete malicioso | 2019-06-07 | alta | 232 | n/a | |
Cross-Site Scripting | 2019-05-04 | media | 54,991 | ❌ | |
Ejecución de código arbitrario | 2018-11-02 | baja | 19,442 | ❌ | |
Cross-Site Scripting | 2018-08-19 | media | 79,982 | ✅ | |
Denegación de servicio mediante expresiones regulares (ReDoS) | 2018-02-13 | alta | 3,069 | ✅ | |
Cross-Site Scripting | 2017-11-14 | media | 268,513 | ❌ | |
Paquete malicioso | 2017-08-02 | alta | 5,444 | n/a | |
Cross-Site Scripting | 2016-07-21 | alta | 8,934,683 | ✅ | |
Falsificación de solicitudes entre sitios (CSRF) | 2015-06-24 | media | 5,763,710 | ✅ | |
Cross-Site Scripting | 2013-04-18 | media | 1,831,735 | ✅ | |
Falsificación de solicitudes entre sitios (CSRF) | 2012-11-26 | media | 8,934,683 | ✅ | |
Cross-Site Scripting | 2012-08-01 | media | 54,991 | ✅ | |
Cross-Site Scripting | 2010-09-02 | media | 8,934,683 | ✅ |
*los paquetes maliciosos no tienen información sobre correcciones.
Recomendamos ampliamente descargar la versión completa del informe en formato digital. También publicamos las siguientes secciones generales como artículos de blog:
El estado de la seguridad de los frameworks de JavaScript en 2019
Comparación lado a lado de las vulnerabilidades de seguridad de Angular y React en 2019
Angular vs. React: el riesgo de seguridad de las dependencias indirectas
Comparación de las prácticas de codificación segura de React y Angular
Las vulnerabilidades de seguridad XSS de jQuery afectan al 84% de todos los sitios web
Comienza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.
