SkillProgramaçãoRevisão

Revisão de Segurança

Mapeia as fronteiras de entrada e identifica riscos de segurança em código novo ou alterado por um PR. Use em mudanças que tocam autenticação, autorização, banco, inputs externos, dados sensíveis ou novas dependências.

Ações
PerfilDev
ProfundidadeAlta
IdiomaInglês (skill original)
Objetivo

Em uma frase.

Identificar vulnerabilidades de segurança introduzidas pelo PR — cobrindo injeção de dados, exposição indevida de informação sensível, falhas de autenticação e autorização, dependências vulneráveis e uso incorreto de criptografia.

Aplicação

Quando
faz sentido.

Usar
  • Em PRs que tocam fronteiras do sistema, autenticação, autorização, banco, inputs externos ou dados sensíveis.
  • Sempre que o PR introduzir novas dependências.
  • Quando o PR alterar configurações de segurança, tokens, secrets ou variáveis de ambiente.
Não usar
Prompt

Instruções
para a IA.

### Passo 1 — Identifique todas as fronteiras de entrada

Mapeie cada ponto onde dados externos entram pelo código alterado: inputs de usuário (forms, query/path params, headers, body), respostas de APIs e webhooks, conteúdo de arquivos e uploads, variáveis de ambiente, dados de filas e eventos. Cada fronteira é um vetor potencial de ataque.

### Passo 2 — Verifique injeção de dados

Procure SQL Injection (concatenação de string, queries sem parâmetros vinculados), Command Injection (exec/spawn com input externo), injeção de template/expressão (eval, render sem escaping) e path traversal (caminhos construídos com input não validado).

### Passo 3 — Verifique exposição de dados sensíveis

Confira logs com tokens, senhas ou PII; respostas com over-fetching; mensagens de erro que revelam estrutura interna; secrets hardcoded; e dados sensíveis em URL ou cache sem controle.

### Passos 4 a 6 — Auth, dependências e criptografia

Valide autenticação (token validado e expirado antes de operação privilegiada) e autorização (verificação no servidor, IDOR, escalação de privilégio). Para cada nova dependência, cheque CVEs conhecidos e permissões excessivas. Em criptografia, sinalize algoritmos fracos, IV/nonce reutilizados, comparações fora de tempo constante e senhas sem bcrypt/argon2/scrypt. Verifique sempre o OWASP Top 10 da categoria relevante; nunca classifique injeção como baixa nem aprove secrets hardcoded. Declare "No security issues found" quando não houver vulnerabilidade.
Casos

Exemplos
de uso.

**Contexto:** um endpoint de busca de usuários por nome para um painel admin interno.

```typescript
// src/controllers/AdminController.ts
const { query } = req.query;
logger.info(`Admin search executed: query="${query}", adminId=${req.user.id}`);
const sql = `SELECT * FROM users WHERE name LIKE '%${query}%'`;
const users = await this.db.raw(sql);
```

**Saída esperada do agente**

**Classe:** SQL Injection — Linha 8
**Descrição:** `query` é inserido diretamente na string SQL sem parâmetros vinculados; um atacante pode injetar SQL arbitrário (`'; DROP TABLE users; --`).
**Impacto:** leitura, modificação ou exclusão de qualquer dado do banco.
**Severidade:** crítica
**Sugestão:** usar parameterized query (`WHERE name ILIKE ?`, `[\`%${query}%\`]`).

**Classe:** Over-fetching — Linhas 8–10
**Descrição:** `SELECT *` retorna o objeto completo, expondo `password_hash`, `reset_token`, `two_factor_secret`.
**Severidade:** alta
**Sugestão:** selecionar só os campos necessários (`id, name, email, created_at`).

**Classe:** PII em logs — Linha 6
**Descrição:** o conteúdo de `query` (nomes, emails) é logado diretamente.
**Severidade:** média
**Sugestão:** logar só o ID do admin e o fato da busca, sem o conteúdo.
Execução

Como usar
com IA.

  1. 01Copie a skill (botão "Copiar skill para IA", no topo): o texto copiado já é a skill completa, não um resumo.
  2. 02Abra o Claude ou Claude Code e cole — a IA recebe todas as instruções e fica pronta para a tarefa.
  3. 03Prefere usar como arquivo reutilizável? Baixe o .zip e coloque o SKILL.md em .claude/skills/ (Claude Code) ou anexe o arquivo no Claude (claude.ai).