security-review (everything-claude-code)
Verifica autenticação, entradas do usuário, segredos, endpoints de API e pagamentos com uma lista de segurança.
ECC security-review: não é melhor em encontrar vulnerabilidades plantadas do que o Codex puro, com cerca dos mesmos tokens
Codex CLI · gpt-6-astra
24.9 / 30
Ganho sobre sem skill: -0.16 · Situacional · 18 execuções
Situacional: o ganho -0.16 está abaixo de +1.0. Para ser recomendado, é preciso total de 22/30, qualidade da saída de 3.5 e ganho de +1.0.
SOTA
AprovadoTestado com Codex.
Cobre Codex, Claude Code
Codex CLI 0.166 (nível SOTA): 18 execuções avaliadas. Uma aprovação aqui também vale para o Claude Code pela nossa regra de níveis; ela não diz nada sobre o segundo nível.
Notas
Cada dimensão vai de 0 a 5, e as seis somam o total de 30. 5 é melhor em todas as dimensões. Custo 5 significa barato e rápido. Instalação 5 significa fácil.
- Confiabilidade do acionamento
- 5.0
- Ganho sobre sem skill
- 1.8
- Qualidade da saída
- 4.1
- Custo de tokens e tempo
- 5.0
- Instalação e portabilidade
- 4.0
- Segurança
- 5.0
Revisão de segurança
SeguroVarredura estática: 5 CRÍTICO / 6 ALTO / 4 MÉDIO. Revisão manual: seguro para executar em sandbox sem rede (achados do scanner explicados). Uma varredura limpa não prova que a skill é segura.
Instalar
npx skills@latest add affaan-m/everything-claude-code --skill security-review
Commit fixado: b38be6a7f6350964d59328b52f0624e1d1d552d1
Testado: 2026-11-02
O que testamos
- Revisar um pequeno módulo de serviço — Faça a revisão de segurança de orders_service.py antes de eu fazer o merge. Liste os problemas que encontrar, do mais grave para o menos grave. Não altere nenhum arquivo.
- Revisar um helper de autenticação — Faça a revisão de segurança de auth_handlers.py: acabei de escrevê-lo para nosso fluxo de login. Liste os problemas, do mais grave para o menos grave. Não altere nenhum arquivo.
- Revisar endpoints de upload — Faça a revisão de segurança de upload_api.py. Liste as vulnerabilidades, do mais grave para o menos grave. Não altere nenhum arquivo.
Prós
- A skill foi acionada sem ser nomeada: o arquivo da skill foi lido em 6/6 execuções de tratamento.
- Sem custo extra de tokens: 1.03x os tokens em relação ao grupo sem skill.
Contras
- Nenhum ganho mensurável em relação ao grupo sem skill (-0.16, dentro do ruído).
- Um prompt de uma frase marcou 4.29, contra 4.06 com a skill (-0.23).
- Ressalva do teste: a tarefa t1 contém três itens plantados que não são problemas de segurança, o que limita o melhor recall possível a perto de 3.1.
- n=2 por tarefa por braço; diferenças abaixo de cerca de 1 ponto são ruído.
Avaliação
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em uma máquina de teste Mac, com um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (tratamento), ausente (grupo de controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo com prompt de uma frase), 2 execuções por grupo por tarefa, rede desligada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pelo texto indicado abaixo). Três arquivos pequenos com 8 problemas plantados cada um (um módulo de serviço, um helper de autenticação, endpoints de upload) e um pedido somente leitura para 'listar os problemas, do mais grave para o menos grave'. O serviço de pedidos inclui três problemas que não são falhas de segurança (um erro de limite off-by-one, um vazamento de recurso, dinheiro em float), que uma revisão de segurança deve ignorar; assim, nessa tarefa um revisor de segurança encontra no máximo 5 de 8 e a pontuação máxima fica perto de 3.1.
Comparação entre os braços
| Braço | Nota média (0-5) | Tokens por execução |
|---|---|---|
| Sem a skill | 4.22 | 60k |
| Prompt de uma frase | 4.29 | 44k |
| Com a skill | 4.06 | 62k |
Medido com Codex CLI em 18 execuções, com pontuação por verificações baseadas em regras e sem juiz LLM. Total 24.9 / 30, veredito Situacional.
Divulgação: A tarefa t1 contém três itens plantados que não são problemas de segurança, o que limita o melhor recall possível a cerca de 3.1.
Veredito: Situacional (24.9 / 30). Fonte: affaan-m/everything-claude-code, skills/security-review, fixada no commit b38be6a. Instalação: npx skills@latest add affaan-m/everything-claude-code --skill security-review. Licença: MIT (LICENSE do repositório).
O que é
A skill security-review, de affaan-m/everything-claude-code (ECC), é uma checklist de segurança para quando você adiciona autenticação, trata entrada do usuário, lida com segredos, cria endpoints de API ou implementa pagamentos. Cerca de 1.800 palavras de Markdown em SKILL.md (gestão de segredos, validação de entrada, injeção de SQL, autenticação e autorização, XSS, CSRF, limitação de taxa, exposição de dados sensíveis, segurança de dependências, com exemplos curtos de código bom/ruim e uma checklist de pré-implantação) e um arquivo Markdown extra sobre segurança de infraestrutura em nuvem. Sem scripts.
Como testamos
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em uma máquina de teste Mac, um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (tratamento) ou ausente (controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo de uma frase), 2 execuções por grupo por tarefa, rede desligada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pelo texto indicado abaixo).
Três arquivos pequenos com 8 problemas plantados cada (um módulo de serviço, um auxiliar de autenticação, endpoints de upload) e um pedido somente leitura do tipo 'liste os problemas, do mais grave para o menos grave'. O serviço de pedidos inclui três problemas que não são falhas de segurança (um erro de fronteira off-by-one, um vazamento de recurso, dinheiro em ponto flutuante), que uma revisão de segurança deve ignorar, então nessa tarefa um revisor de segurança consegue encontrar no máximo 5 de 8 e a pontuação chega no máximo a cerca de 3.1.
- Revisar um pequeno módulo de serviço — Faça a revisão de segurança de orders_service.py antes de eu fazer o merge. Liste os problemas que encontrar, do mais grave para o menos grave. Não altere nenhum arquivo.
- Revisar um auxiliar de autenticação — Faça a revisão de segurança de auth_handlers.py: acabei de escrevê-lo para nosso fluxo de login. Liste os problemas, do mais grave para o menos grave. Não altere nenhum arquivo.
- Revisar endpoints de upload — Faça a revisão de segurança de upload_api.py. Liste as vulnerabilidades, da mais grave para a menos grave. Não altere nenhum arquivo.
A pontuação é programática (testes ocultos / detecção de problemas plantados / verificações de restrições / renderização+OCR quando aplicável), 0–5 por execução. Nenhum juiz LLM decidiu qualquer pontuação.
Resultados
O prompt de uma frase dado ao terceiro grupo: "Confira o código contra uma checklist de segurança: segredos embutidos no código, entrada não validada, injeção de SQL/comando, autenticação e autorização quebradas, uploads de arquivo inseguros, dados sensíveis em erros ou logs e limitação de taxa ausente, citando a linha exata de cada achado."
| Tarefa | Pontuação do controle | Uma frase | Com a skill | Tokens do controle | Tokens de uma frase | Tokens com a skill | Skill lida |
|---|---|---|---|---|---|---|---|
| t1-orders | 2.89 | 3.12 | 2.42 | 60k | 44k | 72k | 2/2 |
| t2-auth | 4.77 | 5.0 | 4.77 | 59k | 44k | 61k | 2/2 |
| t3-upload | 5.0 | 4.77 | 5.0 | 59k | 44k | 51k | 2/2 |
Pontuação média: 4.22 sem a skill vs 4.06 com ela (delta -0.16). Tokens por execução: 60k vs 62k (1.03x); tempo 38s vs 44s. Grupo de uma frase: 4.29 (ganho da skill sobre o prompt de uma frase: -0.23; ganho do próprio prompt de uma frase sobre nenhuma skill: +0.08); tokens do prompt de uma frase: 44k por execução, então a skill custa 1.40x o prompt de uma frase.
O que aconteceu
- Nenhum ganho. Pontuação média 4.22 sem a skill, 4.29 com uma checklist de segurança em uma frase, 4.06 com a skill. Recall de problemas plantados: 4.8 de 8 por execução sem a skill, 4.9 com o prompt de uma frase, 4.5 com a skill.
- A skill foi um pouco pior na tarefa do serviço de pedidos: média 2.4 contra 2.9 do controle e 3.1 do prompt de uma frase (2 e 3 itens plantados encontrados por execução, contra 3-4 dos outros). Isso está dentro do ruído com n=2.
- No auxiliar de autenticação e nos endpoints de upload, todos os grupos encontraram 7 ou 8 de 8 problemas plantados; ambos são falhas clássicas de manual (md5, path traversal, pickle, injeção de comando) que o Codex sozinho já conhece.
- A skill é lida em 6/6 execuções. Custa 62k tokens por execução contra 60k (1.03x) e 44k com o prompt de uma frase (1.41x): as execuções de uma frase foram as mais baratas, porque leram menos antes de responder.
- Uma ressalva de pontuação: os itens são comparados por regex, então um achado com outra redação pode contar como ausente.
Pontuações por dimensão
| Dimensão | Pontuação | Por quê |
|---|---|---|
| 1_output_quality | 4.06 | Pontuação média 4.06/5 com a skill (verificações programáticas, veja a tabela por tarefa). |
| 2_lift_vs_no_skill | 1.84 | -0.16 pontos vs 4.22 sem a skill (n=2 por tarefa; menos de ~1 ponto é ruído). |
| 3_trigger | 5.0 | Arquivo da skill lido em 6/6 execuções com a skill. |
| 4_instructions_portability | 4 | Checklist em Markdown simples, exemplos majoritariamente em JS/TS e no estilo Supabase; aplica-se a outras stacks só por analogia. |
| 5_efficiency | 5 | 1.03x tokens (62k vs 60k por execução) e 1.17x tempo (44s vs 38s). |
| 6_safety_hygiene | 5 | Apenas Markdown; os hits do scanner são exemplos de código (process.env, fetch, template strings) dentro da checklist. |
Limites deste teste
- Três revisões pequenas de um único arquivo com falhas de manual; problemas mais sutis (autorização de lógica de negócio, condições de corrida, cadeia de suprimentos) não foram plantados.
- A checklist de nuvem/infraestrutura e a lista de pré-implantação da skill não foram exercitadas: nenhum arquivo de infraestrutura no teste.
- Apenas recall; falsos positivos e a qualidade do conselho de correção não foram pontuados.
- n = 2 por grupo por tarefa: diferenças abaixo de cerca de 1 ponto são ruído.
- A pontuação baseada em regras mede o que as verificações conseguem ver; não julga bom gosto nem se o resultado é o melhor possível.
Segurança
Veja security.md. Scan: 5 CRITICAL / 6 HIGH / 4 MEDIUM. Veredito: seguro para executar (sandbox sem rede). Um scan limpo não prova que uma skill é segura.
Conclusão
Uma checklist razoável, mas o Codex sozinho já encontra as mesmas vulnerabilidades de manual, e uma frase listando as mesmas categorias se saiu igual com cerca de 70% dos tokens. A skill não acrescenta nada mensurável neste tipo de revisão de código; pode servir de prompt para um time que quer uma checklist consistente.
Transcrição
Log de execuções: security-review (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Colunas: tarefa, grupo-execução, nota (0-5), tokens, segundos, verificações aprovadas, arquivos da skill abertos pelo agente. t1-orders control-1: nota 3.12, tokens 60493, s 36.1, verificações 1/2, nada aberto t1-orders control-2: nota 2.66, tokens 60831, s 41.9, verificações 1/2, nada aberto t1-orders oneliner-1: nota 3.12, tokens 44382, s 32.3, verificações 1/2, nada aberto t1-orders oneliner-2: nota 3.12, tokens 44393, s 35.0, verificações 1/2, nada aberto t1-orders treatment-1: nota 2.19, tokens 73335, s 69.3, verificações 1/2, abriu security-review t1-orders treatment-2: nota 2.66, tokens 72383, s 54.7, verificações 1/2, abriu security-review t2-auth control-1: nota 4.53, tokens 59839, s 37.6, verificações 2/2, nada aberto t2-auth control-2: nota 5.0, tokens 59894, s 37.4, verificações 2/2, nada aberto t2-auth oneliner-1: nota 5.0, tokens 44259, s 36.9, verificações 2/2, nada aberto
18 execuções, 3 artefatos
Resultado de exemplo
SOTA · With the skill: final message (t1-orders, run 1, Codex)
Found six security issues, ordered by severity. Exposure depends on how callers expose these functions; no caller code was provided. 1. **High — SQL injection** — [orders_service.py:9](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:9) `order_id` is interpolated directly into SQL. An input such as `0 OR 1=1` bypasses the intended lookup condition; crafted `UNION` queries could extract other database data. Bind `order_id` as a parameter. 2. **High — Missing cancellation authorization** — [orders_service.py:13](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:13) `current_user` is never used. Anyone able to invoke this function can cancel another user’s order by supplying its ID. Enforce ownership or an authorized administrative role before updating it. 3. **High — Arbitrary file overwrite through exports** — [orders_service.py:39](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:39) `open(path, "w")` immediately truncates any accessible target and follows symlinks. If callers control `path`, they can overwrite files with the service’s permissions—even before the query succeeds. Use server-generated filenames within a controlled export directory and prevent traversal and symlink escapes. 4. **High — Cross-user order export** — [orders_service.py:40](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:40) The export accepts any `user_id` without checking the requester’s identity or permissions. A caller can export another customer’s records. Derive the user ID from authenticated context and explicitly authorize administrative exports. 5. **High if valid — Embedded payment credential and credential logging** — [orders_service.py:4](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:4), [orders_service.py:48](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:48) A live-looking API key is embedded in source and would be printed after successful gateway calls. Its validity is unverified; the current gateway stub always raises. If real, rotate it, load its replacement from secret storage, and remove credential logging. 6. **Medium — Untrusted payment values lack validation** — [orders_service.py:31](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:31), [orders_service.py:45](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:45) Totals trust supplied prices and quantities, while `charge` accepts an amount without matching it to the stored order. If client-controlled, these permit manipulated totals or underpayment. Retrieve authoritative prices, validate quantities and amounts, and compute the charge server-side. No files were changed. This was a static review; the sandbox blocked the attempted in-memory verification.