Skip to main content

Otimize a priorização com contexto aprofundado no nível da aplicação

Escrito por

Michael Komraz

28 de julho de 2020

0 minutos de leitura

Priorizar a correção de vulnerabilidades está cada vez mais difícil, tanto pelo aumento constante no número de vulnerabilidades quanto pela complexidade de avaliar o risco que elas representam. As vulnerabilidades não são todas iguais, e o nível de risco varia conforme uma série de fatores objetivos e subjetivos. Uma priorização eficaz depende da avaliação precisa desses fatores.

O CVSS é amplamente usado para enfrentar esse desafio, mas tem algumas limitações inerentes. É verdade que o CVSS v3 amplia a pontuação-base e pode incluir métricas temporais e ambientais. Mas ainda falta o contexto da aplicação: o CVSS não considera as diversas dependências e interações específicas entre a aplicação e as bibliotecas e funções de código aberto que ela chama.

É nesse contexto que entra o Reachable Vulnerabilities da Snyk.

Por que a “alcançabilidade” é importante

A maioria das soluções analisa sua aplicação para identificar quais dependências de código aberto estão sendo incluídas nela. Em seguida, essa lista é comparada a um banco de dados de vulnerabilidades para gerar um relatório das dependências vulneráveis.

Mas uma vulnerabilidade em uma parte do seu código não significa necessariamente que a biblioteca inteira esteja vulnerável. Em muitos casos, os desenvolvedores usam apenas uma pequena parte de uma biblioteca ou pacote. Por isso, há uma boa chance de que a função vulnerável não seja “alcançada” durante o fluxo de execução da aplicação. Em geral, as vulnerabilidades que não são alcançadas não comprometem a aplicação como um todo e, portanto, representam menos risco do que aquelas que são alcançadas.

Diagrama que mostra código próprio e dependências de código aberto, com funções vulneráveis marcadas como alcançáveis ou não alcançáveis.

O Reachable Vulnerabilities da Snyk analisa a fundo o fluxo de código da aplicação para determinar se ela “alcança” uma função vulnerável. Os resultados dessa análise podem ser usados para priorizar com mais eficácia.

Reachable Vulnerabilities em números

Estamos sempre aprimorando os algoritmos e as heurísticas que alimentam o Reachable Vulnerabilities, mas podemos afirmar com segurança que o contexto oferecido pelo Reachable Vulnerabilities reduz drasticamente o número de vulnerabilidades que exigem atenção urgente. Nos 300 projetos Java Maven que testamos, apenas 2% das vulnerabilidades identificadas eram realmente alcançáveis pela aplicação. Outras 20% foram consideradas potencialmente alcançáveis.

Isso não significa que as 78% restantes sejam todas falsos positivos. Pelo contrário: essas vulnerabilidades também precisam ser triadas e avaliadas com a ajuda da Priority Score da Snyk e de outros recursos de priorização. Mas usar o Reachable Vulnerabilities como contexto ajuda você a identificar rapidamente quais vulnerabilidades devem ser corrigidas primeiro.

Como funciona?

Para determinar se uma vulnerabilidade é alcançável, usamos vários algoritmos para criar um grafo de chamadas do código proprietário da aplicação e de suas dependências de código aberto. O grafo de chamadas mapeia todos os caminhos de execução da aplicação e nos dá as informações necessárias para entender se eles de fato chegam à parte vulnerável da dependência.

As diversas dependências e funções mapeadas no grafo de chamadas são correlacionadas com o Snyk Intel Vulnerability Database, o banco de dados de vulnerabilidades mais abrangente, preciso e atualizado do mercado. Com conteúdo selecionado por especialistas, enriquecido e acionável sobre dependências e suas funções vulneráveis, o banco de dados garante resultados precisos na análise do Reachable Vulnerabilities.

A experiência da Snyk em segurança é essencial quando criar um grafo de chamadas não basta para determinar a alcançabilidade com precisão. Em algumas aplicações, por exemplo, a árvore de dependências usada durante a execução é afetada por fatores externos. Em outras, vulnerabilidades consideradas alcançáveis são inofensivas, enquanto algumas precisam ser priorizadas como se fossem alcançáveis, independentemente do grafo de chamadas. O Reachable Vulnerabilities aplica técnicas heurísticas e lógica de análise adicionais para garantir resultados precisos.

Teste seus projetos com o Reachable Vulnerabilities

Para testar projetos com o Reachable Vulnerabilities, use a CLI da Snyk e adicione o parâmetro --reachable-vulns ao comando snyk test (observação: os projetos precisam ser compilados antes da execução do teste):

snyk test --reachable-vulns

A Snyk inicia a análise. Nos bastidores, a Snyk cria o grafo de chamadas da aplicação e o correlaciona com os dados de vulnerabilidades da Snyk.

Quando o processo termina, os resultados do teste são exibidos na CLI. Eles incluem o número de dependências testadas, o número de vulnerabilidades identificadas e quantas delas foram consideradas alcançáveis. O nível de alcançabilidade aparece ao lado da vulnerabilidade, e o caminho do código da aplicação até a função vulnerável é exibido abaixo.

Terminal exibindo os resultados do Snyk test para um projeto Maven, incluindo 59 problemas, 59 caminhos vulneráveis e duas vulnerabilidades alcançáveis.

Há três níveis de alcançabilidade:

  • Alcançável: foi identificado um caminho claro da aplicação até a função vulnerável. Essa vulnerabilidade deve ser corrigida primeiro.

  • Potencialmente alcançável: foram encontradas evidências parciais de que a função vulnerável pode ser alcançável. Essa vulnerabilidade deve ser analisada.

  • Sem informações: não há informações suficientes para determinar se a vulnerabilidade é ou não alcançável.

Priorize com o Reachable Vulnerabilities

A interface da Snyk facilita a priorização com o Reachable Vulnerabilities em um ou vários projetos. Para usar o Reachable Vulnerabilities na interface da Snyk, execute o seguinte comando da CLI:

snyk monitor --reachable-vulns

Na página do projeto na interface da Snyk, os indicadores de alcançabilidade são adicionados aos cartões de problemas, junto com os outros indicadores usados na priorização: gravidade e maturidade de exploração. Novos filtros do Reachable Vulnerabilities permitem filtrar rapidamente as vulnerabilidades de acordo com a alcançabilidade:

Tela de detalhes de uma vulnerabilidade no Snyk, mostrando um problema de alta gravidade alcançável e filtros para vulnerabilidades alcançáveis.

Para ajudar você a corrigir rapidamente as vulnerabilidades alcançáveis, a Snyk também exibe informações detalhadas sobre o caminho exato pelo qual a aplicação chama a função vulnerável.

Página de detalhes de um problema de segurança que mostra uma vulnerabilidade de desserialização de alta gravidade no Jackson databind, com informações sobre exploração e correção

Os dados de alcançabilidade também estão disponíveis na página Reports > Issues para facilitar o monitoramento e o acompanhamento das vulnerabilidades ao longo do tempo.

Painel de rastreamento de problemas com filtros de prioridade, maturidade da exploração, status, possibilidade de correção e alcançabilidade.

Comece agora!

Uma avaliação precisa e rápida do risco de vulnerabilidades é essencial para uma priorização eficaz. A precisão, por sua vez, depende do acesso a informações contextuais sobre os fatores objetivos e subjetivos relacionados a uma vulnerabilidade. Esse tipo de contexto é difícil de obter.

Ao analisar a fundo o caminho de execução da aplicação e correlacioná-lo com os dados de segurança abrangentes da Snyk, o Reachable Vulnerabilities oferece o contexto aprofundado no nível da aplicação necessário para avaliar riscos com precisão e priorizar de acordo.

O Reachable Vulnerabilities está disponível em versão beta para todos os planos pagos da Snyk, a partir do Standard, e apenas para projetos Java (Maven). Cadastre-se para criar uma conta gratuita e experimente!

Comece a jogar Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.

Leia mais

blog feature snyk container custom base recommendations
Blog

Conheça o Evo Agentic AppSec: segurança que acompanha o ritmo do desenvolvimento com IA

O desenvolvimento impulsionado por IA está avançando mais rápido do que os fluxos de trabalho de segurança tradicionais. O AppSec agentivo da Snyk usa agentes de segurança para encontrar, corrigir e verificar vulnerabilidades continuamente, enquanto as pessoas definem os critérios.

blog feature ai violet
Blog

VulnBump: agentes de IA conseguem corrigir dependências vulneráveis sem quebrar o build?

O VulnBump testa agentes de IA em 307 atualizações reais de dependências. Uma correção só é considerada válida se eliminar a vulnerabilidade e mantiver o build e os testes funcionando.

Blog

Modelos de ponta encontraram as vulnerabilidades. Só o atacante encontrou as cadeias.

A análise estática encontrou as falhas, mas só os testes de ataque em aplicações ativas provaram como elas poderiam ser encadeadas para causar invasões. Uma comparação entre Evo COS, Claude Security e Claude Code Security.