Vamos a profundizar en el mayor problema de seguridad que tienen los modelos de lenguaje. Pero antes de centrarnos en los LLM, hablemos de dos problemas históricos que comparten la misma raíz.
El primer ejemplo se remonta a la era de las líneas de teléfono analógicas. Las líneas de voz y los comandos del sistema (tonos utilizados para la comunicación entre centralitas) compartían exactamente la misma línea. Esto llevó a la invención de aparatos conocidos como BlueBox, que enviaban comandos desde el teléfono del usuario, permitiendo, por ejemplo, detener la tarificación de la llamada y, esencialmente, llamar gratis.
El segundo problema se encuentra en la arquitectura de los primeros PCs. Debido a que la memoria RAM era muy escasa y los sistemas requerían flexibilidad, se compartía la misma memoria para el código ejecutable y los datos. Cuando los datos crecían demasiado, podían sobreescribir el código ejecutable, lo que conocemos como un ataque de desbordamiento. Si el atacante tenía control sobre los datos entrantes, podía sobreescribir el código ejecutable con su propio código malicioso, tomando así el control de la ejecución del programa.
En ambos casos, el problema es idéntico: se mezclaron los comandos del sistema con los datos del usuario.
Volviendo a los modelos de lenguaje, cuando se crearon los modelos de lenguaje que pueden chatear y seguir instrucciones, acabaron mezclando el prompt de sistema, prompt de usuario, datos externos y respuestas del modelo en un único texto.. Un modelo que sigue instrucciones opera básicamente con un sistema de etiquetas de texto que indican la instrucción del sistema, la instrucción del usuario y la respuesta del modelo de lenguaje, iterando este proceso en una conversación. La razón por la que los modelos de lenguaje funcionan así se debe a su origen: inicialmente fueron diseñados para completar texto. La capacidad de conversar y seguir instrucciones se descubrió posteriormente, añadiendo etiquetas.

Esta estructura es lo que facilita técnicas como el jailbreak, donde las instrucciones del usuario logran convencer al modelo de lenguaje para que ignore las instrucciones del sistema.
Ahora, consideremos cómo introducimos datos externos a un modelo de lenguaje. Lo hacemos metiéndolos dentro del prompt de usuario. Esto significa que, esencialmente, cualquier dato externo es interpretado como instrucciones del usuario.
Si bien al principio esto podía parecer una mera curiosidad, una forma de lograr que el modelo de lenguaje dijera algo prohibido, la situación se volvió seria cuando los agentes de IA entraron en juego.
Ahora, tenemos Inteligencias Artificiales que procesan documentos, leen páginas web, y manejan archivos y datos que provienen de fuentes externas. Estos datos pueden contener instrucciones ocultas para las IA. Esto ya está ocurriendo: se han detectado currículums u papers que llevan mensajes ocultos para las IA que los procesan, ya sea haciéndolos muy pequeños o poniéndolos en color blanco sobre fondo blanco.
Estamos viendo fenómenos como el SEO para inteligencias artificiales, cuyo objetivo es engañar a los modelos de lenguaje para que citen tu página web.
Incluso se han detectado ataques como Shadow Leak, que envía un correo electrónico con texto en color blanco (invisible para el humano). Si una IA procesa este correo, el texto le da instrucciones, usando la funcionalidad de Tool Calling, para conectarse a una URL específica. Estamos presenciando una transición de la ingeniería social a la ingeniería artificial.
El objetivo de estos ataques no es solo engañar a un agente para que elija tus datos o tu web por encima de otros para promoción o conseguir clientes. Existe también el lado opuesto: las empresas de IA han generado un gran descontento al usar datos para el entrenamiento sin pedir permiso. Los medios de comunicación, por ejemplo, que no están contentos con este tema, podrían estar muy interesados en incluir instrucciones en sus textos para confundir a los modelos de lenguaje.
De hecho, la razón por la que probablemente no vemos más pruebas de estos ataques en muchas webs es porque existe el temor a que incluir textos extraños pueda ser penalizado por el SEO de Google.
Hay pocas formas de mitigar este problema y ninguna funciona al 100%:
1. Consumir datos solo de fuentes consideradas seguras.
2. Limpiar los datos de cualquier contenido que pueda considerarse una amenaza, buscando etiquetas o patrones conocidos que se utilicen en ataques.
3. Uso de modelos de lenguaje «guardianes». Estos modelos están diseñados para clasificar el texto que se va a procesar y alertar si contiene contenido no deseado (como violencia o, específicamente, patrones de Jailbreak).
El uso de estos modelos guardianes puede ser una línea extra de defensa. Sin embargo, al igual que sucede con el problema de las alucinaciones, no hay una solución perfecta. Este es un problema inherente a la arquitectura de los propios modelos.
En mi opinión, este tema se va a popularizar mucho en los próximos meses, ya que habrá mucha gente interesada en manipular los modelos de lenguaje, ya sea para conseguir un favor o para entorpecer su trabajo.