As vulnerabilidades mais comuns no Maven Central e no npm
27 de junho de 2018
0 minutos de leituraA versão completa deste artigo foi publicada originalmente pela Snyk como guest post no blog da Cloud Foundry.
Neste post, vamos analisar os tipos de vulnerabilidade mais comuns em dois dos principais ecossistemas que monitoramos na nossa base de dados de vulnerabilidades: Maven Central e npm. A Snyk Vulnerability Database reúne vulnerabilidades de mais de 1.000.000 de pacotes open source que monitoramos e que usam Composer, Go, Maven Central, npm, NuGet, pip e Rubygems.
Em 2017, o número de vulnerabilidades publicadas nos ecossistemas que monitoramos atingiu um recorde histórico, com aumento de 83% em relação a 2016. Neste artigo, vamos falar sobre os tipos de vulnerabilidade mais comuns nos dois principais ecossistemas.

Nos posts de abril e maio, vamos analisar algumas dessas vulnerabilidades em mais detalhes para ver como elas podem ser exploradas.
JavaScript (npm)
1. Travessia de diretórios – Exemplo: o pacote st.
A vulnerabilidade mais comum no ecossistema npm é a travessia de diretórios. Ela costuma ocorrer quando um caminho relativo para um diretório é fornecido, mas não é validado. Sem essa validação, o caminho relativo informado pode apontar para um diretório pai e permitir o acesso a dados confidenciais. Por exemplo, uma abordagem frequentemente usada para explorar essa vulnerabilidade é usar entidades HTML, nas quais ‘.’ é representado por ‘%2E’. Nesses casos, uma solicitação para a seguinte URL, /%2E%2E/%2E%2E/%2E%2E/etc/password, faria com que /etc/passwd fosse exposto.
2. Recursos baixados por um protocolo inseguro – Exemplo: Chromedriver.
Essa vulnerabilidade permite que invasores realizem um ataque do tipo man-in-the-middle (MitM). Quando os recursos são baixados por um protocolo inseguro, um invasor pode interceptar a conexão e alterar os pacotes recebidos.
3. Cross-site scripting (XSS) – Exemplo: o pacote handlebars.
Os ataques XSS ocorrem quando um invasor engana o navegador de uma pessoa para que ele execute código JavaScript malicioso no próprio ambiente da vítima. Esses scripts podem roubar os cookies de sessão da pessoa no domínio, obter senhas ou dados de cartão de crédito digitados, extrair ou modificar conteúdo e realizar ou alterar ações em nome da pessoa — ações que normalmente seriam bloqueadas pela política de mesma origem do navegador. Para saber mais, confira Ataques XSS: a próxima onda.
Maven Central
1. Negação de serviço (DoS) – Exemplo: o processador de dados jackson.
Uma vulnerabilidade de negação de serviço esgota os recursos dos servidores de back-end e, com isso, afeta as solicitações de outras pessoas. Isso costuma acontecer pelo consumo de CPU, mas também pode envolver o preenchimento dos discos, da memória ou de outros recursos do servidor.
2. Execução arbitrária de código – Exemplo: a biblioteca Apache Struts.
A execução arbitrária de código ocorre quando um código malicioso enviado é executado em um servidor vulnerável. Muitas vezes, esse código chama comandos na máquina remota. Em geral, isso é resultado de outra vulnerabilidade, como uma vulnerabilidade de desserialização, no caso do Struts.
3. Cross-site scripting (XSS) – Exemplo: plugin do servidor Jenkins CI.
Consulte a descrição de XSS na seção sobre npm acima.
Para conhecer outras vulnerabilidades comuns nesses ecossistemas, leia o post completo no blog da Cloud Foundry.
Comece a resolver desafios de capture the flag
Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.
