securing-github-actions-workflows
Fortalece fluxos de trabalho do GitHub Actions contra ataques. Protege segredos e restringe permissões para evitar riscos de segurança.
O que ela faz
Este recurso ajuda a proteger seus fluxos de trabalho automatizados (chamados GitHub Actions) contra ataques. Ele garante que as ferramentas usadas sejam sempre as mesmas e que as permissões dadas a elas sejam as mínimas necessárias para funcionar, evitando que códigos maliciosos sejam executados.
Quando usar
- ✓Quando seus fluxos de trabalho lidam com informações sensíveis (segredos).
- ✓Quando seus fluxos de trabalho fazem deploy de código para produção.
- ✓Quando você quer impedir que alterações em nomes de branches ou títulos de Pull Requests causem problemas de segurança.
Exemplo do que pedir para a IA
“Como posso proteger meus fluxos de trabalho do GitHub Actions contra ataques?”
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
Ele funciona verificando se as ferramentas externas usadas nos seus fluxos de trabalho estão fixadas em versões específicas (usando um código único chamado SHA) e limitando as permissões que o token principal do GitHub Actions tem. Também previne que informações vindas de fora (como títulos de PRs) sejam usadas de forma insegura em comandos.
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 mukul975/Anthropic-Cybersecurity-Skills --skill securing-github-actions-workflowsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/securing-github-actions-workflows/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.
Protegendo Workflows do GitHub Actions
Quando Usar
- Quando o GitHub Actions é a plataforma de CI/CD e os workflows precisam ser endurecidos contra ataques à cadeia de suprimentos.
- Quando workflows manipulam segredos, fazem deploy em produção ou possuem permissões elevadas.
- Ao prevenir injeção de scripts através de títulos de PR, nomes de branches ou mensagens de commit não confiáveis.
- Ao exigir trilhas de auditoria e portões de aprovação para modificações de workflow.
- Quando ações de terceiros representam risco à cadeia de suprimentos através de tags de versão mutáveis.
Não use para proteger outras plataformas de CI/CD (veja guias de endurecimento específicos da plataforma), para varredura de vulnerabilidades de aplicações (use SAST/DAST) ou para detecção de segredos em código (use Gitleaks).
Pré-requisitos
- Repositório GitHub com GitHub Actions habilitado.
- Acesso de administrador da organização GitHub para configurações em nível de organização.
- Compreensão da sintaxe de workflow e eventos do GitHub Actions.
Workflow
Passo 1: Fixar Ações em SHA Digests
# INSECURE: Mutable tag can be overwritten by attacker
- uses: actions/checkout@v4
# SECURE: Pinned to immutable SHA digest
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# Use Dependabot to auto-update pinned SHAs
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "ci"
Passo 2: Minimizar Permissões do GITHUB_TOKEN
# Set restrictive default permissions at workflow level
name: CI Pipeline
permissions: {} # Start with no permissions
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read # Only what's needed
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
deploy:
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/main'
permissions:
contents: read
deployments: write
id-token: write # For OIDC-based cloud auth
steps:
- name: Deploy
run: echo "deploying"
Passo 3: Prevenir Injeção de Scripts
# VULNERABLE: User-controlled input in run step
- run: echo "PR title is ${{ github.event.pull_request.title }}"
# SECURE: Use environment variable (properly escaped by shell)
- name: Process PR
env:
PR_TITLE: ${{ github.event.pull_request.title }}
PR_BODY: ${{ github.event.pull_request.body }}
run: |
echo "PR title is ${PR_TITLE}"
echo "PR body is ${PR_BODY}"
# SECURE: Use actions/github-script for complex operations
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
with:
script: |
const title = context.payload.pull_request.title;
console.log(`PR title: ${title}`);
Passo 4: Proteger o Tratamento de Pull Requests de Forks
# DANGEROUS: pull_request_target runs with base repo permissions
# on: pull_request_target # AVOID unless absolutely necessary
# SAFE: pull_request runs in fork context with limited permissions
on:
pull_request:
branches: [main]
# If pull_request_target is required, never checkout PR code:
on:
pull_request_target:
types: [labeled]
jobs:
safe-job:
if: contains(github.event.pull_request.labels.*.name, 'safe-to-test')
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# NEVER do: actions/checkout with ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
# This checks out the BASE branch, not the PR
Passo 5: Proteger Segredos e Variáveis de Ambiente
jobs:
deploy:
runs-on: ubuntu-latest
environment: production # Requires approval
steps:
- name: Deploy with secret
env:
# Secrets are masked in logs automatically
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
run: |
# Never echo secrets
# echo "$DEPLOY_KEY" # BAD
deploy-tool --key-file <(echo "$DEPLOY_KEY")
- name: Audit secret access
run: |
# Log that secret was used without exposing it
echo "::notice::Deploy key accessed for production deployment"
Passo 6: Implementar Controles de Mudança de Workflow
# Exigir aprovação do CODEOWNERS para mudanças de workflow
# .github/CODEOWNERS
.github/workflows/ @security-team @platform-team
.github/actions/ @security-team @platform-team
# Configurações da organização:
# 1. Settings > Actions > General > Fork PR policies
…
Perguntas frequentes
O que é 'pinning actions to SHA digests'?
Significa usar um código único e imutável (SHA) para identificar uma versão específica de uma ferramenta externa, em vez de usar um nome de versão que pode ser alterado por um atacante.
Por que é importante limitar as permissões do GITHUB_TOKEN?
O GITHUB_TOKEN é uma chave de acesso que o GitHub Actions usa. Limitar suas permissões significa que, mesmo que um atacante consiga acesso a ele, o dano que poderá causar será menor, pois ele só poderá fazer o que é estritamente necessário.
O que é 'script injection' e como isso é prevenido?
É um ataque onde informações não confiáveis (como um título de Pull Request) são inseridas em um comando. Isso é prevenido garantindo que essas informações sejam tratadas como texto e não como código executável, ou usando ferramentas seguras para processá-las.
Detalhes
Descrição original do autor
Hardens GitHub Actions workflows against supply chain attacks, credential theft, and privilege escalation: pinning actions to SHA digests, minimizing GITHUB_TOKEN permissions, protecting secrets, preventing script injection in workflow expressions, and requiring reviewers for workflow changes. Use when hardening GitHub Actions workflows that handle secrets, deploy to production, or run with elevat
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #6207
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
dashboard-builder
Ajuda seu agente a criar painéis de monitoramento úteis. Ele transforma dados em gráficos que respondem a perguntas importantes sobre o sistema.
affaan-m/ECC
dev-team
Simula uma equipe de desenvolvimento colaborativa, onde diferentes papéis respondem a um problema juntos. É útil para obter múltiplas perspectivas sem trocar de agente manualmente.
affaan-m/ECC
ecc-council
Faz seu agente reunir um conselho de quatro vozes para tomar decisões difíceis. É útil quando há várias opções boas e é preciso debater antes de escolher.
affaan-m/ECC