Otimize a priorização com contexto aprofundado no nível da aplicação
Michael Komraz
28 de julho de 2020
0 minutos de leituraPriorizar 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.

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.

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:

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.

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.

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.


