84% de todos os sites são afetados por vulnerabilidades de XSS no jQuery
30 de outubro de 2019
0 minutos de leituraBoas-vindas ao relatório de 2019 da Snyk sobre a segurança de frameworks JavaScript. Nesta publicação, vamos analisar as vulnerabilidades de segurança encontradas em outros projetos do ecossistema frontend.
Depois de analisar Angular e React, dois dos principais frameworks JavaScript, vamos fazer uma breve avaliação de alguns frameworks JavaScript e CSS: Vue.js, jQuery e Bootstrap.
Segurança do jQuery
O jQuery revolucionou o desenvolvimento web há uma década, mas, desde então, esse campo evoluiu ainda mais com tecnologias para aplicações de página única, como Angular e React. Ainda assim, segundo a W3Techs, que realiza pesquisas regularmente e publica relatórios sobre o uso de tecnologias web, o jQuery estava presente em 73% dos sites analisados em agosto de 2019.
Um estudo da Snyk de 2017 reforça esse dado: ele apontou que 77% dos sites usam pelo menos uma biblioteca JavaScript vulnerável e observou que o jQuery foi detectado em 79% dos 5.000 principais URLs da Alexa. Se você ainda não está convencido, o módulo jQuery no npm teve 120.641.977 downloads somente nos últimos 12 meses.
No total, identificamos seis vulnerabilidades de segurança que afetam o jQuery em todas as versões lançadas até hoje: quatro vulnerabilidades de Cross-Site Scripting de gravidade média, uma vulnerabilidade de poluição de protótipo de gravidade média e, por fim, uma vulnerabilidade de negação de serviço de baixa gravidade. Se você não usa o jQuery 3.4.0 ou posterior, lançado recentemente, em 10 de abril de 2019, está usando uma versão vulnerável do jQuery.

Como o jQuery costuma ser encontrado em aplicações web como um componente legado, também é importante entender os padrões de uso de suas versões e o estado de segurança delas.
A W3Techs informa que, entre todos os sites que usam jQuery, a versão 1.x predomina, com 83,4% de participação; as versões 2 e 3 ficam bem atrás, com cerca de 8% do uso total do jQuery. Ao analisar as vulnerabilidades de segurança conhecidas e mapeá-las para as versões do jQuery, descobrimos que quatro vulnerabilidades de Cross-Site Scripting de gravidade média afetam o jQuery v1. Isso pode ser preocupante, considerando sua participação de 83,4% no mercado, especialmente para quem não usa análise de composição de software para encontrar e corrigir vulnerabilidades em componentes de código aberto.
Muitos sites e aplicações web também usam bibliotecas jQuery para ampliar os recursos do jQuery e recorrem a bibliotecas mantidas pela comunidade para isso.
Identificamos 13 bibliotecas jQuery vulneráveis, listadas na tabela a seguir, e destacamos as seguintes observações:
Três bibliotecas jQuery são versões maliciosas de módulos de código aberto da comunidade. Como não é possível contabilizar os downloads das versões realmente vulneráveis, pois esses dados não estão disponíveis no registro do npm, vale destacar o jquery.js: um pacote malicioso que teve 5.444 downloads nos últimos 12 meses.
As bibliotecas jQuery jquery-mobile, jquery-file-upload e jquery-colorbox somam mais de 340.000 downloads nos últimos 12 meses, apesar de incluírem vulnerabilidades de execução arbitrária de código e Cross-Site Scripting, sem oferecer uma forma de atualização para corrigi-las.
Nome da biblioteca jQuery | Tipo de vulnerabilidade | Data de divulgação | Gravidade da vulnerabilidade | Downloads anuais do módulo | Há correção? |
Pacote malicioso | 2019-08-06 | alta | 322 | não disponível | |
Cross-Site Scripting | 2019-07-03 | média | 17,898 | ✅ | |
Pacote malicioso | 2019-06-07 | alta | 232 | não disponível | |
Cross-Site Scripting | 2019-05-04 | média | 54,991 | ❌ | |
Execução arbitrária de código | 2018-11-02 | baixa | 19,442 | ❌ | |
Cross-Site Scripting | 2018-08-19 | média | 79,982 | ✅ | |
Negação de serviço por expressão regular (ReDoS) | 2018-02-13 | alta | 3,069 | ✅ | |
Cross-Site Scripting | 2017-11-14 | média | 268,513 | ❌ | |
Pacote malicioso | 2017-08-02 | alta | 5,444 | não disponível | |
Cross-Site Scripting | 2016-07-21 | alta | 8,934,683 | ✅ | |
Falsificação de solicitação entre sites (CSRF) | 2015-06-24 | média | 5,763,710 | ✅ | |
Cross-Site Scripting | 2013-04-18 | média | 1,831,735 | ✅ | |
Falsificação de solicitação entre sites (CSRF) | 2012-11-26 | média | 8,934,683 | ✅ | |
Cross-Site Scripting | 2012-08-01 | média | 54,991 | ✅ | |
Cross-Site Scripting | 2010-09-02 | média | 8,934,683 | ✅ |
*pacotes maliciosos não têm informações sobre correções.
Recomendamos fortemente baixar a versão completa do relatório em formato digital. Também disponibilizamos as seguintes seções gerais em publicações no blog:
O estado da segurança dos frameworks JavaScript: relatório de 2019
Comparação lado a lado das vulnerabilidades de segurança do Angular e do React em 2019
Angular vs. React: o risco de segurança das dependências indiretas
Comparação das práticas de programação segura do React e do Angular
Vulnerabilidades de segurança de XSS no jQuery afetam 84% de todos os sites
Comece a jogar Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.
