Dependências seguras
Um grande percentual do código presente em aplicativos modernos é composto pelas bibliotecas e pelas dependências escolhidas por você, o desenvolvedor. Essa é uma prática comum que economiza tempo e dinheiro. No entanto, a desvantagem é que você agora é responsável por esse código, mesmo que outras pessoas o tenham escrito, porque você o usou em seu projeto. Se um pesquisador (ou pior, um invasor) descobrir uma vulnerabilidade em uma dessas bibliotecas de terceiros, a mesma falha provavelmente também estará presente em seu aplicativo.
O uso de componentes com vulnerabilidades conhecidas é um grande problema em nosso setor. Trata-se de um problema tão grande que chegou à lista do OWASP das 10 piores vulnerabilidades de aplicativos Web, mantendo a 9ª posição por vários anos.
Acompanhar as vulnerabilidades de segurança conhecidas
O problema que temos é saber quando um problema é descoberto. É evidente que manter as bibliotecas e as dependências atualizadas (a 4ª na lista) ajudará, mas é uma boa ideia acompanhar as vulnerabilidades identificadas que podem afetar o aplicativo.
Importante
Quando um sistema tem uma vulnerabilidade conhecida, é muito mais provável que também tenha exploits disponíveis, um código que as pessoas podem usar para atacar esses sistemas. Caso um exploit se torne público, é fundamental que todos os sistemas afetados sejam atualizados imediatamente.
A Mitre é uma organização sem fins lucrativos que mantém a lista de Vulnerabilidades e Exposições Comuns. Essa lista é um conjunto publicamente pesquisável de vulnerabilidades conhecidas de segurança cibernética em aplicativos, bibliotecas e estruturas. Caso você encontre uma biblioteca ou um componente no banco de dados CVE, ele terá vulnerabilidades conhecidas.
A comunidade de segurança envia um problema quando uma falha de segurança é encontrada em um produto ou um componente. Cada problema publicado recebe uma ID e contém a data de descoberta, uma descrição da vulnerabilidade e as referências a soluções alternativas publicadas ou a instruções do fornecedor sobre o problema.
Como verificar se há vulnerabilidades conhecidas em seus componentes de terceiros
Você pode colocar uma tarefa diária em seu telefone para verificar essa lista, mas, felizmente, existem muitas ferramentas para permitir verificar se nossas dependências são vulneráveis. Você pode executar essas ferramentas em sua base de código, ou melhor ainda, adicioná-las ao pipeline de CI/CD para verificar problemas automaticamente como parte do processo de desenvolvimento.
- Verificação de dependência do OWASP, que tem um plug-in do Jenkins
- Snyk, que é gratuito para repositórios de software livre no GitHub
- Black Duck, que é usado por muitas empresas
- Retire.js, uma ferramenta para verificar se as bibliotecas JavaScript estão desatualizadas; pode ser usada como um plug-in para várias ferramentas, incluindo o Burp Suite
Você também pode usar para isso algumas ferramentas feitas especificamente para a análise de código estático.
- Verificação de código de segurança
- Puma Scan
- PT Application Inspector
- Plug-in de dependência do Apache Maven
- Sonatype
- E muito mais...
Para obter mais informações sobre os riscos envolvidos no uso de componentes vulneráveis, visite a página do OWASP dedicada a este tópico.
Resumo
Ao usar bibliotecas ou outros componentes de terceiros como parte do aplicativo, você também está assumindo os riscos que eles podem ter. A melhor maneira de reduzir esse risco é garantir que você esteja usando somente componentes que não têm vulnerabilidades conhecidas associadas a eles.