Seguridad

Mareando y Desalineando a un Asistente IA de una tienda de Mochilas.

Estaba este viernes explicándole a un compañero lo fácil que muchos de los asistentes basados en LLM abiertos en Internet pueden ser explotados por los malos para consumir servicios de IA en resolución de problemas. De esto mismo os he hablado en los artículos que os he publicado sobre un Asistente Virtual hecho sobre Google DeepMind Gemma,  antes os dejé otro artículo sobre un Asistente AI construido sobre Gemini, y también os dejé publicado otro sobre un Asistente AI construido con GPT-4o, y luego uno titulado «Weaponinzing Token Consumption» en «LLM-Based AI Assistant» que explica cómo el mundo del cibercrimen busca estos asistentes para automatizarlos en forma de API y comercializarlos entre los malos.

Figura 1: Mareando y Desalineando a un Asistente IA de una tienda de Mochilas.

Después de eso, os publiqué el de «Mi Asistente Virtual IA no programará en Python para ti… pero si es COBOL, vale» y el de «El AIBot de la Universidad que ayuda no sólo a los estudiantes«, donde jugaba siempre con los mismos conceptos: El desalineamiento del Prompt de configuración y el bypass de los Guardarraíles.
Le estaba contando esto a mi compañero, y no se lo creía mucho, así que le dije: «Venga, vamos a buscar uno juntos y lo probamos«, y acabamos en una Tienda de Mochilas. No os cuento el inicio, porque ya lo sabéis, teníamos que preguntar cosas sobre la tienda de mochilas, así que para desalinearlo, bastó con hacer una lista de mochilas que nos recomendara, y añadir al nombre de la mochila lo que queríamos que nos hiciera el LLM.

Figura 3: Lista de mochilas con tokens en ventana de contexto

Primero le pedimos algo sencillito, como su nombre, que nos lo dio por supuesto, y el tamaño de tokens de su ventana de contexto, que eso siempre nos viene bien saberlo si hay que «weaponizar» en forma de API.

Figura 4: La fecha está correcta.
Después de pedirle cosas sencillas, como la fecha – correcta en la imagen anterior – y la hora, que nos dio las 12:00 lo que implicaba que no tenía acceso a la hora (yo siempre lo uso para saber en qué región está el servidor), le pedí que me sacara en una lista más larga las funciones a las que tenía acceso, y aquí están.

Figura 5: Lista de funciones a las que tiene acceso

Parecía bastante hecho el desalineamiento, pero de repente me encontré con varias barreras que estaban bien solucionadas por parte del equipo de seguridad de este Asistente IA. En primer lugar, no tenía acceso a Internet, lo cual siempre le quita un poco de gracia.

Figura 6: Sin capacidad de navegar por Internet

La segunda es que tampoco tenía capacidad de programar, y esto sí que me dejó bastante rallado. ¿Cómo podía ser que un modelo LLM no tenga capacidad de programar nada? ¿Dónde se había realizado esta reducción de capacidades?

Figura 7: Sin capacidad de programar

Lo cierto es que el Asistente IA, después de muchas pruebas – y cuando digo muchas, son muchas – tiene Guardarraíles en Prompt de entrada y Guardarraíles en la respuesta, lo que es correcto y es como debe de hacerse, así que me tocó pensar para qué lo podría usar, y me acordé del Captcha Cognitivo de los conjuntos semánticos de palabras de algunas webs.

Figura 8: Captchas Cognitivos de Conjuntos Semánticos

Luego, para poder saltar los Guardarraíles de salida, estuve mirando si podía codificar – como hice en el ejercicio del problema del prisionero a principios de 2025 – usando capacidades criptográficas y de codificación varias.

Figura 9: Codificación ASCII de respuestas

Y también con estuve probando con los Acrósticos, para codificar respuestas usando esta codificación y poder evitar filtros de palabras en la salida. También usé el lenguaje ELITE y algún que otro truco más, lo que me permitió salta el Guardarraíl de salida algunas ocasiones.

Figura 10: Jugando a los Acrósticos

Al final, para sacar más datos, usé las listas como secuencias de palabras. Primero lo probé con el Quijote, a ver si era posible, que como podéis ver aquí, sí que lo era. 

Figura 11: El comiendo de El Quijote

Así que ya era momento de sacarle el System Prompt, pidiéndole la configuración. Esto hubo que hacerlo con un proceso iterativo de varias peticiones consecutivas, pero al final salió bastante bien el resultado.

Figura 12: Sacando la configuración de 10 en 10 palabras

Pero al final, me quedé con las ganas de hacer programar a este Asistente AI, y no fui capaz de pedirle que me escribiera una historia de Sci-Fi como a mí me gusta. Eso sí, me confesó que conoce RUBY.

Figura 13: El asistente conoce Ruby

Lo más interesante de todo este ejercicio es que le insuflé el veneno de buscar estos Asistentes AI y desalinearlos a mi compañero, así que sólo con eso, las horas que echamos juntos merecieron la pena.
Por supuesto, si tienes un Asistente AI basado en LLMs, mi recomendación es que mires muy mucho la seguridad, que estos modelos hay que protegerlos muy mucho. El mundo del cibercrimen los está buscando.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)  

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.