🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónSalida del modelo tratada como entrada no confiable
5 tareas · 40 min · Principiante
El equipo de Librerías Nazareno sostiene que la salida de Lía es de fiar porque el prompt le pide usar solo markdown y enlaces de la tienda. Te entregan el widget que pinta las respuestas en el navegador, el código que convierte en consulta el filtro que propone el modelo, la lista de dominios permitidos y el registro de respuestas del piloto. Vas a leer qué hace la aplicación con lo que el modelo devuelve.
Objetivo de la sala
El equipo de Librerías Nazareno sostiene que la salida de Lía es de fiar porque el prompt le pide usar solo markdown y enlaces de la tienda. Te entregan el widget que pinta las respuestas en el navegador, el código que convierte en consulta el filtro que propone el modelo, la lista de dominios permitidos y el registro de respuestas del piloto. Vas a leer qué hace la aplicación con lo que el modelo devuelve.El texto que responde un modelo depende de todo lo que entró en su contexto: el mensaje del cliente, las reseñas recuperadas, el historial. Si alguno de esos textos traía algo malicioso, la respuesta puede traerlo de vuelta. Por eso la salida del modelo se trata como cualquier dato que llega de fuera: se escapa antes de pintarla en una página, se pasa como parámetro antes de meterla en una consulta y se valida antes de usarla como enlace, ruta o comando. OWASP lo recoge como manejo inadecuado de la salida, y los fallos que produce son los de siempre: XSS, inyección SQL, redirecciones a sitios ajenos.
Pedirle al modelo en el prompt que solo use cierto formato no es un control: es una preferencia que el modelo suele cumplir y que un texto bien colocado en el contexto puede hacerle olvidar.
Responde para continuar
¿Por qué el equipo no puede apoyarse en que el prompt pide solo markdown y enlaces propios?
Ver pista de ayuda
La respuesta depende de todo lo que se juntó en el contexto, no solo de las reglas.
Abre el laboratorio y lee widget-lia.js. Hay tres funciones que añaden algo a la conversación. Dos asignan el texto de forma que el navegador lo muestra como texto. La tercera convierte la respuesta del modelo a HTML con una librería que, según el comentario del propio archivo, deja pasar tal cual el HTML que venga dentro, y lo inserta como HTML en la página de la tienda, con la sesión del cliente abierta.
Responde para continuar
¿Qué función del widget inserta en la página como HTML el texto que devolvió el modelo? Escribe su nombre.
Ver pista de ayuda
Busca innerHTML.
La herramienta de búsqueda recibe del modelo un filtro en JSON y lo convierte en SQL en buscador.py. Tres de sus campos entran a la consulta como parámetros, que la base trata siempre como datos. Uno se pega con comillas dentro del texto de la consulta. Ese campo lo escribe el modelo, y el modelo lo escribe a partir de lo que le pidió el cliente: es una inyección SQL de segunda mano.
Responde para continuar
¿Qué campo del filtro se concatena en la consulta en lugar de ir como parámetro? Escribe su nombre.
Ver pista de ayuda
Compara las líneas que usan %s con la que usa comillas simples.
enlaces-permitidos.txt dice en su primera línea quién comprueba esa lista. Lee registro-respuestas.txt y busca la respuesta que llevó al cliente a un dominio que no es de la tienda. Fíjate también en su conversación: ya la viste en la sala anterior.
Responde para continuar
¿Qué respuesta del piloto enlaza a un dominio que no está en la lista de permitidos? Escribe su identificador.
Ver pista de ayuda
Compara el dominio de cada enlace con los dos de la lista.
Los tres hallazgos tienen el mismo origen —confiar en la salida porque «el modelo es nuestro»— y se corrigen igual que si el dato viniera de un formulario. Lo que no se corrige es el modelo: se corrige el código que usa lo que el modelo devuelve.
Responde para continuar
¿Qué conjunto de cambios corrige los hallazgos de esta sala?
Ver pista de ayuda
Cada hallazgo se corrige donde se usa la salida, no donde se genera.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.