Skip to main content

Ignorando vulnerabilidades com o Snyk

Escrito por
blog feature snyk security policies

3 de maio de 2022

0 minutos de leitura

Ignorar uma vulnerabilidade? Parece um paradoxo. Por que alguém iria querer ignorar uma vulnerabilidade?

Ignorar problemas de segurança não deve ser uma prática padrão, mas às vezes é necessário. Hoje, as equipes de desenvolvimento e segurança lidam com milhares de vulnerabilidades pendentes. Para manter o ritmo acelerado do desenvolvimento, elas precisam priorizar o trabalho com eficiência. Quais vulnerabilidades exigem atenção imediata, quais podem ser tratadas mais tarde e quais podem ser totalmente ignoradas?

Nem todas as vulnerabilidades são iguais. Algumas são críticas, enquanto outras têm menor gravidade. Algumas já têm uma correção disponível, enquanto outras não. Certas vulnerabilidades não são relevantes para determinados projetos (por exemplo, uma vulnerabilidade de negação de serviço em um serviço voltado apenas para uso interno). Essas e outras características podem ser motivos válidos para ignorar uma vulnerabilidade durante a triagem.

As soluções de segurança precisam permitir que os desenvolvedores suprimam vulnerabilidades, mas também devem dar às equipes de segurança o nível adequado de controle sobre quem ignora o quê (e por quê). Ignorar uma vulnerabilidade não é uma prática recomendada, mas uma ação que deve ser realizada com moderação e de acordo com as políticas da sua organização.

Opções para ignorar problemas no Snyk

A plataforma Snyk oferece várias formas de ignorar problemas: pela CLI, API ou interface do Snyk, ou usando o arquivo de políticas .snyk. O método escolhido depende do seu caso de uso específico, mas é importante entender um princípio: as regras para ignorar problemas no Snyk são locais. Isso significa que elas se restringem a um projeto, tipo de integração e organização. Por exemplo, o mesmo problema ignorado em um projeto importado pelo GitHub não será ignorado em um projeto importado pela CLI do Snyk.

Vamos conferir mais de perto.

Usando a CLI do Snyk

A CLI do Snyk é uma ferramenta muito útil para encontrar e corrigir vulnerabilidades, manualmente no seu ambiente de desenvolvimento local ou automaticamente como parte do seu pipeline de CI/CD. Você pode verificar seu projeto com o comando snyk test. A verificação retorna uma lista de todos os problemas identificados no projeto, além de recomendações de atualização e correção, quando disponíveis.

Se quiser ignorar uma vulnerabilidade específica por qualquer um dos motivos descritos acima — em testes locais ou nos pipelines de build —, você pode usar o comando snyk ignore, que aceita subcomandos opcionais (entre colchetes). Os subcomandos ajudam a definir o escopo da ação: uma data de validade para a regra e o motivo para ela. O comando abaixo ignora uma vulnerabilidade de exposição de informações no pacote npm hbs, pois não há uma correção disponível:

snyk ignore –id=SNYK-JS-HBS-1566555 [--expiry=2022-05-30] [--reason=no fix available]

O id é um identificador exclusivo atribuído aos problemas pelo Snyk. Você pode encontrá-lo em alguns lugares na interface do Snyk. Se estiver usando a CLI, verá o ID no URL do problema na Snyk Vulnerability Database.

Saída do terminal listando vulnerabilidades em dependências, com uma seta vermelha destacando o identificador SNYK-JS-HBS-1566553.

Quando esse comando é executado, uma nova regra é adicionada ao arquivo de políticas .snyk. Se o arquivo ainda não existir, o comando o cria e adiciona a regra. Todas as verificações posteriores executadas com snyk test seguirão essa regra.

Dicas:

  • Não sabe qual é a sintaxe da CLI do Snyk para ignorar problemas? Basta digitar snyk ignore –help.

  • Nas configurações da organização, na interface do Snyk, você pode restringir a capacidade de ignorar problemas apenas a usuários administradores.

  • Para Snyk Code e testes de dependências não gerenciadas no Snyk Open Source, pode ser mais útil ignorar diretórios em vez de problemas individuais. O comando snyk ignore também permite fazer isso.

Tela de configurações da organização no Snyk mostrando controles sobre quem pode ignorar problemas e se é necessário informar um motivo, com “Somente usuários administradores” e “Obrigatório” selecionados

Usando o arquivo de políticas .snyk

Conforme descrito acima, o comando snyk ignore cria um arquivo chamado arquivo de políticas .snyk. Ele costuma ser usado para configurar o comportamento e o escopo dos comandos da CLI snyk test e snyk monitor, além de testes executados pela API e pela interface do Snyk e das configurações de linguagem. Você também pode criar manualmente o arquivo de políticas .snyk no diretório raiz do projeto ou em um diretório específico dentro dele.

Para ignorar vulnerabilidades, o arquivo precisa incluir um cabeçalho:

# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
 version: v1.22.1

Também é necessário incluir a seguinte sintaxe YAML para cada regra de ignorar:

Ignore:
  snyk-vulnid:
    - path to library using > seperator :
      reason: 'text string'
      expires: 'datetime string'

Se o arquivo de políticas .snyk estiver armazenado em um subdiretório do projeto, lembre-se de especificar o local ao executar o comando snyk ignore na CLI do Snyk.

Como prática recomendada, sugerimos gerenciar o arquivo .snyk com o Git. Assim, os testes executados pela interface do Snyk seguem as regras definidas localmente. Para saber mais sobre o arquivo de políticas .snyk, como criá-lo e usá-lo para ignorar vulnerabilidades, consulte nossa documentação sobre o arquivo de políticas .snyk.

Usando a interface do Snyk

Você também pode ignorar problemas pela interface do Snyk: basta clicar no botão Ignorar no cartão de qualquer problema. Uma janela será aberta para você selecionar o motivo e definir por quanto tempo o problema deve ser ignorado. (Você pode até optar por ignorá-lo até que uma correção esteja disponível.)

Tela de detalhes da vulnerabilidade com uma caixa de diálogo para ignorá-la, oferecendo opções temporárias ou permanentes e a duração de 14 dias selecionada.

Depois que você aplica a opção Ignorar a um problema pela interface do Snyk, algumas coisas acontecem — mas é importante lembrar que o problema não desaparece. Não se preocupe se você acabou de ignorar uma vulnerabilidade crítica!

O problema deixa de aparecer, mas, por padrão, você ainda pode vê-lo na página do projeto usando o filtro Ignorados. É importante lembrar que toda ação para ignorar um problema feita pela interface do Snyk fica registrada, incluindo quem ignorou, quando e por quê:

Ignore:
  snyk-vulnid:
    - path to library using > seperator :
      reason: 'text string'
      expires: 'datetime string'

Dicas:

  • As regras para ignorar problemas aplicadas pela interface do Snyk a projetos importados para o Snyk pela CLI do Snyk (usando snyk monitor) são sincronizadas com seu projeto local. Porém, as regras aplicadas pela interface a projetos importados para o Snyk por uma integração de gerenciamento de código-fonte (SCM) (por exemplo, GitHub ou Bitbucket) não são sincronizadas.

  • Nas configurações da organização, você pode exigir um motivo para cada ação de ignorar problema feita pela interface do Snyk.

Configurações da organização no Snyk mostrando as políticas de ignorar vulnerabilidades, com permissões exclusivas para administradores e a opção de exigir justificativas selecionada.

Pull requests automatizados

A Snyk não abre pull requests de correção automáticos para problemas ignorados pela interface do Snyk (manualmente no cartão do problema ou automaticamente por meio de uma política de segurança), e esses problemas também não aparecem nos gráficos de relatórios do Snyk.

Usando políticas de segurança (somente Snyk Open Source e Snyk Container)

Para a maioria das organizações, é importante ter uma forma mais automatizada de ignorar problemas em grande escala.

As políticas de segurança do Snyk são, basicamente, regras que você pode usar para priorizar ou despriorizar problemas automaticamente. Elas são definidas no nível do grupo, na guia Policies da barra de navegação da interface do Snyk, e podem ser aplicadas a organizações ou projetos específicos (usando a opção Atributos do projeto). Isso oferece controle granular sobre a aplicação das regras para ignorar problemas.

Para ignorar problemas usando as políticas de segurança do Snyk, primeiro defina as condições que o Snyk precisa encontrar para ignorar um problema e, em seguida, selecione a opção para ignorá-lo.

Formulário de política de segurança do Snyk para projetos de desenvolvimento interno, exibindo uma regra CWE-400 configurada para ignorar vulnerabilidades marcadas como Não vulneráveis.

As regras de ignorar aplicadas por uma política de segurança se aplicam a todas as vulnerabilidades que correspondem às condições especificadas. Elas ignoram todas as vulnerabilidades existentes que correspondem às condições e todas as ocorrências futuras identificadas. Os problemas ignorados por uma política de segurança serão identificados como tal.

Por exemplo, esta vulnerabilidade de travessia de diretório no popular pacote Python Django foi ignorada por uma política definida para projetos internos:

Painel de segurança mostrando uma vulnerabilidade de traversal de diretório no Django ignorada, classificada como baixa (CVSS 3.7), com um botão para corrigir a vulnerabilidade

Dica: ao definir a ação Ignorar em uma política de segurança, você pode selecionar Não será corrigido e Não vulnerável como tipos de motivo e adicionar o texto que deseja exibir para a ação. Essas informações aparecem no cartão do problema no seu projeto.

Usando a API do Snyk

Você pode usar a API do Snyk para aplicar regras globais de ignorar problemas. Recomendamos muito cuidado com essa abordagem, pois ela pode gerar falsos negativos em verificações futuras.

Uma regra para ignorar baseada em caminho, usando a API do Snyk, seria parecida com esta:

POST https://snyk.io/api/v1/org/orgId/project/projectId/ignore/issueId

O payload da API seria parecido com este:

{ 
“ignorePath”:””,
“Reason”:”no fix available”,
“reasonType”:”wont-fix”,
“disregardIfFixable”:true
}

Você também pode usar a API para criar uma lista de problemas ignorados. Isso é recomendado para acompanhar as regras globais de ignorar em toda a organização:

https://snyk.io/api/v1/org/orgId/project/projectId/ignores

Outras práticas recomendadas para ignorar problemas

A plataforma Snyk oferece várias opções para ignorar problemas com critério e controle, ajudando a garantir que problemas críticos não passem despercebidos. Veja abaixo algumas práticas recomendadas para trabalhar com essas opções.

Exija um motivo para ignorar problemas

Recomendamos exigir que os desenvolvedores informem os motivos para ignorar problemas. Como mencionado acima, os administradores podem exigir um motivo para ações feitas pela interface do Snyk. Para ações feitas pela CLI ou API do Snyk, você precisa orientar as equipes de desenvolvimento a seguir essa prática.

Restrinja a opção de ignorar problemas aos administradores

Recomendamos habilitar a opção de ignorar problemas em cada uma das suas organizações no Snyk. (Essa permissão também pode ser configurada pela interface do Snyk.) Porém, isso restringe apenas as ações feitas pela CLI e pela API do Snyk. Os desenvolvedores ainda poderão definir regras de ignorar no arquivo de políticas .snyk.

Revise regularmente as regras para ignorar problemas

Para ter mais visibilidade, monitore regularmente as ações para ignorar problemas feitas pelas diferentes equipes na sua conta do Snyk. Para isso, você pode usar o comando curl mostrado acima para buscar e revisar automaticamente uma lista de problemas ignorados. Também pode consultar a guia Reports, onde o Snyk mostra o número de problemas ignorados.

Ignore com cautela

Ignorar um problema de segurança — ou de licença — deve ser sempre uma exceção, nunca uma prática generalizada. Encontre o equilíbrio certo entre a produtividade dos desenvolvedores e as medidas de segurança. Para isso, defina cuidadosamente uma política aceitável para ignorar problemas na sua organização e ofereça aos desenvolvedores ferramentas que permitam fazer isso dentro dos limites estabelecidos.

Veja alguns pontos importantes sobre como o Snyk Code e o Snyk Infrastructure as Code (Snyk IaC) lidam com problemas ignorados:

Boa sorte ao ignorar problemas!

Comece a participar de desafios de Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.