How this skill is triggered — by the user, by Claude, or both
Slash command
/IomobAgents:auditar-segurancaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Agente:** `dev-security`, `tech-lead`
Agente: dev-security, tech-lead
Quando usar: Após dev-qa concluir os testes E2E e antes da revisão de PR do tech-lead. Também usado em re-auditoria após correção de achados CRITICAL/HIGH.
Baseado em: OWASP Top 10 2025 (https://owasp.org/Top10/2025/) + OWASP API Security Top 10 2023 (https://owasp.org/API-Security/editions/2023/en/0x00-header/) + Guardrails/appsec.md
Output: Relatório de segurança estruturado com achados classificados por severidade.
Referências rápidas: References/security-checklist.md
Identificar o que está sendo auditado:
- Quais camadas têm PR aberto? (backend, BFF, frontend, mensageria)
- Quais arquivos foram alterados? (listar arquivos do diff)
- Há mudanças em autenticação, autorização ou dados sensíveis?
- É re-auditoria pós-correção? Se sim, quais achados foram corrigidos?
Se for re-auditoria: auditar apenas os arquivos/áreas que foram corrigidos, não o PR inteiro.
Execute o checklist completo de cada camada presente no PR. Para cada item, registrar: ✅ Conforme | 🔴 Violação CRITICAL | 🟠 Violação HIGH | 🟡 Violação MEDIUM | 🟢 Violação LOW.
Referência: OWASP Top 10 2025. Seções do appsec.md indicadas em cada item.
§1 Injeção — A05:2025 (appsec.md §1)
$queryRaw\...``) com placeholderchild_process.exec/spawn não recebe entrada do usuário sem sanitização§2 Autenticação — A07:2025 (appsec.md §2)
exp (máximo 1h para access token)HS256 ou RS256 (nunca none)httpOnly: true, secure: true, sameSite: strict@Throttle)@Public() e comentário§3 Exposição de dados — A04:2025 Cryptographic Failures (appsec.md §3)
password, passwordHash, tokens internosAuthorization header, password, cpf, cartao§4 Controle de acesso — A01:2025 Broken Access Control (appsec.md §4)
userId: req.user.id no WHERE (anti-IDOR)@Roles + RolesGuard§5 Security misconfiguration — A02:2025 (subiu de A05:2021!) (appsec.md §5)
helmet() configurado no main.tsorigin explícito (não *)express.json({ limit: '1mb' }) configurado.env.example com valor real§9 Logging e alertas — A09:2025 Security Logging and Alerting Failures (appsec.md §9)
try/catch vazio silenciando falha de segurança§10 SSRF — controle adicional além do Top 10 2025 (appsec.md §10)
localhost são bloqueados explicitamentehttps: é aceito§12 Rate limiting (appsec.md §12)
ThrottlerModule configurado globalmente@Throttle específicoMath.min(pageSize, 100))§13 Mishandling of Exceptional Conditions — A10:2025 NOVA categoria (appsec.md §13)
catch {} ou catch (e) {} vazio silenciando exceções de segurançaprocess.on('unhandledRejection') e process.on('uncaughtException') configuradosReferência: OWASP API Security Top 10 2023. Aplicar para todo PR que toca endpoints REST, BFF ou integrações externas.
§14 Broken Object Property Level Auth — API3:2023 (appsec.md §14)
@Body() body: any — todos os inputs usam DTOs com campos explícitosResponseDto com plainToInstance — sem entidade Prisma bruta§15 Broken Function Level Authorization — API5:2023 (appsec.md §15)
@Roles declarado individualmente§16 Sensitive Business Flows — API6:2023 (appsec.md §16)
§17 Improper Inventory Management — API9:2023 (appsec.md §17)
@ApiOperation e @ApiResponse no Swagger — atualizado no mesmo PRSunset com data§18 Unsafe Consumption of APIs — API10:2023 (appsec.md §18)
timeout configurado (máximo 10s)§6 XSS — A05:2025 subvetor de Injection (appsec.md §6)
dangerouslySetInnerHTML sem DOMPurify.sanitize()href dinâmico validam protocolo (startsWith('https://'))element.innerHTML = userContent§3 Exposição de dados em UI — A04:2025 (appsec.md §3)
localStorage ou sessionStorageconsole.log com dados pessoais ou tokens§7 CSRF (appsec.md §7)
SameSite=strict configuradoPara cada item marcado como violação, registrar achado no formato:
<severidade emoji>
**Vetor:** appsec.md §<n> — <título>
**Arquivo:** <caminho>:<linha>
**Descrição:** <o que o código faz de errado>
**Impacto:** <o que um atacante pode fazer>
**Correção:** <como corrigir, com snippet de código quando possível>
## Relatório de Segurança — <PR ou serviço> — <data>
**Camadas auditadas:** backend | BFF | frontend | mensageria
**Status geral:** 🔴 CRITICAL encontrado | ✅ Aprovado sem bloqueadores
---
### Achados
<lista de achados no formato do Passo 3, ordenados: CRITICAL → HIGH → MEDIUM → LOW>
---
### Resumo
| Severidade | Qtd | Ação |
|---|---|---|
| 🔴 CRITICAL | X | Tech-lead aciona dev para correção imediata |
| 🟠 HIGH | X | Tech-lead aciona dev para correção antes do merge |
| 🟡 MEDIUM | X | Issues abertas — não bloqueia merge |
| 🟢 LOW | X | Issues abertas — próximo ciclo |
---
### Próximos passos
Se houver CRITICAL ou HIGH:
→ Reportar ao tech-lead com lista de achados e correções sugeridas
→ Aguardar correção e re-auditoria antes de liberar para merge
Se apenas MEDIUM/LOW:
→ Tech-lead pode prosseguir com revisão de PR
→ Dev abre issues para MEDIUM e LOW no repositório
Se CRITICAL ou HIGH encontrado:
1. dev-security entrega relatório ao orquestrador
2. Orquestrador repassa ao tech-lead
3. Tech-lead aciona dev responsável com achado + correção
4. Dev corrige → orquestrador aciona dev-security para re-auditoria (Fluxo C)
Se apenas MEDIUM/LOW ou nenhum achado:
1. dev-security entrega relatório com ✅ liberado para merge (ressalvas documentadas)
2. Tech-lead prossegue com revisão de PR
3. Dev abre issues para MEDIUM/LOW
| Racionalização | Rebate |
|---|---|
| "Já conheço este código, sei que está seguro" | Conhecimento pessoal não é auditoria. O checklist existe porque segurança deve ser verificável, não presumida. |
| "Vou aprovar com ressalvas e o dev corrige depois" | CRITICAL e HIGH não são ressalvas — são bloqueadores. Aprovar com achado crítico pendente expõe produção. |
| "É só um endpoint interno, não precisa de auditoria completa" | Endpoints internos são vetores frequentes de pivotagem de ataque. "Interno" não significa "sem risco". |
| "A auditoria está demorando, vou fazer só uma parte" | Auditoria parcial sem declarar o escopo auditado é pior que nenhuma — cria falsa sensação de segurança. |
| "O dev-security vai pegar, não preciso verificar no PR" | A auditoria do dev-security é a última linha — não a única. Achado na auditoria final que teria sido pego aqui custou um ciclo completo de correção. |
npx claudepluginhub iomobtec/iomobagents --plugin IomobAgentsProvides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.