O salto de 5.045 vulnerabilidades registradas em janeiro para 10.740 em agosto de 2026 não significa, por si só, que os ataques contra software dobraram. Segundo o Eurisko.com.br, que repercute dados do Grupo de Inteligência de Ameaças do Google (GTIG), parte relevante do aumento está ligada à maneira como vulnerabilidades são identificadas e registradas — especialmente em ecossistemas de código aberto. Para quem desenvolve, a diferença entre mais registros e mais risco explorável é essencial: confundir as duas coisas gera tanto pânico quanto falsa sensação de segurança.
O que o recorde de vulnerabilidades de software realmente mede
O número divulgado conta registros publicados, não ataques bem-sucedidos, sistemas comprometidos ou falhas igualmente graves. Um registro pode descrever uma vulnerabilidade explorável remotamente, mas também uma condição restrita, uma falha difícil de reproduzir ou um problema sem impacto relevante para determinada aplicação.
O GTIG informou que o volume passou de 10 mil em julho e chegou a 10.740 em agosto. A fonte também destaca cerca de 5 mil registros do ano com a expressão “Linux Kernel” na descrição. Segundo o GTIG, nenhum desses registros resultou em um zero-day explorado na prática. Isso não prova que o kernel esteja livre de risco; mostra que o total bruto não basta para estimar exploração real.
Também é importante separar três coisas que aparecem misturadas em muitas manchetes:
- Vulnerabilidade: uma condição no software que pode afetar confidencialidade, integridade ou disponibilidade.
- Registro: uma entrada pública que descreve a falha, muitas vezes associada a um identificador CVE.
- Exploração: o uso efetivo da falha para comprometer um sistema ou executar uma ação não autorizada.
Uma alta em registros pode refletir mudanças nos processos de catalogação, maior cobertura de projetos ou automação. Pode também refletir a descoberta de problemas reais. O dado isolado não permite distinguir essas causas com precisão. Para tomar decisões de engenharia, precisamos cruzar o registro com evidências de impacto e com o contexto do sistema afetado.
CVE, CVSS e exploração: indicadores diferentes para perguntas diferentes
Na minha experiência, um erro recorrente em times de desenvolvimento é tratar o identificador CVE como se fosse um diagnóstico completo. O CVE ajuda a identificar e discutir uma vulnerabilidade, mas não responde sozinho se a aplicação está exposta, se existe um caminho de ataque viável ou se a falha está sendo explorada.
O CVSS tenta estimar a gravidade técnica. É útil para priorizar, mas uma pontuação alta não significa automaticamente que a vulnerabilidade está sendo usada por atacantes. Da mesma forma, uma pontuação menor não torna uma falha irrelevante se ela estiver exposta em um serviço crítico ou houver exploração conhecida.
Para complementar a análise, equipes podem consultar fontes e sinais diferentes:
- CISA KEV: catálogo de vulnerabilidades conhecidas por terem sido exploradas. A presença é um sinal forte para acelerar a correção, embora a ausência não prove que ninguém esteja explorando a falha.
- EPSS: estima a probabilidade de exploração de uma vulnerabilidade em determinado horizonte. É uma estimativa, não uma confirmação de ataque.
- OSV: organiza avisos de segurança por ecossistema e pacote, o que pode facilitar a verificação de dependências open source.
- Contexto do ambiente: exposição à internet, permissões, configuração, versão instalada e existência de mitigação podem mudar a prioridade.
Esses recursos respondem a perguntas diferentes. CVSS ajuda a entender gravidade técnica; KEV indica exploração conhecida; EPSS ajuda a estimar probabilidade; ferramentas de dependências ajudam a localizar versões afetadas. Nenhum substitui a análise do caminho real entre uma entrada controlada por um atacante e a parte vulnerável do sistema.
Por que o código aberto pode ampliar o volume de registros
Projetos open source costumam ter muitos mantenedores, distribuidores e usuários downstream. Uma falha em uma biblioteca pode aparecer em várias distribuições, pacotes ou versões. Além disso, identificadores e avisos podem ser criados por processos diferentes, e informações inicialmente incompletas podem ser refinadas depois.
Isso cria desafios de deduplicação e interpretação. Dois avisos podem se referir à mesma causa técnica, mas a pacotes ou versões diferentes. Em outros casos, uma falha pode afetar uma biblioteca indireta que a equipe nem sabia que estava usando. O nome “Linux Kernel” em uma descrição também não é prova suficiente de que todos os sistemas Linux estejam vulneráveis: versão, configuração e correções aplicadas fazem diferença.
É aqui que a análise de inventário importa. Um scanner pode encontrar um pacote com versão vulnerável, mas o resultado precisa ser comparado com o artefato realmente implantado. Dependências de desenvolvimento, dependências transitivas e imagens antigas em produção podem alterar o cenário. Cuidado com a armadilha de corrigir o que aparece no painel sem confirmar se a versão está presente no deploy — ou de ignorar um pacote porque ele não está declarado diretamente no arquivo de dependências.
Como priorizar vulnerabilidades sem perseguir cada alerta
Uma política operacional útil combina pelo menos quatro dimensões: gravidade técnica, evidência de exploração, exposição do ativo e possibilidade de mitigação. Não é uma fórmula universal, mas evita que a equipe transforme uma lista extensa de alertas em uma fila sem critério.
Eu começaria por vulnerabilidades exploradas publicamente em serviços expostos, sobretudo quando afetam componentes com privilégios altos ou dados sensíveis. Em seguida, avaliaria falhas graves que atingem serviços importantes, mesmo sem evidência pública de exploração. Por fim, trataria problemas com menor exposição em ciclos normais, sem perder de vista obrigações de compliance ou requisitos internos.
Também separaria correção de mitigação. Atualizar para uma versão corrigida costuma ser a solução preferível, mas pode exigir testes de compatibilidade. Enquanto a atualização não é viável, desabilitar uma funcionalidade vulnerável, restringir acesso ou aplicar uma regra de proteção pode reduzir o risco. Mitigação, porém, não deve virar desculpa para deixar uma dependência sem responsável e sem prazo de revisão.
Na Prática: um fluxo de triagem para dependências
- Confirme o ativo: identifique serviço, versão implantada, ambiente e exposição. Não priorize apenas com base no nome de um pacote no repositório.
- Verifique o alcance: descubra se a dependência é direta ou transitiva e se o caminho vulnerável é usado pela aplicação.
- Enriqueça o alerta: confira gravidade, versões afetadas, correções disponíveis e evidências de exploração em fontes confiáveis.
- Escolha a resposta: atualize, aplique mitigação temporária ou documente por que o alerta não se aplica. Defina responsável e prazo.
- Teste e monitore: rode testes automatizados, gere novamente o inventário e confirme que a versão corrigida chegou ao ambiente de produção.
Para um projeto Node.js com arquivo de lock, por exemplo, uma verificação básica pode fazer parte do pipeline:
name: Dependency security check
on:
pull_request:
push:
branches: [main]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm audit --audit-level=high
Esse exemplo falha o job quando o npm encontra alertas de gravidade alta ou superior, conforme os dados disponíveis para a auditoria. O comando é um ponto de partida, não uma avaliação completa de risco. Ajuste a versão do Node.js à versão suportada pelo projeto e valide o pipeline no seu ambiente. Também não recomendo usar npm audit fix --force automaticamente: a opção pode introduzir atualizações incompatíveis e transformar uma correção de segurança em uma falha de produção.
Em repositórios com outras linguagens, use ferramentas adequadas ao ecossistema e ao formato de lockfile. O importante é produzir um inventário reproduzível, identificar dependências transitivas e fazer a análise chegar ao mesmo artefato que será implantado. Um alerta ignorado sem registro é difícil de diferenciar de um alerta avaliado e aceito conscientemente.
Erros comuns ao interpretar um salto nas vulnerabilidades
- Comparar contagens como se fossem incidentes: CVEs publicados não equivalem a invasões. Para medir incidentes, são necessárias evidências de comprometimento.
- Priorizar só pelo CVSS: pontuação é um sinal, não substitui exposição, exploração conhecida e impacto no negócio.
- Ignorar alertas porque “não há exploit”: a ausência de evidência pública não garante que a falha não possa ser explorada.
- Atualizar sem testar: uma correção pode alterar APIs, comportamento ou compatibilidade. Use testes e implantação gradual quando o risco operacional justificar.
- Tratar o scanner como autoridade final: scanners dependem de inventário e metadados. Podem gerar falsos positivos, perder dependências empacotadas ou não conhecer a configuração real.
- Aplicar exceções permanentes: se um alerta não se aplica, documente a justificativa, o escopo e uma data para reavaliação.
O outro extremo também é perigoso: concluir que, como muitos registros são resultado de processos de catalogação, o crescimento pode ser ignorado. A conclusão correta é mais cuidadosa. O volume bruto merece atenção, mas a resposta deve ser guiada por evidências, inventário atualizado e exposição concreta.
O que muda no dia a dia de quem programa
Para desenvolvedores, o principal ganho é incorporar segurança ao fluxo normal de entrega, em vez de depender de uma varredura ocasional antes do lançamento. Isso inclui manter lockfiles, revisar atualizações, reduzir dependências não utilizadas e saber quais componentes chegam à imagem ou pacote final.
Para quem mantém serviços, vale estabelecer prazos diferentes por risco e registrar as decisões. Uma vulnerabilidade explorada em um componente exposto não deveria esperar pela próxima janela mensal. Já um alerta sem caminho de execução na aplicação pode exigir investigação, não necessariamente uma atualização emergencial às cegas.
O dado do GTIG, conforme reportado pelo Eurisko.com.br, é um lembrete sobre a qualidade das métricas de segurança. Contar registros é simples; entender risco exige contexto. Eu prefiro um processo que explique por que uma falha foi priorizada, mitigada ou aceita a um painel cheio de números sem dono.
FAQ sobre vulnerabilidades de software em 2026
Dobrar o número de vulnerabilidades significa que os ataques também dobraram?
Não. O número de registros mede divulgações catalogadas, não ataques observados. Para avaliar exploração, é preciso consultar evidências específicas, como catálogos de vulnerabilidades exploradas, relatórios de ameaças e telemetria do próprio ambiente.
Uma vulnerabilidade com CVSS alto deve ser corrigida imediatamente?
Deve ser investigada e priorizada, mas a urgência depende também da exposição, do ativo afetado, da exploração conhecida e das opções de mitigação. Em um serviço público e crítico, a resposta tende a ser mais rápida do que em um componente isolado e não utilizado.
Se minha distribuição Linux está atualizada, ainda preciso conferir os avisos do kernel?
Sim, mas verifique a versão e as orientações da distribuição. Distribuições podem aplicar correções sem mudar a versão principal aparente do software. Não conclua que está vulnerável — ou corrigido — apenas comparando o número de versão de forma superficial.
Posso ignorar um alerta de uma dependência transitiva que não uso diretamente?
Não sem verificar o caminho de dependências e o pacote final. Uma dependência transitiva pode ser carregada e executada por outra biblioteca. Se a falha não for alcançável ou o pacote não estiver no artefato implantado, registre a análise e reavalie quando as dependências mudarem.
Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.