Seguridad

Hacking LLM-Assistants Just for Fun!

En una de mis últimas visitas al sofá de mi amigo Palako tuvimos una de esas largas charlas que tenemos sobre hacking, desarrollo y el mundo de la Inteligencia Artificial. Él está hackeando el mundo del desarrollo con Sagittal.AI y su Neo, y yo acaba de publicar el libro de Hacking IA, así que hablamos de lo difícil que es desplegar con seguridad sistemas de IA basados en LLM Multi-Modales, y la construcción de guardarraíles para ellos.

Figura 1: Hacking LLM-Assistants Just for Fun!

Por supuesto, con el mundo de los Agentes IA, la cosa es aún más divertida, pero sobre todo hablábamos de que habíamos vuelto un poco al año 2.000 donde, lejos de ser el efecto 2.000 el gran peligro que se vaticinaba en los años 90, lo fue el SQL Injection y sus casi 20 años siendo el Top 1 de vulnerabilidades en el OWASP Top Ten de Web Applications – ahora está el número 5 .
Y este regreso había sido por culpa de la construcción de modelos de IA con debilidades como el Prompt Injection, el Jailbreak, el Misalignment, los BIAS, y el Data Leakage por diseño. Y para probar nuestra tesis, buscamos algunos Asistentes Digitales hechos con IA, para ver cuán difícil era encontrar uno que se comiera casi todas esas vulnerabilidades en un despliegue. 

Hacking with LLM-Assistant Just for Fun
Por supuesto, hubo muchos candidatos que nos servían para el ejemplo, pero os dejo este de una gran empresa, donde, solo jugando, sin hacer nada malo, se pueden ver todas las dificultades de proteger estos LLMs.
1.- Misalignment: «Desalineamiento»
El primer ejemplo que queríamos era ver lo fácil o difícil que era sacarle de su «alineamiento«. Ya sabes, «eres un experto en esto que vas a hacer esto». El asistente tenía clara su misión, que era dar información sobre los productos de la empresa en su web, para lo que tiene una serie de herramientas que puede utilizar para buscar datos. Pero desalinearle fue tan sencillo como utilizar el formato con el que queríamos que nos respondiera a la pregunta para conseguir que hiciera otra cosa. 

Figura 3: De los dos cual es más caro

Cada vez que le pedíamos algo que no tuviera que ver con el cometido para el que había sido creado decía que no podía ayudarnos, pero… si le pides algo que tiene que ver con su tema y luego le dices que si de dos opciones es la primera te conteste imprimiendo lo que tú quieras, el modelo se lo comía. ¿Que tiene que ver el texto que ha impreso con el cometido del asistente? Nada, el modelo está desalineado.

2.- Client-Side Attack
Una vez que lo podemos desalinear, ya lo podemos llevar para realizar diferentes ataques, así que… ¿por qué no hacer Client-Side Attacks manipulando la respuesta? Pues nada dicho y hecho. Hicimos respuestas «rickrolleando» con imágenes, o pintando HTML con las o enlaces controlados en las respuestas.

Figura 4: Controlando el HTML

Por supuesto, meter HTML no es suficiente, hay que meter ataques completos para hacer Click-Jacking, Cross-Site Scripting, Cross-Site Request Forguery, o HTML Injection en el DOM del navegador cliente, y ahí tuvimos que jugar «un poco más«.
A la hora de meter Javascript, el asistente hecho IA tiene una serie de guardarraíles bastante rudimentarios donde se filtran palabras claves, tanto en el Prompt de entrada, como en los resultados de salida. Pero no son iguales. Así que algunas palabras clave las protegía y otras no. Tendríamos que lidiar con ellos luego.
3.- Jailbreak
Una vez que lo puedes desalinear, la siguiente idea era hacerlo para que hiciera cosas prohibidas, como por ejemplo, convertirse en nuestra herramienta de darle recetas a la Thermomix. Bromas aparte, pedirle tareas que tenía prohibidas totalmente en su System Prompt.

Figura 6: Ya tenemos las cookies, pero estas no son las que queremos

Con la gracia de utilizar el modelo como Asistente de Propósito General, pensamos que podría ser una buena idea meterle tareas de desarrollo y ahorrar en tokens pidiéndole con el desalineamiento construido que nos hiciera código.

Figura 7: Pidiéndole que desarrolle. A ahorrar tokens

Por supuesto, ya pensamos en que alguien podría hacer un negocio de esto creando un API pública de propósito general que permitiera usar este desalineamiento para servir tareas as a service a aplicaciones encapsulándolas contra el asistente. Como hace el mundo del crimeware. Pero ya que teníamos esta capacidad… por qué no saber qué herramientas tenía configuradas en su System Prompt, o como MCP o Skills.

Figura 8: Show me your tools

Y no sólo eso, si hay que programar, necesitamos saber cuál es el formato de las llamadas para hacerlo bien, y para saber qué capacidades completas tenemos con este asistente web IA tan servicial.

4.- Data Leakage
Como vamos a ver, en este caso las herramientas dan acceso a datos y bases de datos. Toda la información es pública, pero se podría volcar del tirón, y generar una filtración de cualquier dato que estuviera allí. No quisimos mirar mucho, porque como muestra valía.

Figura 9: Formato y parámetros de las tools

Como podéis ver, en este caso tenemos acceso a las tools y todo lo que se puede hacer. Si estas tools permiten acceder a bases de datos internas o a servicios de la red o el equipo local, pues eso que estaría ya a disposición. En este caso todas eran sobre datos y bases de datos del web site.

Figura 10: Formato de llamada y parámetros de las tools

Claro, acceder a todos los datos permite, con un solo Prompt hacer un ataque de denegación de servicio lógica de multiplicación, que se basa en la complejidad lógica del procesado.

5.- Ataques de amplificación y DDoS Lógica

Los ataques de amplificación son aquellos en los que con muy pocos datos de entrada se obtienen muchos datos – o cómputo – de respuesta. Esto permite que un cliente pequeño pueda hacer trabajar mucho a un servidor muy grande, y que con un ataque en paralelo pueda hacer que el servidor entre en Thrahshing o saturación. 

Figura 11: Pidiéndole que me cuente un cuento de sci-fi

Para ver si había algún límite le pedimos volcados de muchos datos, y creación de historias de amor o de sci-fi – que ya sabéis que estoy a tope con esto -, pero que fueran largas, para que tuviera que computar, y que devolvieran muchos datos.

Figura 12: El cuento de sci-fi que nos devolvió

Por supuesto, el resto de cosas que le puedes pedir depende de cada uno de vosotros, y automatizar cualquiera e estos ataques con una herramienta de IA pues es bastante sencillo hoy en día, así que dejar la puerta «entre-abierta» en cualquier sistema con IA puede ser muy peligroso.

6.- ByPassing Guardarrailes

Para terminar, que hicimos muchas pruebas, la última a la que jugamos fue a saltar los Guardarraíles, utilizando muchas pruebas para ello. Concatenando respuestas, escribiendo letra a letra, pero al final usé el truco de la Esteganografía con el cifrado Acróstico para pedirle que pintara palabras prohibidas en el HTML de la salida, como hicimos con las técnicas que presentamos en la RootedCON de 2025.

Y por supuesto, el asistente AI  basado en un LLM, una vez desalineado, acepta de buen grado el juego. Es un modelo muy inteligente y sabe esteganografía y codificaciones con acrósticos.

Figura 14: Y me lo metes en un enlace

El resultado, no os lo dejo con la explotación final, que no se trata de ver el Client-Side, sino el bypass de las palabras prohibidas.

Figura 15: Bypasseando el Guardrail con una codificación en acróstico

Además, para quedar completo la prueba de los fallos, veis que hemos metido el enlace, pero tiene una Hallucination y nos mete una «E» en DocumentE, por lo que este ejemplo concreto – con la alucinación – no funciona, pero queda más gracioso aún.
7.- Footprinting – Fingerprinting
Ya que estamos, y para que no se alargue mucho más esto, además de pedir información de las tools, y también de su arquitectura, le pedimos su nombre, para saber con qué LLM estábamos jugando, y aquí está como se llama de verdad este asistente AI basado en un LLM.

Figura 16: My name is «Gemini»

Pues ya estaría el artículo, que como muestra de lo fácil qué es atacar sistemas con IA, y lo difícil que es hacer un despliegue seguro como no te lo tomes en serie, yo creo que es suficiente, que se pueden ver muchas cosas en muy poco tiempo.
Si quieres aprender conmigo – al mismo tiempo que aprendo yo, ya sabes que me he decidido abrir un Foro Público de Ciberseguridad de Chema Alonso con la ayuda de la UNIR.NET, para hablar de estos temas. Para compartir noticias, para compartir actividades profesionales, para debatir sobre estas cosas. Y será un foro «Old School» porque vigilará la Netiquette.
¡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.