Sigla en azul →glosario(primera vez: expansión entre paréntesis).
M25 — Ciberseguridad aplicada
Por qué existe
Capa C de la pista de seguridad, aplicada a tu SaaS multi-tenant . El fallo #1 a cazar: IDOR cross-tenant (el tenant A lee datos del B). Ver producto-saas.
En resumen: ciber aplicada al SaaS multi-tenant: el bug #1 a cazar es IDOR cross-tenant.
Objetivos de aprendizaje
- Inventariar activos y superficie del SaaS desplegado.
- Security review con pruebas de aislamiento entre tenants.
- Hardening de producción (HTTPS , backups, least privilege, secrets Stripe).
- Tabletop de incidente + runbook.
- Intro privacidad/datos (contexto MX) por tenant.
Cómo estudiar esta materia (lecciones)
M25 es ciberseguridad aplicada al SaaS Agenda Ops: L01–L24, evidencia en projects/m25-ciber/ y fixes en el repo del producto.
- Orden L01 → L24; prioriza IDOR cross-tenant sobre hallazgos cosméticos.
- Solo atacas tus ambientes prod/staging acordados.
- Cierra ≥2 issues críticos/altos de aislamiento con tests antes del cierre.
- Tabletop documentado (≥30 min narrativa) sin copiar tutorial.
- hilo seguridad + producto-saas.
Semana tipo (20 h)
| Bloque | Horas | Qué haces |
|---|---|---|
| Lecciones + labs | 10–12 | 4× ~5 h en inventario/review/hardening |
| Fixes cross-tenant | 4–6 | PRs con tests |
| Tabletop / informe | 4–6 | security-review.md |
| Retro | 1 | Riesgo residual |
Si un día solo tienes 2 h: prueba manual A vs B o un fix con test.
Lecciones
Semana 1 — Inventario y clasificación multi-tenant (~20 h)
| ID | Lección | ~h |
|---|---|---|
| L01 | Inventario de activos SaaS prod y staging | 5 |
| L02 | Clasificación de datos por tenant | 5 |
| L03 | Dos tenants de prueba y mapa de identidades | 5 |
| L04 | Primera prueba manual cross-tenant | 5 |
Semana 2 — Authn/authz y tests cross-tenant (~20 h)
| ID | Lección | ~h |
|---|---|---|
| L05 | Review authn — sesión y tokens | 5 |
| L06 | Review authz — roles staff vs admin | 5 |
| L07 | Automatizar test cross-tenant en CI | 5 |
| L08 | Cerrar ≥1 hallazgo crítico de aislamiento | 5 |
Semana 3 — Hardening deploy y Stripe (~20 h)
| ID | Lección | ~h |
|---|---|---|
| L09 | HTTPS, headers y configuración prod | 5 |
| L10 | Secretos Stripe y rotación | 5 |
| L11 | Least privilege DB y deploy | 5 |
| L12 | Backup y restore probado | 5 |
Semana 4 — Logging, abuso y alertas (~20 h)
| ID | Lección | ~h |
|---|---|---|
| L13 | Logging sin secretos ni PII innecesaria | 5 |
| L14 | Rate limit login y abuso básico | 5 |
| L15 | Alertas mínimas operativas | 5 |
| L16 | Errores HTTP y fugas de stack | 5 |
Semana 5 — Privacidad y cierre de hallazgos (~20 h)
| ID | Lección | ~h |
|---|---|---|
| L17 | Retención y borrado por tenant | 5 |
| L18 | Minimización en exports y soporte | 5 |
| L19 | Consentimiento y avisos (contexto MX) | 5 |
| L20 | Segundo hallazgo aislamiento cerrado | 5 |
Semana 6 — Tabletop y security review final (~20 h)
| ID | Lección | ~h |
|---|---|---|
| L21 | Tabletop — fuga de .env | 5 |
| L22 | Tabletop — acceso cross-tenant en prod | 5 |
| L23 | Runbook de respuesta incidentes | 5 |
| L24 | Security review final y cierre M25 | 5 |
Empieza por L01 hoy.
Lecturas (mapa rápido)
Canon: OWASP Testing Guide (secciones por semana) + hilo seguridad. Ver bibliografía.
| Semana | Lecciones | OWASP / foco | Entrega |
|---|---|---|---|
| 1 | L01–L04 | Information gathering | inventario.md, tenants prueba |
| 2 | L05–L08 | Identity / authorization | Tests cross-tenant |
| 3 | L09–L12 | Configuration + Stripe | Hardening + restore |
| 4 | L13–L16 | Logging / abuse | Política logs + rate limit |
| 5 | L17–L20 | Privacy / retención | 2º hallazgo cerrado |
| 6 | L21–L24 | Reporting + tabletop | security-review.md |
Regla: al menos 2 issues críticos/altos de aislamiento cerrados con tests.
Ejemplo — checklist SaaS
[ ] Auth en endpoints sensibles
[ ] Autorización por tenant_id + rol (anti IDOR cross-tenant)
[ ] Tests automatizados cross-tenant
[ ] Rate limit en login
[ ] Headers de seguridad en prod
[ ] Backups restaurables
[ ] Logs sin secretos/PII innecesaria
[ ] Webhooks Stripe verificados (firma)
Prácticas
P1–P3 del frontmatter. Al menos 2 issues críticos/altos de aislamiento cerrados con tests.
Proyecto útil
projects/m25-ciber/security-review.md + PRs. Alimenta M26.
Errores comunes
Ignorar multi-tenant; 50 hallazgos CSS y cero cross-tenant; no verificar webhooks.
Evidencia de hecho
Marca la práctica en la UI solo si existe esto (o equivalente claro):
- P1 — Inventario: Activos + clasificación por tenant.
- P2 — Review: ≥2 issues aislamiento cerrados con tests.
- P3 — Tabletop: 30 min documentados (.env/fuga).
- Proyecto — Security review:
projects/m25-ciber/security-review.md.
Criterios de dominio
- Demo: A no lee datos de B (manual + test).
- Tabletop 30 min sin tutorial.
- TLS + secrets fuera de repo + restore probado.