Não é nenhum segredo que a utilização de bibliotecas externas contribui para a redução do tempo de desenvolvimento de um sistema, entretanto, as bibliotecas externas também podem torná-lo mais vulnerável. Por esse motivo, é muito importante manter as atualizações das bibliotecas em dia, para ter as correções de segurança. Um estudo recente, revelou que 37% dos 75 mil primeiros sites listados no ranking da Alexa, possuem ao menos uma vulnerabilidade, e quase 10% possuem ao menos duas. Das vulnerabilidades encontradas nesses sites, 36,7% são de bibliotecas importadas do JQuery, 40,1% do Angular, e mais de 85% são bibliotecas do Handlebars e YUI3. O estudo também revelou que 26% dos 500 primeiros sites listados no ranking da Alexa, utilizam bibliotecas vulneráveis, um dado muito preocupante.
O grupo de pesquisa da Northeastern University, liderados por Tobias Lauinger e Abdelberi Chaabane, construiu um catálogo com todas as versões de 72 bibliotecas open source. Com base nas estatísticas do Bower e Wappalyzer, iniciaram a busca pelas bibliotecas que estavam sendo utilizadas pelos sites analisados. Além disso, os pesquisadores desenvolveram uma extensão para o Google Chrome capaz de construir uma árvore de dependências, utilizada para mostrar porque uma biblioteca externa foi utilizada, se foi importada diretamente ou indiretamente por algum plugin de propagandas, rastreamento ou mídias sociais. A pesquisa analisou mais de 133 mil sites, incluindo os primeiros 75 mil sites listados no ranking da Alexa, e outros 75 mil escolhidos aleatoriamente do domínio .com. Esse método de seleção ajudou a comparar sites de grande porte com sites menos populares, e obteve resultados bem semelhantes.
Além dos resultados já mencionados, a pesquisa conseguiu demonstrar que:
- Existe um hábito de usar bibliotecas muito ultrapassadas, com a diferença de tempo entre a versão utilizada e a versão mais recente de 1.177 dias, ou seja, mais de três anos de diferença nos sites listados na Alexa;
- Geralmente, as vulnerabilidades são inseridas por componentes de propaganda ou social media widgets;
- Um fator de risco adicional é a duplicação de bibliotecas externas, que ocasionam comportamentos incertos de segurança.
A pesquisa concluiu que é difícil remediar a situação atual, devido à falta de correções de segurança compatíveis com as versões anteriores das bibliotecas, e a forma como o ecossistema em JavaScript é organizado:
… não existe um banco de dados confiável de vulnerabilidades, os fornecedores das bibliotecas não possuem uma lista de emails para contato, poucas informações ou até nenhuma informação sobre a segurança nas notas de release, e geralmente, é difícil saber quais versões de uma determinada biblioteca são afetadas por uma vulnerabilidade conhecida.
Ainda assim, essa pesquisa parece estar na direção correta para a correção desses problemas, além de ser uma ótima leitura para desenvolvedores em geral, e principalmente, para os desenvolvedores interessados em JavaScript.