Laboratorio de WrongSecrets: encuentra secretos incrustados y aprende dónde guardarlos

OWASP WrongSecrets es una aplicación que guarda los secretos en el lugar equivocado a propósito: en el código, en scripts del navegador, en la configuración y en puntos de supervisión. Cada reto pide un secreto, y la aplicación lo marca en verde cuando el alumno encuentra el correcto. Este laboratorio la inicia en la copia privada de cada alumno.

Todo lo que el alumno explora está dentro de la copia de laboratorio del propio alumno, que no tiene ruta a internet ni a ningún otro alumno, así que lo único a lo que puede llegar es la aplicación que el laboratorio inició para él. La regla se enuncia al principio del laboratorio: explora tu propia copia y nunca apuntes una herramienta a un sitio que no sea tuyo.

Qué aprenden los alumnos

De dónde se filtran los secretos y cómo los encuentra un desarrollador o un atacante: una contraseña escrita en el código, un secreto enviado al navegador en un script, una clave que delata un punto de supervisión. Para cada uno explican por qué el lugar es el equivocado y dónde debería guardarse el secreto. Es adecuado para unidades de programación segura, DevOps y cadena de suministro de software.

Ejecútalo en tu navegador

La aplicación se inicia en unos segundos, no pide cuenta y olvida su estado cuando el laboratorio se detiene, así que reiniciarla es empezar una partida nueva.

Solo algunos retos se pueden resolver en un laboratorio. Los que piden el código fuente del proyecto en GitHub, una shell dentro del contenedor de la aplicación, una cuenta en la nube, Vault, Kubernetes o un servicio de IA necesitan algo que una copia de laboratorio no tiene. Se comprobaron los retos 0, 16 y 42, y otros que tratan de la página, sus scripts y sus propios puntos de acceso merecen probarse con las herramientas de desarrollo del navegador o con curl en el terminal del laboratorio.

  1. Abre la página Contenedor. Abre «Crear» en la barra y elige «Ejecutar un contenedor». Cualquiera puede abrir la página, y el laboratorio de Git y el de SQL se inician sin cuenta. Todos los demás laboratorios necesitan una cuenta gratuita: crea una, inicia sesión y pulsa «Iniciar».
  2. Busca el laboratorio. La tarjeta «Laboratorios de ejemplo» lista todos los ejemplos. Busca OWASP WrongSecrets.
  3. Pulsa «Iniciar». «Iniciar» lo ejecuta tal cual, con una sola pulsación. «Editar el archivo primero» abre el archivo compose para que lo cambies antes de iniciarlo.
  4. Ábrelo. En la página del laboratorio, pulsa el enlace llamado OWASP WrongSecrets, el botón Abrir del laboratorio. Empieza por Challenge 0 en el menú Challenges, que explica el juego. En el terminal, curl http://wrongsecrets:8080 llega a la aplicación.

Qué pedir a los alumnos que entreguen

Una captura de pantalla de cada reto resuelto, con la dirección del propio laboratorio visible, y para cada uno una explicación escrita con sus propias palabras de dónde estaba el secreto, cómo lo encontraron, por qué ese lugar es el equivocado y dónde debería guardarse un secreto. La segunda mitad dice si se entendió o se copió de una solución.

El código en GitHub

El archivo compose ejecuta la imagen pública de la propia WrongSecrets, fijada a una versión, como una cuenta sin privilegios. WrongSecrets tiene licencia AGPL-3.0 y nosotros no la distribuimos. El laboratorio no tiene salida a internet, así que un reto que la necesite no se puede resolver en él.

Una lección básica en este laboratorio

WrongSecrets Basics es una lección breve hecha en este laboratorio, con cada paso explicado y un botón Ejecutar que escribe su comando en el terminal del propio alumno. Empieza con la regla de que el alumno explora su propia copia y nada más, comprueba que la aplicación responde, lista los puntos de acceso que expone y mira el script del que trata un reto del navegador, y después envía al alumno a los retos.

Una cuenta personal gratuita la recibe en el módulo Basics, que está en Inicio, cada centro puede copiarla de la carpeta Basics de la Biblioteca, y un centro nuevo la tiene en un módulo llamado Lab Basics (Sample). Es deliberadamente breve: muestra a un docente lo que es una lección hecha en un laboratorio, y el laboratorio hace el resto. Cópiala en un módulo propio para cambiarla.

Asígnalo como trabajo

Indica en la tarea qué retos completar y qué entregar.

  1. Crea el laboratorio. En tu módulo añade una tarea y elige la tarjeta «Laboratorio de contenedores», y después «En un repositorio de GitHub». Indica https://github.com/mitsurutech/lab-wrongsecrets con la rama main. El archivo compose es el predeterminado, compose.yaml. Haz un fork del repositorio antes si quieres modificarlo.
  2. Publica y pruébalo. «Publicar» fija el commit que te mostraron, así que un cambio posterior en el repositorio no altera un laboratorio que ya has asignado. Inicia primero tu propia copia.
  3. Asígnalo. Asígnalo como cualquier tarea, con una fecha de entrega si quieres, e indica en la tarea qué hacer y qué entregar.
  4. Califica lo entregado. Abre la copia de un alumno y el trabajo que ha entregado, califícalo y devuélvelo con un motivo si necesita más.

Preguntas frecuentes

¿Por qué solo se pueden resolver algunos retos?
Una copia de laboratorio no tiene salida a internet y solo contiene la aplicación. Los retos que necesitan el código fuente del proyecto en GitHub, una shell dentro de su contenedor, una cuenta en la nube, Vault, Kubernetes o un servicio de IA no se pueden hacer en ella. La página de GitHub también lo dice.
¿Se conserva el progreso?
No. La aplicación no guarda nada, así que detener e iniciar el laboratorio da una partida nueva. Un alumno que haya resuelto algo hace antes una captura para entregar.
¿Son reales los secretos?
No. Todos los secretos de la aplicación son inventados para el juego. El hábito que conviene enseñar es buscar los reales en el código de tu propio equipo y nunca en el de otros.