Seu site está vulnerável? Vamos resolver isso!
5 de março de 2020
0 minutos de leituraSe você administra um site, seja uma aplicação SaaS completa ou um blog pequeno — criado com Gatsby, WordPress ou uma configuração independente no GitHub Pages — uma das principais preocupações que você precisa mitigar são as vulnerabilidades de segurança.
As vulnerabilidades de segurança em bibliotecas JavaScript de terceiros estão entre as principais preocupações, já que JavaScript é a linguagem de programação mais popular e a preferida pelos desenvolvedores para criar sites. O uso de código aberto e módulos criados por colaboradores de comunidades open source está crescendo e não dá sinais de que vai parar tão cedo — o que também levanta questões importantes de segurança.
Recentemente, em outubro de 2019, a Snyk divulgou que 84% de todos os sites são afetados por vulnerabilidades de XSS no jQuery, com base nos dados de pesquisa apresentados no relatório de segurança dos frameworks JavaScript de 2019.
Isso, porém, não chega a surpreender. Relatórios anteriores da Snyk já haviam revelado problemas semelhantes, com vulnerabilidades de segurança em JavaScript amplamente disseminadas pela internet:
Relatório de março de 2017: 77% dos sites usam pelo menos uma biblioteca JavaScript vulnerável
Relatório de novembro de 2017: 77% de 433.000 sites usam bibliotecas JavaScript vulneráveis
Na verdade, o problema se agrava quando nós, desenvolvedores e responsáveis por sites, não atualizamos as versões das dependências JavaScript instaladas. Isso cria um risco desnecessário quando são descobertas vulnerabilidades de segurança em uma versão que usamos.
Recentemente, a Cloudflare publicou uma postagem no blog sobre questões de segurança identificadas a partir de dados coletados por seus serviços de Rede de Distribuição de Conteúdo (CDN) e concluiu que as bibliotecas JavaScript quase nunca são atualizadas depois de instaladas.
Então, seu site está vulnerável?
Uma maneira simples de reduzir o risco de segurança causado por dependências de terceiros é identificar as bibliotecas e suas versões, consultar um banco de dados de vulnerabilidades confiável e, em seguida, atualizar as dependências vulneráveis para versões corrigidas.
É mais fácil do que parece. Para tornar acessíveis e fáceis de detectar as informações sobre bibliotecas vulneráveis em um site, criei um projeto open source chamado is-website-vulnerable. O projeto usa o Snyk Vulnerability Database de vulnerabilidades de segurança em interfaces web, além da integração com Lighthouse da Snyk.
Use o is-website-vulnerable para encontrar vulnerabilidades de segurança conhecidas publicamente nas bibliotecas JavaScript da interface do seu site:

É uma aplicação de linha de comando (CLI) que você executa para testar seu site com facilidade.
Meu site está vulnerável. Como adiciono testes de segurança para evitar que isso aconteça de novo?
Fazer uma análise dinâmica de segurança de um site, automatizada ou manual, costuma consumir muito tempo e ter um custo alto. Além disso, é preciso ter experiência relevante em segurança e conhecer o contexto da aplicação para configurar corretamente o teste no site ou na aplicação web.
Uma ferramenta como is-website-vulnerable é uma boa maneira de identificar rapidamente possíveis vulnerabilidades de JavaScript em bibliotecas desatualizadas ou sem manutenção. Com ela, você adiciona testes rápidos que recomendam a atualização das versões vulneráveis para reduzir o risco geral de segurança.
Se você usa o GitHub Actions, aproveite o is-website-vulnerable para analisar seu site automaticamente em um pipeline de integração contínua e interromper a compilação caso ele esteja usando versões vulneráveis do JavaScript.
Para isso, crie o arquivo .github/workflows/is-website-vulnerable.yml com a URL do site que você quer analisar:
Se você usa uma ferramenta de CI diferente do GitHub Actions, use a imagem Docker do is-website-vulnerable ou, como alternativa, instale a CLI e execute-a diretamente na etapa de CI.
Meu site está vulnerável. Como resolvo isso?
Saber que há uma vulnerabilidade de segurança em uma dependência JavaScript que você usa é um ótimo primeiro passo. Mas conseguir corrigi-la e receber correções de segurança automatizadas e proativas no repositório do seu código-fonte é outro nível!
A Snyk é gratuita para projetos open source e até para pacotes privados (com alguns limites de uso). Conecte seu repositório de código-fonte à Snyk para monitorar as dependências open source usadas no seu projeto. Melhor ainda: quando há uma vulnerabilidade em um projeto monitorado pela Snyk que pode ser corrigida, ela cria proativamente uma solicitação pull no repositório para sugerir uma atualização.
As vantagens de usar as correções de segurança do Snyk Open Source são:
A Snyk identifica a atualização mínima necessária para corrigir uma vulnerabilidade e avisa você quando há risco de quebrar o código.
Acelere a triagem de vulnerabilidades transitivas com as sugestões de correção da Snyk para a dependência direta.
Quando atualizar causa muita interrupção (ou não é uma opção), resolva o problema com rapidez e precisão usando os patches proprietários da Snyk, desenvolvidos em colaboração com o mantenedor.

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.
