In this article
Como proteger seus fluxos de trabalho do GitHub Actions com o Snyk e reforçar a segurança do JavaScript
Se você gerencia seus repositórios de código-fonte no GitHub, provavelmente também aproveita o GitHub Actions para fluxos de trabalho de CI/CD — uma ótima oportunidade para proteger suas aplicações JavaScript.
Alguns dos principais fluxos de trabalho que desenvolvedores de software usam no GitHub Actions envolvem compilar e testar o artefato de software. Pode ser uma aplicação frontend que exige transpilação e compilação de tipos do TypeScript ou uma aplicação backend com fluxos de integração contínua para testes, como testes unitários, de integração etc.
Você também pode usar fluxos de trabalho auxiliares úteis do GitHub Actions, como verificar a formatação dos arquivos Markdown ou encontrar links quebrados no README.
E que tal adicionar alguns testes de segurança? É melhor descobrir e corrigir os problemas cedo do que tarde demais, depois de sofrer uma violação de dados ou enfrentar outros problemas de segurança.
Adicione segurança do Snyk aos fluxos de trabalho do GitHub Actions
O Snyk oferece um fluxo de trabalho pré-configurado e personalizado do Snyk GitHub Actions que você pode adicionar à sua CI, sem precisar gerenciar as verificações de vulnerabilidades diretamente pela CLI do Snyk. O repositório de código da GitHub Action está disponível no GitHub em snyk/actions.
Obtenha seu token do Snyk
Para começar, precisamos obter seu token do Snyk para adicioná-lo à GitHub Action. Consulte a documentação do Snyk GitHub Actions sobre como obter seu token do Snyk. Depois de obter o token, adicione-o aos secrets do repositório de Actions pela interface de configurações do GitHub:

Observação: se você gerencia diferentes ambientes nos fluxos de trabalho de CI, é mais seguro definir o token do Snyk como um secret para cada ambiente, em vez de configurá-lo no nível do repositório.
Configure o fluxo de trabalho do Snyk GitHub Action
Em seguida, crie um arquivo .github/workflows/security.yml com o fluxo de trabalho básico de verificação de segurança do Snyk:
name: Security
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}Execute a verificação de segurança do Snyk
Depois que você adicionar o arquivo de fluxo de trabalho security.yml, ele será executado quando houver um evento que confirme e envie atualizações para a branch main ou em eventos de pull request. Em seguida, fará uma verificação de segurança de código aberto para detectar vulnerabilidades em pacotes de terceiros:

Sucesso total!
Nenhuma vulnerabilidade de segurança foi encontrada no meu pequeno projeto de CLI.
Essa verificação detecta apenas vulnerabilidades de código aberto porque, por padrão, executa o comando snyk test. Vamos garantir também que ela verifique problemas de segurança no código, caso eu os introduza sem querer.
Adicione a análise de segurança do código com SAST usando o Snyk
O Snyk também pode analisar seu código-fonte em busca de vulnerabilidades. Se você escrever código inseguro por engano ou não seguir práticas de programação segura, o Snyk detectará o fluxo de código da origem ao destino e, se você usar a extensão do Snyk para IDE, indicará como corrigir o problema.
Vamos adicionar a análise de segurança do código ao nosso fluxo de trabalho do GitHub Actions, estendendo a declaração do job existente com o seguinte:
code-security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
command: code test Você vai notar que adicionamos especificamente o parâmetro extra command: code test à Snyk GitHub Action.
Como corrigir vulnerabilidades de segurança no código?
O Snyk pode detectar problemas de segurança no seu código ou nas dependências. Vamos ver como corrigi-los.
Os registros da GitHub Action abaixo mostram como a ação do Snyk encontrou uma vulnerabilidade de injeção de comandos no meu projeto. O Snyk apresenta as seguintes informações:
O caminho do arquivo e o número da linha ajudam a identificar um caminho de código inseguro. Na captura de tela do fluxo de trabalho de segurança abaixo, o arquivo é src/bin/cli.ts, na linha 8.
Descrição da vulnerabilidade de segurança detectada. Os resultados abaixo mostram uma vulnerabilidade de injeção de comandos que parte de um argumento de linha de comando e chega ao módulo principal child_process do Nthe ode.js.

Se você instalar a extensão do Snyk para IDE, como fiz no VS Code, terá acesso a:
Um relatório mais detalhado sobre como o problema de segurança no código se propaga pela sua aplicação
A possibilidade de encontrar problemas de segurança mais cedo, enquanto você programa, sem precisar esperar a execução do fluxo de trabalho de CI
Receba recomendações de segurança para corrigir o problema. Em alguns casos, o DCAI Fix do Snyk também oferece correções automáticas com o mecanismo de IA do próprio Snyk.

Este projeto JavaScript é uma aplicação de linha de comando Node.js que recebe o comando do usuário e o executa. Executar comandos do sistema é o principal caso de uso desta CLI Node.js e, por isso, representa um risco aceitável, não uma vulnerabilidade de segurança.
Para evitar que o Snyk sinalize isso como um problema de segurança, vamos adicionar um comentário acima da linha de código vulnerável (linha 8, indicada anteriormente pelo Snyk) para pedir que o Snyk ignore o problema:
8: // file deepcode ignore IndirectCommandInjection: <accepted user input for the CLI is part of how this program works>
9: const result = await runCommandAndNotify(commandToRun)Próximos passos em segurança de aplicações para CI
Como material complementar a este artigo, recomendo as seguintes leituras:
Se sua equipe trabalha com desenvolvimento Java, recomendo compartilhar este artigo com ela: Como criar um pipeline de CI/CD seguro com GitHub Actions para sua aplicação Java
Se você mantém pacotes npm e os publica no registro do npm, recomendo esta leitura: Como publicar pacotes npm com segurança usando o GitHub Actions.
Como ignorar problemas no Snyk quando alguns são falsos positivos ou quando você quer aceitar o risco?
Participe do Fetch the Flag 2026!
Teste suas habilidades de segurança no nosso evento Capture the Flag, de 12 a 13 de fevereiro, das 12h às 12h (horário do leste dos EUA).