Concrete Logo
Hamburger button

Validando componentes vulneráveis com Maven

  • Blog
  • 15 de Março de 2017
Share

*Este post foi originalmente publicado no Medium pessoal do autor. Confira aqui.

Estamos na Semana da Segurança aqui na Concrete! E para continuar debatendo o tema, hoje vou mostrar aqui no Blog como configurar um projeto Maven para validarmos o uso de bibliotecas e frameworks vulneráveis, usando o OWASP Dependency Check.

Um pouco sobre o projeto OWASP Dependency Check

Dependency Check é uma solução open-source que leva em conta o OWASP Top 10 A-9 “Uso de Componentes com Vulnerabilidades Conhecidas.” Atualmente, a solução pode ser usada para escanear aplicações Java e .NET em busca de componentes vulneráveis conhecidos. Em fase experimental, devido às taxas de falsos positivos e falsos negativos, também pode ser usada para aplicações Python, Ruby, PHP (Composer) e Node.js.

O Dependency check pode ser utilizado como:

– Interface de linha de comando;
– Um plugin Maven;
– Uma tarefa Ant;
– Um plugin Gradle;
– Um plugin Jenkins;
– Um plugin SonarQube.

O motor central contém uma série de analisadores que inspecionam as dependências do projeto e coletam informações sobre elas. Essas evidências são usadas para identificar um Common Platform Enumeration (CPE). Se um CPE for identificado, uma listagem de entradas associadas de Common Vulnerability and Exposure (CVE) será apontada em um relatório.

Essa lista se atualiza automaticamente usando o National Vulnerability Database NVD Data Feeds, hospedado pelo NIST.

O problema de usar componentes vulneráveis conhecidos

Boa parte do código nas aplicações provêm de bibliotecas e frameworks, mas o risco de vulnerabilidades destes componentes é ignorada. Uma biblioteca vulnerável pode permitir que um invasor explore plenamente os privilégios da aplicação, incluindo acesso a dados, execução de transações, roubo de arquivos e comunicação com a Internet.

Com o aumento do uso de software livre, organizações tomaram conhecimento do importante problema que é o uso de componentes vulneráveis:

– A OWASP adicionou o A9 “Uso de Componentes com Vulnerabilidades Conhecidas” ao Top 10;
– O PCI 3.0 agora requer o uso de componentes seguros;
– O FS-ISAC emitiu um novo padrão para o uso de componentes de fonte aberta;
– MITRE CWE-937 foi adicionado para se concentrar em componentes com vulnerabilidades conhecidas.

Mãos à obra!

Para validar o uso de bibliotecas e frameworks vulneráveis, faça download deste projeto vulnerável que usei como exemplo neste site e abra o pom.xml no seu editor de texto favorito.

Adicione o seguinte trecho ao pom.xml:

Agora execute com o seguinte comando:

Na primeira execução ele pode demorar um pouco, pois estará realizando o processamento e download dos dados da NVD.

Espere o término do download e processamento dos dados para que o dependency check verifique as bibliotecas e frameworks.

Ao encontrar alguma biblioteca ou framework com vulnerabilidade conhecida, faça a atualização para que a aplicação fique mais segura. Por hoje é isso! Espero que tenha ajudado todos a manter o desenvolvimento de software mais seguro. Se você tiver alguma dúvida ou contribuição, aproveite os campos abaixo. Até a próxima!

É desenvolvedor e se preocupa com a segurança de suas aplicações? Quer trabalhar em uma empresa ágil de verdade? Envie seu currículo!