Skip to main content

GitHub Security Code Scanning: proteja suas dependências de código aberto

Escrito por

4 de maio de 2021

0 minutos de leitura

Temos o prazer de anunciar o suporte do Snyk Open Source ao GitHub Security Code Scanning, que permite verificar automaticamente suas dependências de código aberto em busca de vulnerabilidades de segurança e problemas de licença, além de consultar os resultados diretamente na aba Security do GitHub!

Um dos pilares da abordagem da Snyk, que prioriza os desenvolvedores, é integrar os dados de segurança da Snyk aos mesmos processos usados por eles, seja no IDE ou em um fluxo de trabalho baseado em Git.

Em outubro de 2020, apresentamos a possibilidade de verificar imagens de contêiner hospedadas no GitHub, arquivos de configuração do Kubernetes e código Terraform, e depois consultar os resultados na aba Security do GitHub. Esse recurso — que agora também oferece suporte a Snyk Container, Snyk IaC, e Snyk Open Source — usa as GitHub Actions da Snyk para integrar a Snyk nativamente ao GitHub Security Code Scanning.

Página de segurança de um repositório do GitHub mostrando alertas de análise de código e uma lista de vulnerabilidades de alta gravidade

Se você já usa as GitHub Actions da Snyk, poderá ver os resultados imediatamente no GitHub Security Code Scanning. Se ainda não usa ou está começando com a Snyk, veja como começar!

GitHub Actions da Snyk

O GitHub Actions foi criado pelo GitHub para ajudar desenvolvedores a automatizar fluxos de trabalho de integração contínua. O conjunto de GitHub Actions da Snyk facilita a integração da Snyk a esses fluxos e a análise de projetos do GitHub em busca de vulnerabilidades de segurança e problemas de licença — tudo como parte do seu fluxo de CI/CD automatizado e diretamente no GitHub.

A Snyk oferece uma action diferente para cada linguagem de programação ou ferramenta de build. Confira uma lista parcial (para ver todas as actions disponíveis, consulte a documentação no GitHub):

Agora, vamos testar na prática!

Observação: As instruções abaixo podem ser usadas para analisar repositórios públicos. Para analisar registros privados, você precisa ser cliente pagante do GitHub Advanced Security.

Configurando a autenticação com a Snyk

A Snyk Action usa uma variável de ambiente chamada SNYK_TOKEN. Esse é o seu token de API da Snyk, que você precisa obter antes de configurar a GitHub Action.

Se você ainda não tem uma conta, crie uma conta na Snyk. Depois, você poderá obter o token de uma destas duas maneiras:

  1. Se você usa a Snyk CLI, obtenha o token executando: snyk config get api

  2. Na interface, acesse a página de configurações da sua conta da Snyk e obtenha o token de API.

Página de configurações da conta Snyk mostrando um token de API, o botão Revogar e gerar novamente e as configurações da organização preferencial.

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

Formulário de secrets do GitHub Actions mostrando o nome SNYK_TOKEN, um campo de valor desfocado e um botão para adicionar secret.

Configurando a GitHub Action da Snyk

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

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

Página de modelo de fluxo de trabalho do GitHub Actions para um repositório JavaScript, com o link “configure um fluxo de trabalho por conta própria” em destaque.

Substitua o código de exemplo por este:

name: "Upload package.json SARIF"
# Run workflow each time code is pushed to your repository.
on: push
jobs: 
  build:   
    runs-on: ubuntu-latest   
    steps:     
      - uses: actions/checkout@v2     
      - uses: snyk/actions/setup@master     
      - name: Snyk Test       
      run: snyk test --sarif-file-output=snyk-sarif.json       
      continue-on-error: true              
      env:          
        SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}         
      - name: Upload SARIF file       
      uses: github/codeql-action/upload-sarif@v1       
      with:         
        sarif_file: snyk-sarif.json +++ CODE_WP_BLOCK_END +++

Editor de fluxo de trabalho do GitHub exibindo um arquivo YAML que executa testes de segurança da Snyk e envia um relatório SARIF.

Como você pode ver neste exemplo, a Snyk Action está configurada para executar o fluxo de trabalho sempre que um novo código é enviado ao repositório. O fluxo usa snyk test para verificar suas dependências de código aberto em busca de vulnerabilidades de segurança e problemas de licença e, em seguida, envia ao GitHub Security Code Scanning um arquivo SARIF com os resultados.

A flag continue-on-error está definida como true, mas você pode alterá-la para que os builds falhem quando forem identificados problemas.

Clique em Start commit para adicionar o arquivo de fluxo de trabalho ao repositório e iniciar a primeira execução automatizada da Snyk Action. Um fluxo de CI completo no GitHub começa com a criação do arquivo da GitHub Action na raiz do repositório: .github/workflows/main.yml

A action será executada por alguns segundos, e você poderá acompanhar o andamento do processo.

Quando a execução terminar, abra a aba Security do GitHub. Os resultados da análise da Snyk serão exibidos em Code scanning alerts:

Página de análise de código do GitHub mostrando uma lista de vulnerabilidades de segurança graves e abertas no repositório goof

A partir daí, sempre que você enviar novos commits ao seu repositório do GitHub, um novo job será adicionado à aba Actions do repositório para procurar problemas.

Como ver os resultados da análise em Code Scanning

O Snyk Open Source analisa as dependências de código aberto do seu repositório — diretas e transitivas — em busca de vulnerabilidades de segurança e problemas de licença. Quando identificadas, elas são exibidas com todo o contexto necessário para agilizar a correção. Quanto mais contexto você tiver sobre as vulnerabilidades, mais fácil será priorizar as correções.

No nosso exemplo, o Snyk Open Source cruzou o arquivo de manifesto do projeto (package.json) com o banco de dados de vulnerabilidades Snyk Intel e encontrou 281 vulnerabilidades.

Vamos analisar uma delas: uma vulnerabilidade de alta gravidade de desvio da proteção contra sobrescrita de protótipo na dependência qs.

O cabeçalho da vulnerabilidade informa sua gravidade e os identificadores CVE e CWE. A gravidade é mapeada da seguinte forma:

CVSS

SARIF

Baixa

Observação

Média

Aviso

Alta / Crítica

Erro

Lista de vulnerabilidades de qs@2.2.4 mostrando uma vulnerabilidade de alta gravidade de desvio da proteção contra sobrescrita de protótipo, marcada como aberta e identificada com as tags CVE-2017-1000048, npm e segurança.

Além disso, a Snyk fornece uma descrição completa da vulnerabilidade, explica como ela foi introduzida, apresenta exemplos de explorabilidade e uma linha do tempo de divulgação e, o mais importante, recomenda como corrigi-la.

Relatório de vulnerabilidade do Snyk Open Source para o pacote npm qs, com detalhes sobre a sobrescrita de protótipo, cronograma de divulgação, correção e referências.

Investindo em segurança nativa do GitHub

As ferramentas de segurança que priorizam os desenvolvedores precisam se integrar aos fluxos de desenvolvimento da forma mais simples possível. Isso reduz boa parte dos obstáculos normalmente associados à integração da segurança e ajuda os desenvolvedores a assumir mais responsabilidade por ela.

Mais de 2,2 milhões de desenvolvedores no mundo todo usam a Snyk para proteger suas aplicações. Muitos deles utilizam a integração da Snyk com o GitHub, por isso continuamos investindo em melhorias nesse ponto de integração. Experimente as GitHub Actions da Snyk e o novo suporte do Snyk Open Source ao GitHub Security Code Scanning e conte para nós o que achou!

Comece a resolver desafios de capture the flag

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

Leia mais

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.

feature insights context
Blog

A prevenção é essencialmente um problema resolvido?

A prevenção em código gerado por agentes está resolvida do ponto de vista arquitetural — mas escolher controles que protejam a segurança sem desacelerar o desenvolvimento continua sendo um desafio.

Live Stream

Agentes de Remediação, Desmistificados: Por Que Corrigir é Melhor do que Encontrar

Veja como o Remediation Agent da Snyk usa inteligência de segurança, análise de explorabilidade e validação para transformar vulnerabilidades em pull requests prontos para merge.