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