Dezembro 2021. Sexta-feira à tarde. Pesquisador de segurança chinês publica detalhes de Log4Shell — vulnerability crítica em log4j-core, biblioteca Java de logging. Score CVSS 10.0 (máximo). Exploit trivial: incluir uma string em qualquer log produzido pela aplicação, e o atacante consegue execução remota de código.
A questão que matou times de plantão no mundo todo: "a gente usa log4j?". Resposta honesta para a maioria: ninguém sabia. Direto, raramente. Indireto via dependency tree, em quase todos os projetos Java. Dependency Vulnerability é o sinal que mede esse risco como número, não como adrenalina.
Bibliotecas externas representam 80%+ do código que roda em produção na maioria das aplicações modernas. CVEs em dependências (Log4Shell, Polyfill.io, event-stream) atingem times que não escreveram a vulnerability — mas continuam responsáveis pelo incidente. SCA (Software Composition Analysis) detecta CVEs conhecidos; SBOM documenta o que você usa; supply chain attestations verificam que você usa o que pensa que usa.
Spring Boot, Apache Kafka, Elasticsearch — todos tinham log4j em algum nível. Times passaram o final de semana auditando árvores de dependência. Empresas que não tinham SBOM levaram dias só para descobrir onde a vulnerability estava ativa. Empresas que tinham SBOM tinham relatório em horas — patch em vez de pânico.
“Você não escreveu o bug. Mas continua responsável pelo incidente.
Quando você adiciona npm install ou pip install, está aceitando três tipos de risco que se confundem em conversa mas precisam ser distinguidos:
A maioria dos times monitora só o primeiro. O segundo aparece em janela larga (6 meses–2 anos). O terceiro é onde os incidents recentes mais impactantes aconteceram (Polyfill, event-stream, ua-parser-js).
Software Composition Analysis (SCA) é a categoria de ferramenta que analisa dependências. Mecânica: lê manifest (package.json, pom.xml, requirements.txt, go.mod), resolve dependency tree completa, cruza cada package@version com bases de CVE (NVD, GitHub Advisory Database), reporta matches.
Onde SCA puro falha:
^4.17.10 significa qualquer 4.x acima de 4.17.10 — versão real instalada depende do lockfile.SBOM (Software Bill of Materials) é a lista completa de tudo que está em produção: pacote, versão, hash, licença, mantenedor. Formato padronizado (SPDX, CycloneDX) que ferramentas processam automaticamente.
Por que isso importa virou tema executivo desde 2021: Executive Order 14028 dos EUA exige SBOM para fornecedores federais. UE seguiu com Cyber Resilience Act. Bancos brasileiros incluem em RFP de fornecedores.
"Estamos investigando se Log4Shell nos afeta" — comunicado evasivo, dias para resposta.
"Log4Shell afeta 12 sistemas internos, patches deployados, 0 produtos cliente expostos" — comunicado com fato, em horas.
A diferença: tempo de resposta a CVE público cai de dias para horas. Em incident grave, isso é a diferença entre reputação intacta e manchete.
Os últimos 5 anos mostraram que o vetor de risco mais crescente não está na versão vulnerável — está no caminho que o pacote tomou até você:
reacct, lodahs, colors-js esperando typo de instalaçãonpm install, antes mesmo do app rodarDefesas contra supply chain são diferentes das defesas contra CVE: SLSA (framework de cadeia de build verificável), Sigstore/Cosign (assinatura criptográfica), lockfiles + integrity hashes, permissions/sandboxing de install (--ignore-scripts), dependency pinning + manual review. Não dá para resolver tudo. Dá para reduzir surface drasticamente.
A IA generativa acelera o problema da dependência. Quando você pede "função para parsear XML", o LLM frequentemente sugere bibliotecas — às vezes obscuras, às vezes desatualizadas, às vezes obsoletas. Pior: a IA não consulta CVE database antes de sugerir.
lodash@4.17.10 (vulnerable) porque era a versão estável quando o modelo foi treinado.react-router-redux-saga-thunk que não existe, mas alguém pode publicar.SCA + dependency review automatizam o que a IA esqueceu. Cada PR gerado por IA que toca package.json ou pom.xml aciona scan automático. Versão vulnerável volta com erro. Pacote desconhecido entra no fluxo de aprovação. A IA escreve mais rápido; o pipeline impede que o que ela escreve introduza CVE conhecido.
--ignore-scripts por default em CI, audit de novas dependências antes de adicionar.Você cobriu os três sinais individuais — Hotspots, Vulnerabilities, Dependencies. Cada um tem mecânica própria, mecanismo de detecção próprio, ROI próprio. O último post da série fecha a virada: por que olhar os três juntos importa mais do que olhar um por vez — e como o pilar Code Security do método SQA integra os sinais em diagnóstico operacional.
Post 04 Visão Holística — Pilar Code Security →A Codurance acompanha times de engenharia que querem instrumentar a saúde de segurança do código sem virar AppSec. Ajudamos Tech Leads e Staff Engineers a configurar SCA, gerar SBOM em cada release, definir política de atualização defensável e tratar supply chain como camada separada de risco.
Se você quer aplicar essas práticas no seu time, entre em contato hoje.
[PARÁGRAFO_BIOGRAFICO_AUTOR]