security-audit

SKILL.md

Security Audit

OWASP Top 10

A01 - Broken Access Control

Verificar que autenticado ≠ autorizado. Cada endpoint verifica que el recurso pertenece al usuario.

// ❌ Solo verifica que está autenticado
app.delete('/posts/:id', authenticate, async (req, res) => {
  await db.post.delete({ where: { id: req.params.id } })
})

// ✅ Verifica que el recurso pertenece al usuario
app.delete('/posts/:id', authenticate, async (req, res) => {
  const post = await db.post.findFirst({
    where: { id: req.params.id, authorId: req.user.id }
  })
  if (!post) return res.status(404).json({ error: 'Not found' })
  await db.post.delete({ where: { id: post.id } })
})

A02 - Cryptographic Failures

Contraseñas con bcrypt/argon2 (nunca MD5/SHA sin salt). JWT secrets en variables de entorno, mínimo 32 chars.

// ❌ Algoritmo débil
const hash = crypto.createHash('md5').update(password).digest()

// ✅ Algoritmo seguro
const hash = await bcrypt.hash(password, 12)

A03 - Injection

Queries parametrizadas siempre. Validar inputs antes de exec/spawn.

// ❌ SQL Injection
const query = `SELECT * FROM users WHERE email = '${email}'`

// ✅ Query parametrizada
const user = await db.query('SELECT * FROM users WHERE email = $1', [email])

A05 - Security Misconfiguration

helmet(), CORS restringido, rate limiting en auth (5 intentos/15min).

// Rate limiting
app.use('/auth/login', rateLimit({
  windowMs: 15 * 60 * 1000,
  max: 5,
  message: 'Too many attempts'
}))

A07 - Authentication Failures

Tiempo de respuesta constante, refresh tokens con hash, expiración y revocación.

A08 - Integrity

package-lock.json en repo, npm ci en CI/CD, npm audit en pipeline.

Detección de secrets

# Buscar secrets con grep
grep -r "password\s*=" --include="*.ts" .

# gitleaks
gitleaks detect --source-path .

Informe de auditoría

ID Severidad Categoría OWASP Archivo Estado
SEC-001 Critical A01 src/api/posts.ts Pendiente
SEC-002 High A03 src/db/query.ts Corregido

Severidades: Critical, High, Medium, Low.

Cuándo activarme

  • "Revisa este código en busca de vulnerabilidades"
  • "Audita la seguridad del proyecto"
  • "Hay algún CVE en nuestras dependencias?"
Weekly Installs
2
First Seen
Feb 25, 2026
Installed on
openclaw2
antigravity2
claude-code2
github-copilot2
codex2
kimi-cli2