Dependências Seguras
Uma grande porcentagem do código presente em aplicativos modernos é composta pelas bibliotecas e dependências escolhidas por você, o desenvolvedor. Esta é uma prática comum que poupa tempo e dinheiro. No entanto, a desvantagem é que agora você é responsável por esse código, mesmo que outros o tenham escrito, porque o usou em seu projeto. Se um pesquisador (ou pior, um hacker) descobrir uma vulnerabilidade em uma dessas bibliotecas de terceiros, a mesma falha provavelmente também estará presente em seu aplicativo.
A utilização de componentes com vulnerabilidades conhecidas é um grande problema na nossa indústria. É tão problemático que entrou para a lista dos 10 piores vulnerabilidades de aplicações web do OWASP, mantendo-se em #9 por vários anos.
Detetar vulnerabilidades de segurança conhecidas
O problema é saber quando é detetado um problema. Manter as nossas bibliotecas e dependências atualizadas certamente ajudará (posição n.º 4 na nossa lista!), mas é útil controlar as vulnerabilidades identificadas que podem afetar a sua aplicação.
Importante
Quando um sistema tem uma vulnerabilidade conhecida, é muito mais provável que também tenha exploits disponíveis, código que as pessoas podem usar para atacar esses sistemas. Se uma exploração for tornada pública, é crucial que todos os sistemas afetados sejam atualizados imediatamente.
Mitre é uma organização sem fins lucrativos que efetua a gestão da lista de Vulnerabilidades e Exposições Comuns. Esta lista é um conjunto publicamente pesquisável de vulnerabilidades conhecidas da cibersegurança em aplicações, bibliotecas e arquiteturas. Se encontrar uma biblioteca ou um componente na base de dados CVE, terá com certeza vulnerabilidades conhecidas.
A comunidade de segurança envia problemas quando uma falha de segurança é encontrada em um produto ou componente. A cada problema publicado é atribuído um ID e contém a data da deteção, uma descrição da vulnerabilidade e as referências a soluções alternativas publicadas ou instruções do fornecedor sobre o problema.
Como verificar se existem vulnerabilidades conhecidas nos seus componentes de terceiros
Poderia adicionar uma lista de tarefas diárias ao telemóvel e verificar essa lista, mas, felizmente para nós, existem muitas ferramentas que nos ajudam a verificar a vulnerabilidade das nossas dependências. Pode executar essas ferramentas no seu código base ou, melhor ainda, pode adicioná-las ao seu pipeline CI/CD para procurar automaticamente os problemas como parte do processo de desenvolvimento.
- Verificação de Dependências da OWASP com um plug-in Jenkins
- Snyk, uma ferramenta gratuita para repositórios open-source no GitHub
- Black Duck, uma ferramenta utilizada por muitas empresas
- Retire.js, uma ferramenta para verificar se as suas bibliotecas JavaScript estão desatualizadas; pode ser utilizada como plug-in para várias ferramentas, incluindo o Burp Suite
Você também pode usar algumas ferramentas feitas especificamente para análise de código estático para isso.
- Verificação de código de segurança
- Puma Scan
- PT Application Inspector
- Apache Maven Dependency Plugin
- Sonatype
- E muitas mais...
Para obter mais informações sobre os riscos envolvidos na utilização de componentes vulneráveis, visite a página da OWASP dedicada a este tópico.
Resumo
Quando você usa bibliotecas ou outros componentes de terceiros como parte do seu aplicativo, você também está assumindo quaisquer riscos que eles possam ter. A melhor maneira de reduzir estes riscos é garantir que apenas utiliza componentes que não possuem vulnerabilidades conhecidas associadas.