Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Salida 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.

0 de 5 · 0%

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.

Inicia sesión para registrar tus puntos y progreso en el ranking.

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