O GitHub abriu nesta quarta-feira (28) uma prévia pública de análise de alcance para alertas do Dependabot. O recurso procura caminhos entre o código de projetos JavaScript ou TypeScript e funções vulneráveis em suas dependências, acrescentando evidências à fila de correções.
Segundo o anúncio do GitHub, a prévia está disponível no Enterprise Cloud, inclusive com residência de dados. Não exige licença adicional de Advanced Security e não cobra pelos minutos de GitHub Actions usados na análise. Essa gratuidade dentro da oferta não significa disponibilidade em todos os planos.
O que o recurso procura no código
O Dependabot já identifica dependências associadas a avisos de vulnerabilidade. A novidade tenta responder a uma pergunta adicional: existe um caminho de chamadas da aplicação até a função afetada?
A documentação de análise de alcance descreve o uso de CodeQL e de dados curados sobre as funções vulneráveis. O resultado é anexado aos alertas existentes; o mecanismo não equivale a descobrir uma nova vulnerabilidade em cada execução.
Por exemplo, uma biblioteca pode estar instalada porque oferece vários recursos, enquanto a aplicação utiliza apenas parte deles. Encontrar uma versão vulnerável no arquivo de dependências e demonstrar que o código chega à função afetada são evidências diferentes. A nova análise acrescenta a segunda verificação, com os limites de uma avaliação estática.
Isso também a diferencia do controle de licenças antes do merge: aquele recurso aplica regras de licenciamento a mudanças de dependências. Aqui, o objeto é a relação entre código executável e vulnerabilidades já registradas.
Os quatro resultados possíveis
| Resultado | Leitura para a triagem |
|---|---|
| Reachable | A análise encontrou pelo menos um caminho até a função vulnerável. |
| Potentially reachable | Não foi possível descartar a chamada; merece prioridade junto dos casos alcançáveis. |
| Unreachable | A execução terminou sem encontrar um caminho. É um sinal para priorização, não um certificado de segurança. |
| Reachability unavailable | Não houve resultado utilizável, por exemplo por falha, tempo excedido ou falta de suporte. |
Uma função alcançável não é necessariamente explorável por um atacante. A exploração pode depender dos dados que chegam à chamada, de configuração ou de outras condições. O caminho encontrado ajuda a investigar essas condições, mas não as demonstra automaticamente.
O inverso também importa: ausência de caminho identificado não autoriza fechar o alerta só por esse motivo. Uma mudança no código ou no aviso de segurança pode alterar a avaliação seguinte. O próprio GitHub orienta manter os outros sinais de triagem, como gravidade, contexto de produção e probabilidade de exploração.
Nos casos alcançáveis, a documentação prevê até cinco caminhos de exemplo. Eles ajudam a localizar o uso da biblioteca, mas não representam uma lista exaustiva de todos os caminhos possíveis.
Requisitos e ativação
A prévia exige projetos JavaScript ou TypeScript com arquivo de lock do npm, Yarn ou pnpm. O processamento usa runners hospedados pelo GitHub; runners próprios não estão incluídos nessa etapa. Alguns monorepositórios e projetos com múltiplos manifestos ainda podem ficar fora da cobertura.
O recurso vem desligado. A documentação de configuração indica o caminho pelas configurações de segurança avançada do repositório. Os alertas do Dependabot precisam estar habilitados antes da análise de alcance.
Administradores de repositório, responsáveis por segurança e proprietários de organizações ou empresas podem controlar a configuração conforme suas permissões. Para aplicar a opção a vários repositórios, o GitHub oferece configurações de segurança organizacionais ou empresariais. Isso evita depender de uma alteração manual em cada projeto, sem dispensar a escolha dos repositórios abrangidos.
Como o resultado entra na fila de correções
Uma equipe pode usar o novo sinal para ordenar a investigação: começar pelos caminhos identificados, examinar os casos incertos e continuar tratando os demais conforme exposição e criticidade. Esse é um uso ilustrativo da informação, não uma política universal que substitua o conhecimento do sistema.
Os resultados aparecem nos alertas, nos filtros de repositórios e organizações e na API REST. Não encerram nem descartam avisos automaticamente. A primeira execução pode levar de minutos a horas; novas análises ocorrem diariamente enquanto houver alertas abertos. Durante a prévia, execuções que ultrapassarem três horas podem deixar resultados indisponíveis.