← Cursos Pensum // Seguridad

Seguridad para ingenieros de software, construyendo y rompiendo

No es una lista de vulnerabilidades para memorizar. Es un currículo autoguiado que va del laboratorio local a un plano de control para agentes de IA, con el mismo ciclo en cada lección: construyes algo, lo rompes dentro de tu propio laboratorio, miras qué quedó en los logs, lo defiendes y verificas que la defensa aguanta. Todo lo práctico ocurre en contenedores y máquinas virtuales tuyas. Nada apunta jamás a un sistema de terceros.

Formato · autoguiado, 80 lecciones Práctica · 6 ejercicios y un laboratorio por lección Laboratorios · 29 entornos en Docker Proyecto · Secure AI Infrastructure Control Plane
el ciclo de cada lección● método
construir → atacar → observar → defender → verificar
docker compose up -d # construyes el sistema que vas a estudiar curl -s "http://localhost:8080/api?id=1' OR 1=1--" # lo rompes: dentro de TU laboratorio, nunca fuera docker compose logs app | grep -i error # observas que quedo registrado, y que no quedo docker compose up -d --build # con la correccion # defiendes, y vuelves a lanzar el ataque para verificar
el supuesto del proyecto finalΔ

El proyecto que atraviesa el curso se diseña partiendo de una premisa incómoda: el modelo acabará comprometido.

Bajo esa condición, el agente no debe poder leer secretos, ni obtener credenciales permanentes, ni alterar sus propias políticas, ni tocar los logs, ni ejecutar comandos arbitrarios, ni salir del sandbox, ni hacer nada destructivo sin aprobación. Cada fase del curso añade una de esas garantías y la verifica atacándola.

El ciclo, en cada una de las lecciones

01construir
02atacar
03observar
04defender
05verificar

F00 · Montar el laboratorio

LABORATORIO · LECCIÓN 01

Anatomía del laboratorio

Objetivo: Entender qué piezas componen un laboratorio local y por qué cada una está aislada.
lab-00-base 6 ejercicios + reto laboratorio local
Estudiar lección
LABORATORIO · LECCIÓN 02

Docker y Compose como plataforma de práctica

Objetivo: Manejar redes, volúmenes y variables de entorno para montar entornos reproducibles.
lab-00-base 6 ejercicios + reto laboratorio local
Estudiar lección
LABORATORIO · LECCIÓN 03

Máquinas virtuales, snapshots y ventanas de daño

Objetivo: Aislar el laboratorio del equipo real y poder revertirlo a un estado conocido.
lab-00-vm 6 ejercicios + reto laboratorio local
Estudiar lección
LABORATORIO · LECCIÓN 04

Levantar, destruir y reconstruir

Objetivo: Adquirir la disciplina de reset y cerrar el laboratorio con un firewall local.
lab-00-base 6 ejercicios + reto laboratorio local
Estudiar lección

F01 · Fundamentos de seguridad

FUNDAMENTOS · LECCIÓN 01

CIA, riesgo, amenaza, vulnerabilidad y exploit

Objetivo: Nombrar con precisión qué se protege, de qué y con qué probabilidad e impacto.
lab-00-base 6 ejercicios + reto laboratorio local
Estudiar lección
FUNDAMENTOS · LECCIÓN 02

Superficie de ataque y fronteras de confianza

Objetivo: Dibujar dónde termina lo que controlas y empieza lo que solo esperas que se porte bien.
lab-00-base 6 ejercicios + reto laboratorio local
Estudiar lección
FUNDAMENTOS · LECCIÓN 03

Defensa en profundidad, mínimo privilegio y fallo seguro

Objetivo: Diseñar para que romper una capa no sea el final de la historia.
lab-00-base 6 ejercicios + reto laboratorio local
Estudiar lección
FUNDAMENTOS · LECCIÓN 04

Zero Trust y separación de responsabilidades

Objetivo: Sustituir la confianza por ubicación de red por verificación por petición.
lab-00-base 6 ejercicios + reto laboratorio local
Estudiar lección

F02 · Redes, TLS y perímetro

REDES · LECCIÓN 01

TCP/IP, puertos y qué escucha de verdad

Objetivo: Leer la tabla de sockets de una máquina y saber exactamente qué expone.
lab-net-captura 6 ejercicios + reto laboratorio local
Estudiar lección
REDES · LECCIÓN 02

DNS, DHCP y ARP: resolución y suplantación

Objetivo: Seguir una resolución completa y ver dónde se puede envenenar.
lab-net-captura 6 ejercicios + reto laboratorio local
Estudiar lección
REDES · LECCIÓN 03

HTTP a fondo: métodos, cabeceras, cookies y proxies

Objetivo: Ver la petición como la ve un intermediario y entender qué puede modificar.
lab-net-proxy 6 ejercicios + reto laboratorio local
Estudiar lección
REDES · LECCIÓN 04

TLS y certificados: qué garantiza y qué no

Objetivo: Explicar el handshake, la cadena de confianza y dónde falla la verificación.
lab-net-tls 6 ejercicios + reto laboratorio local
Estudiar lección
REDES · LECCIÓN 05

Firewalls, default-deny y control de egress

Objetivo: Segmentar redes y cortar la salida para contener el movimiento lateral.
lab-net-firewall 6 ejercicios + reto laboratorio local
Estudiar lección

F03 · Linux y seguridad de sistemas

LINUX · LECCIÓN 01

Usuarios, grupos, permisos y sudo

Objetivo: Leer y romper los permisos de archivo del sistema de ficheros.
lab-linux-privesc 6 ejercicios + reto laboratorio local
Estudiar lección
LINUX · LECCIÓN 02

Procesos, /proc, PATH y variables de entorno

Objetivo: Ver qué filtra un proceso sobre sí mismo y cómo se secuestra su ejecución.
lab-linux-privesc 6 ejercicios + reto laboratorio local
Estudiar lección
LINUX · LECCIÓN 03

cron, systemd y mecanismos de persistencia

Objetivo: Reconocer los puntos donde un atacante se queda a vivir en el sistema.
lab-linux-persist 6 ejercicios + reto laboratorio local
Estudiar lección
LINUX · LECCIÓN 04

Capabilities: por qué root es demasiado

Objetivo: Sustituir "ser root" por el permiso exacto que el proceso necesita.
lab-linux-caps 6 ejercicios + reto laboratorio local
Estudiar lección
LINUX · LECCIÓN 05

Namespaces, cgroups, seccomp y AppArmor

Objetivo: Confinar un proceso por syscalls, recursos y vista del sistema.
lab-linux-caps 6 ejercicios + reto laboratorio local
Estudiar lección

F04 · Seguridad web

WEB · LECCIÓN 01

Autenticación y gestión de sesión

Objetivo: Distinguir identidad de sesión y endurecer cookies, fijación y rotación.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación
WEB · LECCIÓN 02

Control de acceso roto e IDOR

Objetivo: Separar autenticación de autorización y detectar objetos accesibles por identificador.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación
WEB · LECCIÓN 03

Inyección SQL: del ataque a la consulta preparada

Objetivo: Extraer datos por concatenación y cerrar la vía con parámetros y privilegio mínimo.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación
WEB · LECCIÓN 04

Inyección de comandos y path traversal

Objetivo: Ir de una cadena de shell a ejecución remota, y de "../" a leer lo que no toca.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación
WEB · LECCIÓN 05

XSS reflejado, almacenado y en DOM

Objetivo: Ejecutar código en el navegador de otro usuario y cortarlo con codificación y CSP.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación
WEB · LECCIÓN 06

CSRF y SSRF

Objetivo: Usar la sesión de la víctima y hacer que el servidor pida por ti hacia dentro.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación
WEB · LECCIÓN 07

Subida de archivos y deserialización insegura

Objetivo: De la imagen "inocente" al webshell, y del objeto reconstruido a la ejecución.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación
WEB · LECCIÓN 08

Condiciones de carrera, configuración insegura y secretos expuestos

Objetivo: Explotar el hueco entre comprobar y usar, y encontrar lo que la app filtra sola.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación

F05 · Modelado de amenazas

THREAT MODELING · LECCIÓN 01

Activos, actores, puntos de entrada y flujos de datos

Objetivo: Dibujar el sistema como un mapa de datos que cruzan fronteras.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación
THREAT MODELING · LECCIÓN 02

STRIDE aplicado a un sistema real

Objetivo: Generar amenazas de forma sistemática en vez de por intuición.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación
THREAT MODELING · LECCIÓN 03

Modelar tu propio proyecto y priorizar mitigaciones

Objetivo: Convertir un modelo de amenazas en una lista de trabajo ordenada por riesgo.
lab-web-vulnshop 6 ejercicios + reto laboratorio local
En preparación

F06 · Seguridad de APIs

APIS · LECCIÓN 01

Autorización de API, scopes y mass assignment

Objetivo: Impedir que el cliente escriba campos que no le corresponden.
lab-api-vuln 6 ejercicios + reto laboratorio local
En preparación
APIS · LECCIÓN 02

Validación de esquema, entrada, salida y enumeración

Objetivo: Rechazar lo que no encaja antes de que llegue a la lógica de negocio.
lab-api-vuln 6 ejercicios + reto laboratorio local
En preparación
APIS · LECCIÓN 03

Rate limiting, replay, firmas e idempotencia

Objetivo: Encarecer el abuso y conseguir que repetir una petición no cause daño.
lab-api-vuln 6 ejercicios + reto laboratorio local
En preparación

F07 · Identidad y acceso

IAM · LECCIÓN 01

RBAC y ABAC: diseñar la autorización

Objetivo: Elegir el modelo correcto y escribir políticas que se puedan probar.
lab-iam-oidc 6 ejercicios + reto laboratorio local
En preparación
IAM · LECCIÓN 02

OAuth 2.1 y OIDC: qué resuelven y qué no

Objetivo: Delegar acceso e identidad sin repartir credenciales, con code + PKCE.
lab-iam-oidc 6 ejercicios + reto laboratorio local
En preparación
IAM · LECCIÓN 03

JWT: firma, claims, expiración y errores clásicos

Objetivo: Validar un token de verdad y reconocer alg=none, confusión de claves y kid traversal.
lab-iam-jwt 6 ejercicios + reto laboratorio local
En preparación
IAM · LECCIÓN 04

Identidad de máquina: tokens efímeros y rotación

Objetivo: Dar identidad a un servicio sin secretos de larga vida.
lab-iam-jwt 6 ejercicios + reto laboratorio local
En preparación

F08 · Gestión de secretos

SECRETOS · LECCIÓN 01

Dónde NO viven los secretos

Objetivo: Encontrar credenciales en código, .env, logs, historial de git y CI.
lab-secrets-git 6 ejercicios + reto laboratorio local
En preparación
SECRETOS · LECCIÓN 02

Secret managers, Vault y KMS

Objetivo: Sacar el secreto del código y del entorno, y cifrar con sobres.
lab-secrets-vault 6 ejercicios + reto laboratorio local
En preparación
SECRETOS · LECCIÓN 03

Credential broker: el patrón para workloads y agentes

Objetivo: Conseguir que nadie toque la credencial, solo su efecto.
lab-secrets-vault 6 ejercicios + reto laboratorio local
En preparación

F09 · Criptografía práctica

CRIPTOGRAFÍA · LECCIÓN 01

Hashing y cifrado: elegir la primitiva correcta

Objetivo: Separar integridad, confidencialidad y autenticidad, y no confundirlas nunca.
lab-crypto 6 ejercicios + reto laboratorio local
En preparación
CRIPTOGRAFÍA · LECCIÓN 02

Contraseñas, salt y funciones de derivación

Objetivo: Entender por qué SHA256(password) está mal y qué coste debe tener argon2.
lab-crypto 6 ejercicios + reto laboratorio local
En preparación
CRIPTOGRAFÍA · LECCIÓN 03

Firmas, certificados y rotación de claves

Objetivo: Firmar y verificar un artefacto, y planificar el cambio de clave.
lab-crypto 6 ejercicios + reto laboratorio local
En preparación

F10 · Seguridad de contenedores

CONTENEDORES · LECCIÓN 01

Qué es realmente un contenedor

Objetivo: Construir uno a mano con namespaces y cgroups para ver que no es una máquina.
lab-ctr-escape 6 ejercicios + reto laboratorio local
En preparación
CONTENEDORES · LECCIÓN 02

root, rootless, privileged y capabilities en Docker

Objetivo: Medir cuánto poder cede cada bandera antes de escribirla en un compose.
lab-ctr-escape 6 ejercicios + reto laboratorio local
En preparación
CONTENEDORES · LECCIÓN 03

El socket de Docker y los host mounts

Objetivo: Ver la fuga trivial del contenedor al host y por qué un agente nunca debe tener ese socket.
lab-ctr-escape 6 ejercicios + reto laboratorio local
En preparación
CONTENEDORES · LECCIÓN 04

Hardening: read-only, seccomp, límites y políticas de red

Objetivo: Hacer que el mismo exploit de la lección anterior falle.
lab-ctr-hardening 6 ejercicios + reto laboratorio local
En preparación
CONTENEDORES · LECCIÓN 05

Imágenes: escaneo, firma y procedencia

Objetivo: Saber qué corres, de dónde vino y qué se quedó en una capa borrada.
lab-ctr-imagenes 6 ejercicios + reto laboratorio local
En preparación

F11 · Seguridad cloud y Cloudflare

CLOUD · LECCIÓN 01

Responsabilidad compartida y aislamiento de red

Objetivo: Saber exactamente dónde termina el proveedor y empieza tu problema.
lab-cloud-metadata 6 ejercicios + reto laboratorio local
En preparación
CLOUD · LECCIÓN 02

Metadata service, IAM cloud, KMS y auditoría

Objetivo: Entender por qué un SSRF en cloud vale credenciales, y cómo cerrarlo.
lab-cloud-metadata 6 ejercicios + reto laboratorio local
En preparación
CLOUD · LECCIÓN 03

Cloudflare: API tokens y el alcance mínimo

Objetivo: Emitir el token más pequeño que resuelve la tarea, y verificar que no puede más.
lab-cloud-cf 6 ejercicios + reto laboratorio local
En preparación
CLOUD · LECCIÓN 04

Cloudflare: WAF, Tunnels y Zero Trust

Objetivo: Publicar un servicio sin abrir un puerto y poner política de acceso delante.
lab-cloud-cf 6 ejercicios + reto laboratorio local
En preparación

F12 · Cadena de suministro

SUPPLY CHAIN · LECCIÓN 01

Dependencias, lockfiles y confusión de dependencias

Objetivo: Fijar lo que realmente se instala y cerrar la puerta al paquete equivocado.
lab-sc-registro 6 ejercicios + reto laboratorio local
En preparación
SUPPLY CHAIN · LECCIÓN 02

SBOM, firmas y procedencia del artefacto

Objetivo: Demostrar de qué está hecho lo que despliegas y quién lo construyó.
lab-sc-registro 6 ejercicios + reto laboratorio local
En preparación
SUPPLY CHAIN · LECCIÓN 03

Anatomía de un paquete malicioso

Objetivo: Ver cómo entra y qué hace, en un registro propio dentro del laboratorio.
lab-sc-paquete 6 ejercicios + reto laboratorio local
En preparación

F13 · Seguridad del pipeline

CI/CD · LECCIÓN 01

GitHub Actions: permisos, secrets y runners

Objetivo: Reducir el permiso del token del workflow y fijar cada acción por commit.
lab-cicd 6 ejercicios + reto laboratorio local
En preparación
CI/CD · LECCIÓN 02

Pull requests, protección de rama e integridad de artefactos

Objetivo: Entender por qué pull_request_target es peligroso y cómo se blinda la rama.
lab-cicd 6 ejercicios + reto laboratorio local
En preparación
CI/CD · LECCIÓN 03

SAST, DAST y escaneo de contenedores en el pipeline

Objetivo: Poner puertas de calidad que fallen por un hallazgo real, no por ruido.
lab-cicd 6 ejercicios + reto laboratorio local
En preparación

F14 · Logging, detección y respuesta

DETECCIÓN · LECCIÓN 01

Qué loggear: acceso, autenticación, aplicación, contenedor y red

Objetivo: Registrar lo que sirve para investigar, no lo que llena disco.
lab-blue-siem 6 ejercicios + reto laboratorio local
En preparación
DETECCIÓN · LECCIÓN 02

Ingeniería de detección: de log a regla a alerta

Objetivo: Escribir reglas que detecten los ataques que ya ejecutaste en el laboratorio.
lab-blue-siem 6 ejercicios + reto laboratorio local
En preparación
DETECCIÓN · LECCIÓN 03

Respuesta a incidentes y contención

Objetivo: Contener sin destruir la evidencia y erradicar sin dejar la puerta abierta.
lab-blue-siem 6 ejercicios + reto laboratorio local
En preparación
DETECCIÓN · LECCIÓN 04

Reconstrucción de la línea de tiempo e informe

Objetivo: Contar qué pasó, cuándo y con qué evidencia, en un documento que otro pueda auditar.
lab-blue-siem 6 ejercicios + reto laboratorio local
En preparación

F15 · Ofensiva en entornos autorizados

OFENSIVA · LECCIÓN 01

Alcance, autorización y reglas de compromiso

Objetivo: Saber qué documento te separa de un delito antes de tocar una tecla.
lab-red-recon 6 ejercicios + reto laboratorio local
En preparación
OFENSIVA · LECCIÓN 02

Reconocimiento y enumeración en tu propio laboratorio

Objetivo: Ver tu sistema como lo ve alguien que acaba de llegar a la red.
lab-red-recon 6 ejercicios + reto laboratorio local
En preparación
OFENSIVA · LECCIÓN 03

Escalada, movimiento lateral y persistencia

Objetivo: Entender la cadena posterior al primer acceso para poder cortarla.
lab-red-recon 6 ejercicios + reto laboratorio local
En preparación

F16 · Seguridad de agentes de IA

AGENTES IA · LECCIÓN 01

La superficie de ataque de un agente

Objetivo: Inventariar las capacidades de un agente y tratar al modelo como entrada no confiable.
lab-ai-agente 6 ejercicios + reto laboratorio local
En preparación
AGENTES IA · LECCIÓN 02

Prompt injection directa e indirecta

Objetivo: Sobrescribir la instrucción del sistema, y hacerlo desde el contenido que el agente lee.
lab-ai-agente 6 ejercicios + reto laboratorio local
En preparación
AGENTES IA · LECCIÓN 03

Tool poisoning y salida maliciosa de herramientas

Objetivo: Ver qué pasa cuando la herramienta miente sobre lo que hace o devuelve.
lab-ai-agente 6 ejercicios + reto laboratorio local
En preparación
AGENTES IA · LECCIÓN 04

Contexto y memoria envenenados

Objetivo: Entender la persistencia dentro del propio agente, entre sesiones.
lab-ai-agente 6 ejercicios + reto laboratorio local
En preparación
AGENTES IA · LECCIÓN 05

Excessive agency y confused deputy

Objetivo: Ver el daño cuando el agente usa tu autoridad en nombre de otro.
lab-ai-agente 6 ejercicios + reto laboratorio local
En preparación
AGENTES IA · LECCIÓN 06

Servidores MCP no confiables y cadena de herramientas

Objetivo: Saber qué entra a tu proceso cuando conectas un servidor MCP ajeno.
lab-ai-mcp 6 ejercicios + reto laboratorio local
En preparación

F17 · Proyecto: Secure AI Control Plane

CONTROL PLANE · LECCIÓN 01

v0: AI → CLI, y por qué es indefendible

Objetivo: Construir el diseño obvio y enumerar por qué no se puede defender.
lab-control-plane 6 ejercicios + reto laboratorio local
En preparación
CONTROL PLANE · LECCIÓN 02

v1: intención estructurada y motor de políticas

Objetivo: Sacar la ejecución del texto libre y decidir por política, no por prompt.
lab-control-plane 6 ejercicios + reto laboratorio local
En preparación
CONTROL PLANE · LECCIÓN 03

v2: capability broker, aprobación y ejecutor efímero

Objetivo: Separar quién pide de quién puede, y ejecutar sin credenciales persistentes.
lab-control-plane 6 ejercicios + reto laboratorio local
En preparación
CONTROL PLANE · LECCIÓN 04

v3: audit log y el supuesto del LLM comprometido

Objetivo: Poder reconstruir qué pasó incluso asumiendo que el modelo ya está en tu contra.
lab-control-plane 6 ejercicios + reto laboratorio local
En preparación

CAP · Proyectos finales

CAPSTONES · LECCIÓN 01

Capstone 1 · API segura

Objetivo: Construir y defender una API completa contra todo lo visto en las fases 04 a 06.
lab-api-vuln 6 ejercicios + reto laboratorio local
En preparación
CAPSTONES · LECCIÓN 02

Capstone 2 · Entorno Docker endurecido

Objetivo: Entregar un compose que sobreviva a los tres escapes de la fase 10.
lab-ctr-hardening 6 ejercicios + reto laboratorio local
En preparación
CAPSTONES · LECCIÓN 03

Capstone 3 · Aplicación interna Zero Trust

Objetivo: Publicar una aplicación interna sin puertos abiertos y con acceso por identidad.
lab-cloud-cf 6 ejercicios + reto laboratorio local
En preparación
CAPSTONES · LECCIÓN 04

Capstone 4 · Infraestructura cloud segura

Objetivo: Definir la infraestructura como código con el mínimo privilegio demostrable.
lab-cloud-cf 6 ejercicios + reto laboratorio local
En preparación
CAPSTONES · LECCIÓN 05

Capstone 5 · Sandbox de agente de IA

Objetivo: Encerrar un agente de forma que un prompt injection no consiga nada útil.
lab-ai-agente 6 ejercicios + reto laboratorio local
En preparación
CAPSTONES · LECCIÓN 06

Capstone final · Secure AI Infrastructure Control Plane

Objetivo: Integrar todo el curso en un plano de control que asume el modelo comprometido.
lab-control-plane 6 ejercicios + reto laboratorio local
En preparación