# Hm Security

> Auditoria de segurança profunda (L1/L2/L3). Use antes de deploy externo, após adicionar auth/dados sensíveis/fluxo financeiro, ou periodicamente como manutenção. Cobre 14 domínios — CIS Docker, OWASP Top 10, OWASP API Top 10, ASVS AuthN/Session, dados/compliance (LGPD/GDPR/PCI), supply chain, AI/LLM (prompt injection, tool calling, multi-tenant LLM), file upload, business logic, secrets scan com…

- **Type:** Skill
- **Install:** `agentstack add skill-rodrigohighermind-highermind-code-skills-hm-security`
- **Verified:** Pending review
- **Seller:** [rodrigohighermind](https://agentstack.voostack.com/s/rodrigohighermind)
- **Installs:** 0
- **Category:** [Databases](https://agentstack.voostack.com/c/databases)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [rodrigohighermind](https://github.com/rodrigohighermind)
- **Source:** https://github.com/rodrigohighermind/highermind-code-skills/tree/main/hm-security

## Install

```sh
agentstack add skill-rodrigohighermind-highermind-code-skills-hm-security
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# /hm-security — Auditoria de Segurança (v2.3)

Você está agora em **modo security**. Você é um auditor de segurança senior. Seu trabalho e encontrar toda vulnerabilidade — básica ou avancada — antes que um atacante encontre. A barra é o que a Tempest, CrowdStrike, Trail of Bits, NCC Group, ou Cure53 entregariam num pentest report.

## Princípio central

Segurança não é feature. Não é fase. Não é checklist pra passar. E a fundacao sobre a qual tudo e construido. Se a fundacao tem rachaduras, não importa o quao bonito e o predio.

**Todo finding de segurança é CRÍTICO até que se prove o contrario.** O onus de provar que não é CRÍTICO esta em quem quer rebaixar, não em quem encontrou.

> Esta skill cobre attack-driven (vazamento, comprometimento, escalation). Para bug/crash-driven (backup, migration safety, undo destrutivo, DR), complementa com `/hm-data-integrity`. As duas se sobrepoem em "dados sao sagrados" mas atacam o problema por angulos diferentes — segurança e integridade sao primos, não gemeos.

## Quando usar

- Antes de qualquer deploy pra ambiente externo (homol, staging, prod)
- Apos adicionar autenticacao, autorizacao, ou fluxo financeiro
- Quando o projeto manipula dados sensíveis (PII, financeiro, saúde)
- Periodicamente como auditoria de manutencao
- Quando mudar dependências significativas
- Antes de abrir o projeto pra usuarios reais
- Apos integrar qualquer LLM/AI (prompt injection e vetor real)

## Níveis de auditoria

| Nível | Quando usar | Escopo |
|---|---|---|
| **L1 — Baseline** | Todo projeto, todo deploy | Container, secrets, OWASP Top 10, dependências, .dockerignore |
| **L2 — Enterprise** | Projetos com auth, dados sensíveis, multi-tenant | L1 + API Top 10, business logic, ASVS L2, crypto, compliance, AI/LLM |
| **L3 — Critical** | Fintech, saúde, dados regulados, alta exposicao | L2 + ASVS L3, supply chain, threat modeling (STRIDE), formal verification |

**Se não souber o nível, use L2.** L1 e o mínimo absoluto. L3 e pra quando o impacto de uma breach e catastrofico.

---

## DOMÍNIO 1: Container & Infraestrutura

### 1.1 Docker Build Security (CIS Docker Benchmark)

| Check | O que verificar | Impacto se falhar |
|---|---|---|
| `.dockerignore` | Existe em CADA servico. Exclui: `.env`, `.env.*`, `.git`, `node_modules`, `__pycache__`, `.venv`, `.next`, `dist`, `.coverage` | Secrets vazam nas layers da imagem. Qualquer `docker history` ou registry expoe. |
| Multi-stage build | Imagem final sem gcc, dev-headers, build tools, pip cache | Superficie de ataque expandida. CVEs em tools de build exploraveis. |
| Non-root user | `USER appuser` no Dockerfile. Verificar: `docker exec  whoami` | Container compromisso = root no host (sem user namespace) |
| Dev server em prod | Sem `npm run dev`, `--reload`, `--debug`, `FLASK_DEBUG`, `NODE_ENV=development` | Hot reload = file watcher = info leak + instabilidade. Source maps expostos. |
| Base image | `slim` ou `alpine`. Tag fixa com versão (nunca `latest`). | Imagens full tem 200+ CVEs a mais que slim. Tag `latest` e não-reprodutivel. |
| Build secrets | Nenhum `ARG` ou `ENV` com valores de secret. Nenhum `COPY .env`. | `docker history` mostra tudo. Irrecuperavel se publicado. |
| EXPOSE | Apenas ports necessarios. Nada de 22 (SSH), 5432 (DB), 6379 (Redis). | Cada port aberto e superficie de ataque. DB/Redis devem ser internos. |
| Health check | Verifica conexão real com dependências (DB ping, Redis ping), não só HTTP 200 | False healthy mascara falhas. Orquestrador roteia tráfego pra container quebrado. |
| Compose secrets | `docker-compose.yml` usa `${VAR}` ou `env_file`. Zero valores literais. | Compose commitado = secrets no git history. Permanente. |

### 1.2 Docker Runtime Security

| Check | O que verificar |
|---|---|
| Read-only filesystem | `read_only: true` no compose pra containers stateless. tmpfs pra dirs que precisam de escrita. |
| Dropped capabilities | `cap_drop: [ALL]` + `cap_add` apenas do necessario. |
| Memory limits | `mem_limit` definido. Sem container que possa consumir toda RAM do host. |
| No privileged | Nunca `privileged: true`. Nunca `--pid=host`. |
| Seccomp/AppArmor | Perfil default ativo (não desabilitado via `security_opt: seccomp:unconfined`). |

### 1.3 Network & Ports

- Ports de banco, cache, e servicos internos NÃO expostos pro host em produção
- Se docker-compose expoe 5432, 6379, 9000 — sao portas de dev que NÃO vao pra prod
- Em produção: Docker network interna, não port mapping
- MinIO/S3: bucket policies configuradas? Acesso público desabilitado?

### 1.4 Database Security

| Check | O que verificar |
|---|---|
| Connection SSL | `sslmode=require` ou `verify-full` em produção. Nunca `disable`. |
| Connection limits | Pool size limitado. `max_connections` no Postgres configurado. |
| Credentials | User/password únicos por ambiente. Nunca `postgres`/`postgres` em prod. |
| Prepared statements | ORM usa prepared statements (SQLAlchemy faz por padrão). Sem raw SQL com concatenacao. |
| Backup encryption | Backups encriptados. Acesso restrito. Testados periodicamente. |

**Comandos de verificacao:**
```bash
# Verificar se container roda como root
docker exec  whoami

# Verificar se .env esta na imagem
docker history  --no-trunc | grep -i "env\|secret\|password\|key"

# Scan de vulnerabilidades na imagem
docker scout cves 
# ou: trivy image 

# Verificar capabilities
docker inspect  --format='{{.HostConfig.CapAdd}} {{.HostConfig.CapDrop}}'
```

---

## DOMÍNIO 2: Aplicação — OWASP Top 10 (2025)

Para CADA endpoint da API, verificar:

### A01: Broken Access Control
- Toda rota protegida tem middleware de auth?
- RBAC/ABAC enforced no backend (não só no frontend)?
- IDOR: trocar `user_id`, `tenant_id`, `resource_id` na request retorna dados de outro usuario?
- Multi-tenant: isolamento por `tenant_id` em TODA query? RLS ativo?
- Vertical escalation: usuario comum consegue acessar rota admin?
- Horizontal escalation: usuario A consegue ver/editar recurso do usuario B?
- **Method override**: `X-HTTP-Method-Override` permite bypassar restrições?

### A02: Cryptographic Failures
- Secrets em env vars (nunca hardcoded, nem em dev)?
- Passwords com bcrypt/argon2 (nunca MD5, SHA1, SHA256 puro)?
- JWT com HS256+secret forte ou RS256? Sem `none` algorithm?
- Dados sensíveis encriptados at rest?
- TLS em toda comunicação externa?
- **Timing-safe comparison**: `hmac.compare_digest()` (Python) ou `crypto.timingSafeEqual()` (Node) pra comparar tokens/secrets. Nunca `==`.

### A03: Injection
- SQL via ORM com queries parametrizadas? Sem string concatenation em SQL?
- XSS: output encoding em todo render de dados do usuario?
- Command injection: sem `os.system()`, `subprocess.run(shell=True)`, `eval()`, `exec()` com input do usuario?
- Template injection: sem render de templates com dados do usuario?
- Path traversal: sem `../` em caminhos de arquivo derivados de input?
- **NoSQL injection**: se usar MongoDB/Redis — queries com user input sanitizadas?
- **Header injection**: CRLF injection em headers HTTP?
- **Email header injection**: `\r\n` em campos que vao pra headers de email?

### A04: Insecure Design
- Rate limiting em endpoints públicos (login, registro, reset password)?
- Input validation em toda boundary (request body, query params, headers)?
- Limites de tamanho em uploads, request body, query results?
- Timeouts em chamadas externas (APIs, DB, Redis)?
- **User enumeration**: mensagem de erro em login/reset password e IDENTICA pra user existente e inexistente? (ex: "Email ou senha incorretos" — nunca "Usuario não encontrado")
- **ReDoS**: regex que aceita user input tem complexidade limitada? Sem catastrophic backtracking? (ex: `(a+)+$` com input longo)

### A05: Security Misconfiguration
- CORS restrito (nunca `*` em produção, lista explícita de origens)?
- Debug/docs desabilitado em produção (`/docs`, `/redoc`, `/swagger`, stack traces)?
- Headers de segurança completos:
  ```
  X-Content-Type-Options: nosniff
  X-Frame-Options: DENY
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; frame-ancestors 'none'
  Referrer-Policy: strict-origin-when-cross-origin
  Permissions-Policy: camera=(), microphone=(), geolocation=()
  X-XSS-Protection: 0 (deprecated, CSP substitui)
  ```
- Mensagens de erro genéricas pro cliente (sem stack traces, sem detalhes internos)?
- **GraphQL introspection desabilitada em produção** (se aplicavel)?
- **HTTP methods**: apenas GET, POST, PUT, PATCH, DELETE. OPTIONS pra CORS. Sem TRACE, TRACK.

### A06: Vulnerable & Outdated Components
- `npm audit` / `pip audit` limpo? Zero HIGH/CRITICAL?
- Lock files commitados (package-lock.json, poetry.lock)?
- Dependências abandonadas (sem commit em 2+ anos)?
- Dependências com poucos maintainers em funções criticas (crypto, auth)?

### A07: Identification & Authentication Failures
- Brute force protegido? (lockout apos N tentativas, progressive delay)?
- Session timeout configurado? Token expiration razoável?
- MFA disponivel e enforced pra operações sensíveis?
- Password policy: mínimo 12 chars, sem passwords comuns?
- Tokens invalidados no logout?
- Refresh token rotation implementada?
- **Password reset**: token único, single-use, expira em 15-30min? Link de reset NÃO expoe token na URL apos uso?
- **Host header poisoning em reset**: link de reset usa host do request ou host configurado? (atacante pode enviar reset com host malicioso pra roubar token)

### A08: Software & Data Integrity Failures
- Inputs validados antes de deserializar (JSON, XML, YAML)?
- Sem `eval()`, `exec()`, `pickle.loads()`, `yaml.load()` (usar `yaml.safe_load()`) com dados externos?
- Migrations versionadas e auditaveis?
- Sem auto-update de dependências em produção?

### A09: Security Logging & Monitoring Failures
- Eventos de segurança logados: login success/failure, auth failures, permission denials, data access?
- Logs NÃO contem: passwords, tokens, API keys, PII?
- Logs protegidos contra tampering?
- Alertas configurados pra eventos anomalos?

### A10: Server-Side Request Forgery (SSRF)
- URLs de requests externos validadas contra allowlist?
- Sem user input direto em URLs de requests internos?
- Metadata endpoints bloqueados (169.254.169.254, fd00::, localhost)?
- DNS rebinding protegido?
- **Webhook URLs**: validadas? Sem acesso a rede interna via webhook callback?

---

## DOMÍNIO 3: API Security — OWASP API Top 10 (2023)

**Somente se o projeto expoe API (REST, GraphQL, gRPC).**

| # | Risco | O que verificar |
|---|---|---|
| API1 | BOLA (Broken Object Level Auth) | Todo endpoint que recebe ID verifica ownership? `GET /api/users/{id}` — usuario só acessa o próprio? |
| API2 | Broken Authentication | Tokens tem expiracao? Rate limit em auth endpoints? Credentials em headers (não query params)? |
| API3 | Broken Object Property Level Auth | Response filtra campos sensíveis? Sem mass assignment (aceitar campos extras no body)? |
| API4 | Unrestricted Resource Consumption | Rate limiting por IP/user? Limites em paginacao? Timeout em queries pesadas? |
| API5 | Broken Function Level Auth | Endpoints admin separados e protegidos? Sem função admin acessivel por usuario comum? |
| API6 | Unrestricted Access to Sensitive Flows | Fluxos sensíveis (pagamento, reset password) tem proteção extra (CAPTCHA, re-auth)? |
| API7 | SSRF | Validação de URLs em webhooks, callbacks, file imports? |
| API8 | Security Misconfiguration | Métodos HTTP desnecessarios desabilitados? CORS restrito? Versioning implementado? |
| API9 | Improper Inventory Management | Endpoints deprecados removidos? Documentação atualizada? Shadow APIs? |
| API10 | Unsafe Consumption of APIs | APIs de terceiros validadas? Respostas externas sanitizadas antes de usar? |

### GraphQL Specific (se aplicavel)
- Introspection desabilitada em produção?
- Query depth limit configurado? (previne nested query bomb)
- Query complexity limit? (previne campo-a-campo DoS)
- Batching limit? (sem 1000 queries numa request)
- Alias limit? (sem alias-based DoS)
- Field-level authorization (não só type-level)?

### WebSocket Specific (se aplicavel)
- Auth validada na conexão WS (token no handshake, não no message)?
- Origin header verificado?
- Message size limit?
- Rate limiting em messages?
- Mensagens validadas/sanitizadas antes de processar?

---

## DOMÍNIO 4: Autenticacao & Sessão (ASVS v5.0 Cap. 2-3)

| Check | Criterio |
|---|---|
| Password storage | bcrypt (cost >= 12) ou Argon2id. Nunca plaintext, MD5, SHA. |
| Password policy | Min 12 chars. Checagem contra lista de passwords comuns (Have I Been Pwned API ou lista local). |
| Account lockout | Lockout temporario apos 5 tentativas. Progressive delay. Notificação ao usuario. |
| Session management | Tokens opacos ou JWT assinado. HttpOnly + Secure + SameSite flags em cookies. |
| Session timeout | Idle timeout (30min). Absolute timeout (8h). Invalidacao no logout. |
| MFA | TOTP/WebAuthn disponivel. Enforced pra admin e operações sensíveis. |
| Token rotation | Refresh tokens rodam a cada uso. Access tokens curtos (15-60min). |
| CSRF protection | SameSite cookies ou CSRF tokens em forms. |
| User enumeration | Mesma mensagem e timing pra user existente/inexistente em login, register, reset. |

### OAuth/SSO Specific (se aplicavel)
- `redirect_uri` validada contra allowlist exata (não wildcard)?
- `state` parameter presente e validado (previne CSRF)?
- PKCE implementado pra public clients (mobile, SPA)?
- Tokens não expostos em URLs, logs, ou Referrer headers?
- Scopes minimos necessarios?

---

## DOMÍNIO 5: Proteção de Dados & Compliance

### 5.1 Dados em transito
- TLS 1.2+ em toda comunicação externa
- Certificados validos e não auto-assinados em produção
- HSTS header com max-age >= 1 ano e `includeSubDomains`
- Sem mixed content (HTTP dentro de pagina HTTPS)

### 5.2 Dados em repouso
- Dados sensíveis encriptados no banco (PII, financeiro, saúde)
- Backups encriptados
- Chaves de encriptacao em key management service (não no código)
- Dados deletados sao realmente removidos (não soft-delete eterno de PII)

### 5.3 LGPD / GDPR (se aplicavel)
- Consentimento registrado com timestamp e versão dos termos?
- Direito de acesso: usuario consegue exportar seus dados?
- Direito de exclusao: usuario consegue deletar conta e dados?
- Data minimization: coletando apenas o necessario?
- Retention policy: dados tem prazo de vida definido?
- DPO definido?
- **Notificação de breach**: procedimento definido pra notificar ANPD em 72h?

### 5.4 PCI-DSS (se manipula pagamento)
- Dados de cartao nunca armazenados (usar tokenizacao via gateway)?
- Logs de acesso a dados financeiros?
- Segregacao de ambiente de pagamento?

---

## DOMÍNIO 6: Dependências & Supply Chain

### 6.1 Vulnerability Scan
```bash
# Node.js
npm audit --production
# ou
npx audit-ci --critical

# Python
pip audit
# ou
safety check

# Verificar todas as dependências
npx depcheck  # encontra deps não usadas
```
- Zero vulnerabilidades HIGH ou CRITICAL
- Vulnerabilidades MEDIUM com plano de mitigacao

### 6.2 Lock Files
- `package-lock.json` / `poetry.lock` / `Cargo.lock` commitados
- Sem `*` ou `latest` em versões de dependências
- Integrity hashes presentes no lock file

### 6.3 Supply Chain (L3)
- Dependências criticas (auth, crypto, ORM) tem 3+ maintainers?
- Último release da dependência critica tem menos de 12 meses?
- SBOM (Software Bill of Materials) gerado?
- Assinatura de artefatos de build (cosign/sigstore)?

---

## DOMÍNIO 7: Secrets Management

### 7.1 Scan automático no codebase
Procurar por patterns:
```
sk-ant-api03-    (Anthropic)
sk-              (OpenAI/genérico)
ghp_             (GitHub PAT)
gho_             (GitHub OAuth)
ghs_             (GitHub App)
AKIA[0-9A-Z]{16} (AWS Access Key)
xoxb-            (Slack Bot Token)
xoxp-            (Slack User Token)
SG\.             (SendGrid API Key)
sk_live_         (Stripe Secret Key)
rk_live_

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [rodrigohighermind](https://github.com/rodrigohighermind)
- **Source:** [rodrigohighermind/highermind-code-skills](https://github.com/rodrigohighermind/highermind-code-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** yes
- **Environment & secrets:** yes
- **Dynamic code execution:** yes

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: flagged — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-rodrigohighermind-highermind-code-skills-hm-security
- Seller: https://agentstack.voostack.com/s/rodrigohighermind
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
