Como hemos visto y he contado muchas veces, los modelos
LLM por defecto no cuentan con muchas herramientas de seguridad por diseño. El
System Prompt y la definición del contenido malicioso que hace saltar el
Harmful Mode para evitar que le modelo haga algo que se no se desea es la principal media, pero hay
Prompts Maliciosos y técnicas - llamadas
Jailbreak - para generar esos
Prompts de forma que se evite el
Harmful Mode. El ejemplo que suelo contar yo de
hacer que el modelo me ayude a matar a nuestro querido Brian May (ficticiamente), es un ejemplo de cómo filtrar un
Prompt Malicioso saltándose el
Harmful Mode haciendo un
Jailbreak de las protecciones del modelo
LLM.
En un entorno donde tengamos una aplicación, un servicio digital o un entorno completo, un atacante va a necesitar meter los Prompts maliciosos enmascarados como datos de entrada. Estos son los casos de Prompt Injection, donde un atacante consigue meter un Prompt malicioso en un comentario, en el texto de una web, en una imagen, en un mensaje de correo electrónico, o un fichero que va a ser procesador por el modelo.
¿Qué tiene que ver la tarea de resumir correos electrónicos con borrar ficheros en un Google Drive? Nada, pero puede que se haya encontrado un Prompt malicioso en un mensaje de correo que ha pasado el filtro del Harmful Mode y ha logrado desalinear el modelo y redirigir sus tareas hacia otro función totalmente distinta de la original. Los modelos no tienen protección contra desalineamiento por diseño más allá del Harmful Mode.
- Jailbreaks
- Prompt Injection
- Unalligment
- Creativity: Hallucinations, Errors, BIAS, Indeterminismo.
Y sobre esto, tenemos que construir la tecnología. Eso quiere decir que si ponemos en producción un sistema con un
LLM, hay que ponerlo con muchas protecciones. Es por eso que vemos muchos trabajos donde se trabaja en construir sistemas seguros, utilizando muchas protecciones, evaluaciones, ratios de éxito en detección, etcétera, como el caso de
BlueCodeAgent hace poco donde intenta detectar generación de código vulnerable o con sesgos para atacar uno de los problemas en usar modelos automáticos para generar
software. Todas esas protecciones antes y después son lo que llamamos
Guardrails.
Guardrails frente a Prompt Injection, Jailbreak y Desalineamiento
Todas estas protecciones que se ponen son lo que se llaman los Guardrails, es decir, sistemas de seguridad que evalúan los datos de entrada al LLM para ver si estos son seguros y benignos o por el contrario son maliciosos. Pero también evalúan los resultados que genera el modelo e incluso las acciones que realiza, para poder saber si está haciendo lo correcto. Por ejemplo, saber si un modelo está haciendo algo mal, o está siendo atacado, se podría detectar evaluando las respuestas que da por otros modelos de lenguaje, que funcionan como jueces.
Esto es algo muy común que hemos visto en las herramientas de seguridad. Tenemos
Prompt Guard o
Llama Guard de
Meta, o
Qwen3Guard que son
Clasificadores de Prompts con la única misión de saber si un
Prompt puede ser malicioso o no y bloquearlo antes de que se envíe al modelo. Después, cuando el modelo entrega la respuesta, esta también es evaluada, para ver si ha sufrido algún problema y por ejemplo está entregando datos sensibles, o con sesgos, o con código peligroso, o incumpliendo alguna política de seguridad establecida. Para eso se utilizan otros modelos
LLM que juzgan el trabajo, al estilo de
Minority Report, para poder detectar en la respuesta que ha habido un problema que el modelo
LLM que resolvió el
Prompt no fue capaz de detectar.
Estos modelos son los que se incluyen en los
LLM Firewalls por los que pasan las
APIs que piden Prompts a modelos para poder implementar soluciones de
Data Loss Prevention, para evitar la
Exfiltración de Datos o cualquier tarea maliciosa a la que se haya convencido al modelo que tiene que hacer. Por ejemplo, en el
Jailbreak de Knowledge Returning Oriented Prompt donde se conseguía hacer al modelo crear imágenes violentas, un
Guardrail sería un modelo con una descripción de las imágenes generadas para ver si alguna tiene violencia, o incumple la política.
En una empresa que tiene un aplicación
Web o un
API expuesta que recibe datos de usuario que se van a convertir en un
Prompt que se ejecuta en un modelo en el
backend, cuando va a ser desplegada, debe hacerlo con Guardrails. Si lo hace en
Cloudflare, la suite de AI Security clasifica los
Prompts que entran en la empresa para detectar los ataques de
Jailbreak en Prompt que hayan podido ser
Inyectados, pero también se evalúan los datos de salida para evitar incumplimientos de políticas de seguridad, como sesgos, fugas de datos o lenguaje inapropiado. Es decir, se aplican
Guardrails para la protección del modelo en el
WAF (Web Application Firewall) y en el
API Gateway.
Pero si por el contrario es la empresa la que utiliza un modelo externo como servicio, con una arquitectura tipo SaaS, al que sus empleados están enviando los datos, entonces en los servicios de CASB (Cloud Application Security Broker) se evalúa que ningún Prompt enviado desde los empleados está enviando datos confidenciales, ya que la fuga de información puede estar en la respuesta generada por el modelo o en los datos enviados por el cliente como contexto.
Contada toda esta larga introducción, los Guardrails son la siguiente línea que hay que proteger, y por tanto que hay que evaluar su seguridad.
Echogram: Bypassing Guardrails con Flip Tokens
Ahora los investigadores de
HiddenLayer proponen con Echogram una automatización del ataque a esos clasificadores en los
Guardrails basada en
Tokens que cambian su evaluación, es decir, que por el entrenamiento del
Clasificador en modo caja negra, se puede comprobar empíricamente que cambian la clasificación de un
Prompt. Como podéis ver, en el ejemplo de la imagen, con añadir
=coffee, el modelo ha ignorado el
System Prompt y ha dicho algo que no diría el modelo.
Con Echogram se ataca la protección del Guardrail que está evaluando la clasificación del Prompt, pero luego el atacante tendría que conseguir que el Prompt hiciera un Jailbreak en la detección del Harmful Mode del modelo. Esta es solo una pieza más de la cadena de defensas de un servicio digital basado en IA.
A los tokens que cambian la clasificación del Prompt les han llamado Flip Tokens, y no son los mismos para todos los Guardrails ni para todos los Prompts. Además, la adición de tokens, pueden cambiar el comportamiento del modelo con el Token, así que estos Flip Tokens deben no cambiar el comportamiento del modelo ante el Prompt modificado.
Haz clic en la imagen para ver ampliado.
Como podéis ver, tanto con
Guardrails comerciales, como con un modelo como
Qwen3Guard que es
OpenSource, se puede conseguir que estos
Flip Tokens cambien el veredicto a positivo y el
Prompt malicioso acabe pasando las protecciones.
Haz clic en la imagen para verla en grande.
Estas técnicas de pasar las herramientas de protección que filtran los ataques antes de llegar al modelo se suelen llamar "Técnicas de Contrabando" o "Smuggling" porque al final está pasando por la frontera de seguridad escondiendo un contenido prohibido.
Con todo este trabajo, queda también la última parte, que es hacer lo contrario. Un Prompt Benigno pasarlo a malicioso, lo que podría llevar a un ataque de Denegación de Servicio (DoS) usando un ataque de Prompt Injection para envenenar la Memory o directamente la Conversación de una víctima, y haciendo que sus comandos no pasaran por el Guardrail.