Como o Snyk Code prioriza vulnerabilidades usando o Priority Score
Frank Fischer
9 de novembro de 2021
0 minutos de leituraSe todas as vulnerabilidades parecem ter a mesma criticidade, as equipes de engenharia podem ficar sobrecarregadas e provavelmente perder tempo com os problemas errados. Por isso, é importante que as ferramentas de segurança para desenvolvedores ofereçam recursos claros e simples de priorização. Como você provavelmente já percebeu, Snyk Code exibe um Priority Score no canto superior direito do painel de visão geral. Ao passar o cursor sobre ele, aparece uma explicação de como a pontuação foi calculada. E, para priorizar mais rapidamente, você pode classificar os resultados pelo Priority Score no canto superior direito.

Mas o Priority Score é muito mais do que um número. Neste artigo, quero apresentar a lógica por trás da pontuação e dar algumas dicas práticas para você usá-la da melhor forma.
Observação: Como você verá, tomamos decisões específicas sobre como calcular a pontuação. Talvez você tivesse decidido de outra forma, e tudo bem! Não existe uma resposta perfeita, e estamos sempre abertos a feedback construtivo.
Noções básicas sobre o Priority Score
Para começar, o Priority Score é um número inteiro entre 1 e 1.000. Quanto maior o número, mais a Snyk Code recomenda que você corrija a vulnerabilidade. É muito importante observar que, embora os Priority Scores de Snyk Open Source ou Snyk Container sejam parecidos, não recomendamos comparar pontuações entre produtos. Compare apenas pontuações do Snyk Code entre si.
O Priority Score ajuda você a aumentar a segurança da sua aplicação com eficiência. Para a Snyk, isso se traduz em impacto e possibilidade de ação. A gravidade de uma vulnerabilidade é importante, mas precisamos ir além. Em impacto, avaliamos se uma correção pode resolver várias vulnerabilidades. Se puder, o Priority Score aumenta. Em possibilidade de ação, a Snyk Code determina o grau de facilidade para corrigir uma vulnerabilidade. Se a correção for rápida e simples, o Priority Score aumenta.
Com essa análise mais aprofundada, podemos priorizar as correções de um jeito que aproveite melhor o tempo da equipe de engenharia.
Como o Priority Score é calculado
Como função matemática, o Priority Score é calculado pela soma de pontos atribuídos com base em características do problema. A pontuação é recalculada sempre que um snapshot e uma análise são executados. Os Priority Scores podem variar, mesmo quando os snapshots são feitos em sequência rápida (vamos explicar o motivo adiante). A Snyk fornece todos os dados usados no cálculo do Priority Score em um arquivo JSON.
Observação: A descrição a seguir explica como o cálculo era feito em setembro de 2021. Estamos sempre pesquisando e aprendendo, e o cenário de cibersegurança muda rapidamente. Podemos decidir alterar o cálculo no futuro. Na Snyk, estamos sempre avaliando a lógica por trás dos Priority Scores para manter a eficácia de ponta em um cenário de ameaças em constante evolução.
Gravidade
A gravidade atribuída ao problema pelo mecanismo de análise corresponde a 50% do Priority Score total. Se o mecanismo atribuir gravidade `High`, esse parâmetro vale 500 pontos; `Medium` vale 250 pontos; e `Low`, 100 pontos. É importante observar que o mecanismo já usa uma heurística para atribuir o nível de gravidade. Como nosso mecanismo entende o contexto, ele leva em conta aspectos do código analisado. Por exemplo, se o problema for encontrado ou tiver origem em um arquivo de teste, a gravidade será ajustada.
Os outros 50% da pontuação vêm de vários fatores:
Ocorrências
O número relativo de ocorrências da vulnerabilidade em questão se converte em pontos. Por exemplo, imagine que seu programa tenha 10 problemas de três tipos: 5 do tipo A, 2 do tipo B e 3 do tipo C. Assim, o tipo C receberia 30 pontos. A ideia é agrupar os tipos de problema e incentivar correções que resolvam todos de uma vez. Afinal, se você consegue corrigir uma ocorrência, pode corrigir todas.
Arquivos críticos
Arquivos críticos são aqueles responsáveis por vários problemas. A Snyk Code atribui 100 pontos do total a arquivos críticos, 50 pontos quando o fluxo de código passa por um arquivo crítico e 0 se não houver contato com esses arquivos (por exemplo, arquivos identificados pelo mecanismo como arquivos de teste são excluídos). A ideia é concentrar seu trabalho nas áreas mais críticas da aplicação e reduzir a alternância entre vários arquivos. Isso também leva em conta que corrigir um problema pode resolver outros problemas próximos.
Exemplos de correção
Se a Snyk Code encontrar bons exemplos de como um problema foi corrigido anteriormente em projetos open source, isso vale 200 pontos. Fazemos isso porque acreditamos que esses exemplos facilitam muito a correção. Correções anteriores ajudam você a resolver problemas com rapidez e facilidade e, para ser sincero, resultados rápidos são ótimos para manter as equipes motivadas.
Correções frequentes em projetos open source
Este é um fator interessante. Se o mecanismo encontrar uma vulnerabilidade em mais de 1.000 repositórios do nosso conjunto de treinamento open source, atribui 100 pontos. Há vários motivos para isso:
Se a vulnerabilidade for tão disseminada, aumentam as chances de exploração — até mesmo por pessoas com pouca experiência —, o que a torna mais perigosa.
Se a vulnerabilidade já foi corrigida centenas de vezes, existe uma prática recomendada para resolvê-la, que pode ser aplicada.
Práticas recomendadas para o Priority Score
Como você viu acima, o Priority Score é uma ferramenta poderosa para orientar seus esforços de correção. Recomendamos que você aproveite esse recurso. Antes de encerrar, veja outras práticas recomendadas para usar os Priority Scores:
Na interface da Snyk, você pode filtrar os resultados definindo um limite máximo e um limite mínimo para o Priority Score.
Como o Priority Score é recalculado a cada análise e pode mudar com alterações no código, recomendamos sempre usar a pontuação mais recente. Então, em vez de executar uma análise e criar 10 tickets no Jira para os 10 principais problemas encontrados, corrija um problema e execute outra análise. Use o novo problema com o maior Priority Score, que pode ter mudado após as correções anteriores.
Não compare Priority Scores de soluções diferentes da Snyk. Eles representam coisas diferentes e são baseados em lógicas distintas, que não são comparáveis.
Passe o cursor sobre a pontuação para ver os motivos que levaram ao Priority Score. Às vezes, procurar uma correção simples para começar pode ajudar você a alcançar alguns resultados logo de início. A motivação é fundamental!
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.



