Introdução
O uso de componentes vulneráveis pode comprometer nossas aplicações em diversos casos cenários, incluindo vulnerabilidades a nível de FrontEnd Web, Mobile e Backend, bem como infraestrutura (AWS, K8S, …).
Cenário Vulnerável
Estamos desenvolvendo nossa aplicação e realizamos a instalação de uma biblioteca sem verificar se ela possui alguma vulnerabilidade.
<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.15.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.15.0</version> </dependency></dependencies>O time de segurança acaba detectando algumas tentativas de ataques maliciosos nos mecanismos de Firewall, onde o atacante tentou executar o código de um Malware (provavelmente um ransomware) em nossa infraestrutura via uma falha na aplicação.

Ao investigamos um pouco mais e a vulnerabilidade explorada foi causada por uma vulnerabilidade chamada Log4Shell, encontrada na biblioteca Log4J na versão 2.15.0 e registrada na CVE-2021-44228.
Riscos
Ao não identificarmos dependências com vulnerabilidades, corremos os riscos de:
- Expor formas de atacantes externos explorarem vulnerabilidades em nossas aplicações e infraestrutura.
- Um ataque que permita ser executado dentro de nosso ecossistema (como log4shell) podem gerar vazamentos de dados caso as aplicações envolvidas tenham acesso a informações confidenciais e sensíveis.
- Caso a vulnerabilidade tenha criticidade suficiente, criminosos podem desencadear um ataque de ransomware.
Como Mitigar
Antes de instalar alguma biblioteca, verifique se a mesma possui vulnerabilidades conhecidas.
Caso estas vulnerabilidades sejam HIGH ou CRITICAL, devemos buscar outra alternativa ou versão.
Github Advisory Database
Podemos usar o Github Advisory Database para pesquisar:

Google OSV
Também é possível usar o Google OSV:
# em package.name usar groudId:artifactIdcurl -d \ '{"version": "2.15.0", "package": {"name": "org.apache.logging.log4j:log4j-core", "ecosystem": "Maven"}}' \ "https://api.osv.dev/v1/query"curl -d \ '{"version": "1.0.3", "package": {"name": "Auth0-WCF-Service-JWT", "ecosystem": "NuGet"}}' \ "https://api.osv.dev/v1/query"curl -d \ '{"version": "1.1.0", "package": {"name": "angular-expressions", "ecosystem": "npm"}}' \ "https://api.osv.dev/v1/query"Ferramentas Nativas
Alguns ecossistemas já possuem ferramentas nativas para verificar por dependências vulneráveis.
dotnet list package --vulnerablenpm auditpip-audit