Skip to main content

Snyk fix: correção automática de vulnerabilidades pela CLI do Snyk

Escrito por

7 de outubro de 2021

0 minutos de leitura

Temos o prazer de anunciar a versão beta aberta de um novo comando da CLI do Snyk que torna mais fácil do que nunca encontrar e corrigir vulnerabilidades: o comando snyk fix!

A CLI do Snyk já é uma ferramenta extremamente versátil e poderosa, usada por desenvolvedores para encontrar e corrigir vulnerabilidades em seus projetos — manualmente, no ambiente de desenvolvimento local, ou automaticamente, como parte de um pipeline de CI/CD.

Com o snyk test, usuários do Snyk podem analisar seus projetos e receber uma lista de todas as vulnerabilidades identificadas. Se houver uma atualização de dependência capaz de corrigir a vulnerabilidade, a CLI do Snyk apresentará recomendações, além de todas as informações necessárias sobre a atualização e a correção da vulnerabilidade.

O novo comando snyk fix vai além e aplica essas recomendações automaticamente. Ele pode ser especialmente útil para desenvolvedores que precisam aplicar correções rapidamente durante o fluxo de trabalho de desenvolvimento local ou para quem quer automatizar as correções como parte do CI/CD.

Antes de analisarmos o comando em mais detalhes, confira algumas informações sobre disponibilidade e ecossistemas compatíveis:

  • O comando snyk fix está em beta aberta, então é possível que você encontre problemas durante o uso.

  • No momento, há suporte apenas a projetos Python que usam Pip, Pipenv e Poetry. Consulte a documentação do snyk fix para saber mais.

Vamos começar!

Configure a CLI do Snyk

Primeiro, verifique se você instalou a CLI do Snyk. Se já conhece a ferramenta e a instalou, confira se está usando a versão v1.715.0 ou posterior.

É simples configurar a CLI do Snyk. Você pode instalá-la rapidamente com npm ou Homebrew. Depois, basta autenticar-se com sua conta do Snyk (se ainda não tiver uma, cadastre-se gratuitamente aqui):

npm install -g snyk
snyk auth

Seu navegador será aberto com uma solicitação para autenticar a CLI. Basta fazer a autenticação. Agora você já pode usar a CLI do Snyk para analisar seus projetos em busca de vulnerabilidades.

Vamos executar a CLI do Snyk pela primeira vez e rodar um teste. Para esta demonstração, vou usar este fork do projeto PyGoat:

pip install -r requirements.txt
snyk test
Terminal executando `snyk test` em um projeto PyGoat, com uma lista de oito vulnerabilidades em dependências, recomendações de atualização e um problema de licença.

Como mostram os resultados do teste acima, a CLI do Snyk identificou 8 vulnerabilidades e recomenda atualizações para corrigi-las.

E agora? No final dos resultados do teste, a CLI do Snyk recomenda ativar o novo comando snyk fix. Esse é o nosso próximo passo!

Ative o snyk fix

Como mencionamos no início, o novo comando snyk fix está em beta aberta. Para usá-lo, primeiro é preciso ativar o recurso. Isso é feito pelo Snyk Preview — uma área dedicada na interface do Snyk que dá acesso a novos recursos ainda em desenvolvimento.

No Snyk, acesse Configurações e depois Snyk Preview. Em “Aplicar automaticamente as correções recomendadas na CLI”, ative o snyk fix (1) e clique no botão Salvar alterações (2) para aplicar a mudança.

Página de configurações de visualização do Snyk mostrando a opção de recurso de correção ativada e o botão “Salvar alterações” em destaque.

Corrija vulnerabilidades no seu ambiente local

Agora que ativamos o novo comando, vamos testá-lo. Na CLI, digite:

snyk fix 

Quando possível, a CLI do Snyk aplica automaticamente as atualizações de versão recomendadas para corrigir as vulnerabilidades identificadas e exibe um resumo dos resultados:

Terminal mostrando o comando snyk fix atualizando dependências do Python em requirements.txt e corrigindo seis problemas com sucesso.

No nosso aplicativo PyGoat, 6 das 8 vulnerabilidades foram corrigidas. Uma nova análise mostra que restam dois problemas: uma vulnerabilidade de gravidade média no pacote Jinja2 e uma licença LGPLv3.0 encontrada no pacote psycopg2.

Como próximo passo, você pode pedir à CLI do Snyk que monitore continuamente o projeto e avise quando houver uma correção para essa vulnerabilidade restante ou quando novas vulnerabilidades forem identificadas nessas dependências. Para isso, use:

snyk monitor

Corrija vulnerabilidades como parte do seu CI/CD

O novo comando snyk fix também pode automatizar correções como parte dos seus pipelines de CI/CD. Vamos ver um exemplo com o GitHub Actions.

O GitHub criou o GitHub Actions para ajudar desenvolvedores a automatizar fluxos de trabalho de integração contínua. As GitHub Actions do Snyk facilitam a integração do Snyk a esses fluxos e a análise dos seus projetos em busca de vulnerabilidades — tudo como parte do seu fluxo de CI/CD automatizado e diretamente no GitHub. Agora, você também pode corrigir vulnerabilidades como parte desse fluxo.

Mais especificamente, vamos usar esta action, que executa o seguinte fluxo de trabalho:

  • Init — para evitar atualizações incrementais de versão, o fluxo começa verificando a mensagem do último commit e não executa novamente o snyk fix se o último commit já tiver sido uma correção automatizada.

  • Security — o fluxo executa o snyk fix para procurar vulnerabilidades e abre um PR quando identifica uma atualização possível.

É simples usar a action.

As GitHub Actions do Snyk usam uma variável de ambiente chamada SNYK_TOKEN. Esse é o seu token da API do Snyk. Você precisará obtê-lo antes de configurar a GitHub Action. Ele está disponível na página Configurações da interface do Snyk.

Página de configurações da conta Snyk mostrando a seção de token da API com um token desfocado, a data de criação e o botão Revogar e gerar novamente

Com o token em mãos, defina-o como um secret nas configurações do seu repositório, em Settings | Secrets:

Formulário de secret do GitHub Actions exibindo o nome “SNYK_TOKEN” e um campo de valor desfocado.

Agora você já pode configurar a action do Snyk. No seu repositório do GitHub, abra a aba Actions e clique no botão New workflow, no canto superior esquerdo.

O GitHub oferece alguns modelos de actions com base na linguagem de programação do repositório. Para configurar a GitHub Action do Snyk, clique em set up a workflow yourself, no topo da página:

Página de configuração do GitHub Actions com uma seta destacando o link “configure um fluxo de trabalho por conta própria”.

Substitua o código de exemplo pelo código abaixo (lembre-se de informar o nome das suas branches nos namespaces correspondentes da configuração):

name: Example workflow using Snyk fix
on: pull_request
jobs:
    init:
      runs-on: ubuntu-latest
      outputs:
        skip: ${{ steps.ci-skip-step.outputs.ci-skip }}
        skip-not: ${{ steps.ci-skip-step.outputs.ci-skip-not }}
      steps:
        - uses: actions/checkout@v2
          with:
            fetch-depth: 0
        - id: ci-skip-step
          uses: mstachniuk/ci-skip@master
          with:
            commit-filter: 'Merge pull request'
    security:
      runs-on: ubuntu-latest
      needs: init
      if: ${{ needs.init.outputs.skip == 'false' }}
      steps:
        - uses: actions/checkout@master
        - name: Run Snyk to check for vulnerabilities
          uses: snyk/actions/python-3.8@master
          env:
            SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
          with: 
            command: fix # adding this option to run snyk fix
            base: master    
        - name: create a PR
          uses: peter-evans/create-pull-request@v3
          with:
            base: main
        - name: get PR info
          run: |
            echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
            echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"      
        - name: Run a multi-line script
          run: |
            echo Add other actions to build,
            echo test, and deploy your project.

Pronto! Ao fazer commit do novo arquivo, você abre um novo PR que aciona o fluxo e simula a automação das correções com o comando snyk fix. Confira este fluxo, que mostra todas as etapas:

Job de segurança do GitHub Actions mostrando um fluxo de trabalho bem-sucedido de verificação de vulnerabilidades do Snyk, com todas as etapas concluídas.

Conforme definido no fluxo de trabalho, um novo PR é aberto com as correções recomendadas:

Solicitação de pull request do GitHub mostrando atualizações de versão de dependências em um arquivo requirements.txt

Experimente o snyk fix!

Um dos motivos para criarmos o Snyk Preview foi dar aos usuários acesso antecipado a recursos que ainda estão em desenvolvimento e em fase beta. O snyk fix é um ótimo exemplo de recurso novo sobre o qual gostaríamos muito de receber feedback da comunidade antes de lançá-lo oficialmente. Experimente e conte para nós o que achou: snyk-fix-feedback@snyk.io

Você encontra mais informações sobre como usar o novo comando e o que é compatível ou não na nossa documentação do snyk fix.

Boas correções!

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.

Leia mais

AI Background min crop
Blog

A IA está acionando todos os riscos que você aceitou: sete insights do painel de segurança de IA sem filtros

A IA está tornando os ataques mais baratos e rápidos, expondo riscos que as organizações já carregam. Quatro líderes de segurança explicam por que a defesa na velocidade das máquinas e a correção mais rápida são essenciais.

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á ultrapassando os fluxos de trabalho tradicionais de segurança. O Agentic AppSec da Snyk usa agentes de segurança para encontrar, corrigir e verificar vulnerabilidades continuamente, enquanto as pessoas definem os critérios.

feature insights context
Blog

Os ataques autônomos já chegaram. A defesa precisa acompanhar o ritmo.

Os atacantes autônomos estão reduzindo o tempo disponível para a defesa. Saiba como a descoberta, a correção, a validação e a prevenção contínuas ajudam as equipes de segurança a acompanhar esse ritmo.