github-actions-hardening
Ajuda seu agente a revisar a segurança de fluxos de trabalho de automação de código. Ele identifica riscos que ferramentas comuns não pegam, como injeção de código malicioso.
O que ela faz
Esta ferramenta revisa a segurança de arquivos de automação do GitHub Actions. Ela verifica se há riscos específicos que ferramentas comuns de segurança não pegam, como injeção de código e uso de permissões perigosas.
Quando usar
- ✓Ao pedir para revisar a segurança de um arquivo de automação do GitHub Actions.
- ✓Ao criar uma nova automação e querer garantir que ela seja segura desde o início.
- ✓Quando uma automação usa gatilhos que podem ser acionados por código externo.
Exemplo do que pedir para a IA
“Revise a segurança deste arquivo de automação do GitHub Actions: [cole o código aqui]”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta analisa os gatilhos da automação para entender quem pode iniciá-la e com quais permissões. Em seguida, ela procura por pontos onde dados externos podem ser inseridos diretamente em comandos, o que pode ser perigoso.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add github/awesome-copilot --skill github-actions-hardeningOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/github-actions-hardening/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Hardening do GitHub Actions
Um revisor de segurança focado para fluxos de trabalho do GitHub Actions. Ele raciocina sobre o modelo de ameaças específico do Actions — onde os limites de confiança residem nos tipos de gatilho, escopos de token e interpolação de strings — em vez das vulnerabilidades de código de aplicação que um scanner de segurança geral procura. A maioria dos riscos de fluxo de trabalho são invisíveis para os linters de linguagem porque o código perigoso é o próprio YAML e a maneira como o GitHub expande expressões ${{ }} em um shell antes que seu script seja executado.
Quando Usar Esta Habilidade
Use esta habilidade quando a solicitação envolver:
- Revisar, auditar ou proteger qualquer arquivo sob
.github/workflows/ - Criar um novo fluxo de trabalho e querer que ele seja seguro por padrão
- Um fluxo de trabalho que usa gatilhos
pull_request_target,workflow_runouissue_comment - Perguntas sobre permissões
GITHUB_TOKENou a chavepermissions: - Fixar ações em SHAs de commit vs tags vs branches
- Lidar com entrada não confiável (títulos de issues, corpos de PRs, nomes de branches, mensagens de commit) em etapas
run: - Autenticação OIDC / cloud do Actions, ou manuseio de segredos em CI
- Runners auto-hospedados em repositórios públicos
- Qualquer solicitação como "este fluxo de trabalho é seguro?", "proteja meu CI" ou "revise este GitHub Action"
A Ideia Central
Em um fluxo de trabalho, ${{ <expr> }} é expandido pelo runner para o script antes que o shell o execute. Portanto, uma etapa como:
- run: echo "Title: ${{ github.event.issue.title }}"
não está passando uma variável — está colando texto controlado pelo atacante diretamente no seu comando shell. Um título de issue "; <attacker-command> # é concatenado no script e executado. Este único mecanismo é a vulnerabilidade mais comum do Actions no mundo real, e os modelos rotineiramente a geram. Trate cada ${{ }} que contém dados que um colaborador externo pode influenciar como um sink de injeção de código.
Fluxo de Execução
Siga estas etapas em ordem para cada fluxo de trabalho revisado.
Etapa 1 — Mapear os Gatilhos e o Nível de Confiança
Leia cada gatilho on: e classifique o privilégio do fluxo de trabalho:
push,pull_request(do mesmo repositório) → executa com a confiança do próprio colaboradorpull_requestde um fork → executa com um token somente leitura, sem segredos (seguro por design)pull_request_target,workflow_run,issue_comment,issues→ executam no contexto do repositório base com um token de leitura/escrita e acesso total a segredos, mas podem ser acionados por colaboradores externos. Estes são os gatilhos perigosos.
Leia references/triggers-and-privilege.md para a matriz de confiança completa.
Etapa 2 — Caçar Injeção de Script
Para cada bloco run:, cada script: em actions/github-script e cada entrada para uma ação personalizada, liste as expressões ${{ }} e verifique se alguma delas se resolve para dados controláveis pelo atacante. Contextos de alto risco incluem:
github.event.issue.title,github.event.issue.bodygithub.event.pull_request.title,github.event.pull_request.body,.head.ref,.head.labelgithub.event.comment.body,github.event.review.bodygithub.event.pages.*.page_name,github.event.commits.*.message,github.event.head_commit.*github.head_refe qualquer campogithub.event.*que um autor de fork possa definir
Leia references/injection.md para a lista completa de sinks e as correções de padrão seguro.
Etapa 3 — Verificar se Gatilhos Privilegiados Não Executam Código Não Confiável
Se um fluxo de trabalho pull_request_target ou workflow_run fizer checkout do código do PR/fork (ref: ${{ github.event.pull_request.head.sha }}) e depois executá-lo (scripts de build, teste, instalação, npm install com scripts de ciclo de vida, etc.), isso é execução remota de código contra um token privilegiado. Sinalize como CRÍTICO. O padrão seguro é dividir em dois fluxos de trabalho: um fluxo de trabalho pull_request não privilegiado que executa o código não confiável, e um fluxo de trabalho workflow_run privilegiado que apenas consome seus resultados.
Etapa 4 — Auditar permissions:
- Se não houver bloco
permissions:, o fluxo de trabalho herda o padrão do repositório, que pode ser leitura/escrita em tudo. Sinalize. - Recomende um
permissions: {}(negar tudo) oucontents: readde nível superior, e então conceda o mínimo por job (por exemplo,pull-requests: writeapenas no job que comenta). - Sinalize quaisquer escopos
permissions: write-allouwriteamplos que as etapas realmente não precisam.
Leia references/permissions-and-tokens.md para orientação por escopo e configuração de OIDC.
Etapa 5 — Auditar Referências de Ação (Cadeia de Suprimentos)
Para cada uses::
…
Perguntas frequentes
O que são 'gatilhos privilegiados'?
São eventos que iniciam a automação e que podem ser acionados por pessoas de fora do seu projeto, como em 'pull requests' de projetos que você não controla. Eles podem ter acesso a informações sensíveis.
O que é 'injeção de script' neste contexto?
É quando um código malicioso é inserido em um campo que a automação usa, como o título de um 'pull request', e esse código é executado como se fosse parte da sua automação.
Por que usar um 'commit SHA' em vez de uma 'tag' ou 'branch' para referenciar ações?
Tags e branches podem ser alterados depois de criados. Usar um 'commit SHA' (um identificador único e fixo) garante que você sempre usará a versão exata da ação que foi revisada, prevenindo que ela seja substituída por uma versão maliciosa.
Detalhes
Descrição original do autor
Security hardening reviewer for GitHub Actions workflow files (.github/workflows/*.yml). Reasons about the Actions threat model that pattern matchers and general code linters miss — untrusted-input script injection, privileged triggers running fork code, mutable action references, and over-scoped tokens. Use this skill when asked to review, audit, harden, or secure a GitHub Actions workflow, when
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5168
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
django-security
Ajuda seu agente a implementar práticas de segurança em aplicações Django. Ele foca em autenticação, autorização e prevenção contra ataques comuns, garantindo um código mais seguro.
affaan-m/ECC
laravel-security
Ajuda seu agente a proteger aplicações Laravel contra ameaças. Implementa práticas de segurança para autenticação, autorização e prevenção de ataques comuns.
affaan-m/ECC
module-regression
Ajuda seu agente a gerenciar mudanças em projetos grandes. Garante que alterações em uma parte do código não quebrem outras partes.
affaan-m/ECC