GitHub Security Code Scanning: proteja suas dependências de código aberto
4 de maio de 2021
0 minutos de leituraTemos 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.

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:
Se você usa a Snyk CLI, obtenha o token executando:
snyk config get apiNa interface, acesse a página de configurações da sua conta da Snyk e obtenha o token de API.

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

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:

Substitua o código de exemplo por este:

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:

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 |

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.

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.

