Pilar Code Quality - Visão geral
Você leu cinco posts sobre métricas individuais. Cada uma cobre uma dimensão. Mas a saúde do código não é uma métrica — é o conjunto. E é olhando o..
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.--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.
Você leu cinco posts sobre métricas individuais. Cada uma cobre uma dimensão. Mas a saúde do código não é uma métrica — é o conjunto. E é olhando o..
Você corrigiu uma cópia da lógica. Existem outras duas que você não sabia que existiam. Os testes da função "oficial" passam. O caminho que o usuário..
Os testes passam. O código compila. O comportamento "errado" nunca acontece, então ninguém abre incident. Mas o bug está latente — esperando o..
Junte-se à nossa newsletter para obter dicas de especialistas e estudos de caso inspiradores
Junte-se à nossa newsletter para obter dicas de especialistas e estudos de caso inspiradores