O que é uma vulnerabilidade? Uma fraqueza que atacantes exploram
Uma vulnerabilidade é uma fraqueza no software, na configuração ou no design que um atacante pode explorar para comprometer a confidencialidade, a integridade ou a disponibilidade.
Uma vulnerabilidade é qualquer falha que dá a um atacante um ponto de apoio: um bug de código, uma configuração incorreta, uma dependência desatualizada ou uma fraqueza de design. O software moderno herda vulnerabilidades das bibliotecas das quais depende tanto quanto do seu próprio código. O CI/CD é onde muitas delas são detectadas, por meio de scanning, antes de chegarem à produção.
De onde vêm as vulnerabilidades
- Falhas de código: injeção, verificações ausentes, defaults inseguros.
- Falhas de dependência: problemas conhecidos em bibliotecas de terceiros.
- Configuração incorreta: portas abertas, buckets públicos, permissões fracas.
Vulnerabilidade versus exploit
Uma vulnerabilidade é a fraqueza; um exploit é a técnica que tira proveito dela. Nem toda vulnerabilidade é facilmente explorável, mas tratar a explorabilidade como desculpa para ignorar uma falha é arriscado, já que as técnicas de ataque melhoram com o tempo.
Rastreando vulnerabilidades conhecidas
Vulnerabilidades públicas recebem identificadores CVE e pontuações de severidade, catalogadas em bancos de dados. Os scanners comparam suas dependências com esses bancos de dados para sinalizar problemas conhecidos, e é por isso que manter as dependências atualizadas é uma prática de segurança fundamental.
Vulnerabilidades no CI/CD
O pipeline é o lugar natural para encontrar vulnerabilidades cedo: scanning de dependências, análise estática, scanning de imagens de container e detecção de secrets rodam todos automaticamente. Detectar uma falha no CI é muito mais barato do que corrigi-la após uma violação.
A dimensão da cadeia de suprimentos
Grande parte do seu risco vive em dependências que você não escreveu. Um pacote transitivo vulnerável pode comprometer seu build ou seu app em execução. Fazer o scan da árvore de dependências completa, não apenas das dependências diretas, é essencial.
Da detecção à correção
Encontrar uma vulnerabilidade só é útil se levar à ação. Os pipelines podem falhar um build em achados de alta severidade, abrir pull requests de correção automatizados e rastrear a remediação, transformando resultados de scan em falhas fechadas em vez de relatórios ignorados.
Principais conclusões
- Uma vulnerabilidade é uma fraqueza explorável em código, configuração ou dependências.
- Grande parte do risco é herdada de bibliotecas de terceiros, então faça o scan da árvore completa.
- O scanning no CI detecta vulnerabilidades cedo, muito mais barato do que corrigir após uma violação.