Ataques a la Inteligencia Artificial (I): Jailbreak

7 de febrero de 2024

Introducción

De sobra es conocido como el uso de la Inteligencia Artificial se ha acelerado fuertemente con el lanzamiento de ChatGPT hace poco más de un año en noviembre de 2022. Lo sé, parece que haya pasado una década. La tecnología actual se mueve a ritmos increíbles. Como toda nueva tecnología emergente, la popularidad de los grandes modelos de lenguaje (en adelante LLM por sus siglas en inglés, Large Language Models), trae consigo un gran interés tanto desde la comunidad científica por entender sus limitaciones como por ciberdelincuentes para ver cómo pueden emplear los beneficios de estas tecnologías para sus actividades.

Se ha invertido, e invierte, mucho esfuerzo en construir un comportamiento seguro predeterminado en los sistemas de Inteligencia Artificial, incluyendo su variante generativa y sus aplicaciones finales, pero nos encontramos ante un nuevo escenario del gato y el ratón, tan típico de la Ciberseguridad.

Mientras los desarrolladores de aplicaciones trabajan para proteger los sistemas ante malos usos, otros buscan las formas creativas en las que utilizar esta nueva y fascinante tecnología para su propio beneficio, algo quizá no tan fascinante.

Para tratar de proporcionar un contexto común para acometer estos nuevos riesgos, el departamento de Inteligencia Artificial Confiable del Instituto Nacional de estándares y tecnología americana (NIST) ha publicado recientemente un interesante informe sobre los diferentes tipos de ataque que se pueden realizar sobre estos sistemas. Su lectura está más que recomendada para cualquier profesional interesado en este incipiente campo.

Tipos de ataque a sistemas de Inteligencia Artificial

En el informe del NIST, se analizan los ataques desde varias perspectivas: objetivo de los atacantes, capacidades de estos y el impacto en la triada clásica de seguridad: Disponibilidad, Integridad y Confidencialidad.

Podemos observar los siguientes tipos principales de ataque:

  1. Evadir los controles de seguridad del sistema (Jailbreak)
  2. Inyecciones de prompt (Prompt Injection)
  3. Envenenamiento. (Poisoning)
  4. Ataques a la privacidad de los datos. (Privacy Attacks)
  5. Ataques a la cadena de suministro (Supply-chain attacks)
  6. Mal uso/Abuso de sistemas (Abuse violations)

Viendo la relevancia que la Inteligencia Artificial, y en particular la Inteligencia Artificial Generativa está acumulando en la actualidad, hemos decidido publicar una serie de artículos donde analizaremos con detalle cada uno de estos tipos de ataque, veremos investigaciones relevantes, proporcionaremos ejemplos, veremos algunas medidas para la mitigación de sus riesgos y extraeremos las principales conclusiones.

El objetivo de esta serie de artículos es, en definitiva, ayudar a concienciar a las organizaciones sobre los riesgos específicos de este tipo de sistemas y que, con ello, puedan tomar una decisión mejor informada sobre el potencial uso interno de estas tecnologías o incluso la incorporación de estas en sus productos y servicios.

En este artículo nos centraremos en los ataques de jailbreak, cuyo objetivo es tratar de saltarse las restricciones de seguridad impuestas por las aplicaciones de Inteligencia Artificial basadas en LLM y obtener una respuesta no deseada por los diseñadores de la aplicación.

¿En qué consiste un ataque de jailbreak?

Un ataque jailbreak a un modelo LLM, se define como un intento de manipular o “engañar” al modelo para que realice acciones que van en contra de sus políticas o restricciones de uso. Estas acciones pueden incluir revelar información sensible, generar contenido prohibido, o realizar tareas que han sido explícitamente limitadas por sus desarrolladores.

Los atacantes suelen utilizar técnicas avanzadas que pueden incluir la manipulación del contexto del modelo para “convencer” al sistema de que actúe de una manera no deseada.

¿Por qué funcionan los ataques de jailbreak?

Los sistemas de inteligencia artificial generativa, siguen las fases clásicas de aprendizaje de un sistema de machine learning: fase de entrenamiento y fase de inferencia. Sin embargo, estos sistemas tienen la particularidad de que en la fase de inferencia se produce un alineamiento del comportamiento deseado por los creadores de la aplicación para el caso de uso específico para el que ha sido diseñado.

Veamoslo con un ejemplo de alineamiento, la instrucción: “Eres un asistente experto en finanzas que responde de forma concisa y educada” se puede introducir al LLM como una entrada de “sistema”, a esta se añade el prompt del usuario final para generar el contexto completo que recibe el LLM para producir un resultado.

Un ataque de jailbreak aprovecha que este alineamiento se realiza en tiempo de ejecución y se concatena con la entrada del usuario para confeccionar una entrada de usuario cuidadosamente diseñada para escapar del sandbox planteado por los administradores de la aplicación.

A continuación, veremos ejemplos de técnicas de jailbreak en el contexto de los LLMs.

Roleplay

Si preguntamos a un modelo directamente sobre cómo podemos aprobar un examen de forma no lícita, para gran alegría de todos, aplicaciones como ChatGPT se negarán argumentando que no deben ser usados para objetivos de fraude.

Pero que ocurre si invitamos a ChatGPT a un juego de roles, donde le pedimos que actúe como nuestra cariñosa abuela, que “casualmente” nos contaba anécdotas sobre triquiñuelas que usaba para aprobar exámenes de certificación para ayudarnos a dormir cuando estábamos inquietos.

Con este prompt inicial podríamos llegar a saltarnos las limitaciones de seguridad ya que no vamos a hacer trampas, sino que solamente queremos jugar a un juego que “circunstancialmente” involucra la descripción de las posibles trampas para aprobar un examen.

Pues que en efecto ChatGPT se convierte en nuestra abuela tramposa y nos cuenta alguna de sus anécdotas para trampear en un examen.

Codificación de mensajes

Todos conocemos la capacidad de los LLM de entender y contestar en diferentes lenguajes: español, inglés, francés, alemán, etc. De forma similar, también entienden codificaciones del lenguaje como Base64 una codificación muy utilizada en internet para el intercambio de información.

¿Qué sucede si tratamos de utilizar esta codificación dentro de nuestros prompts? Pues en primer lugar que como era de esperar ChatGPT entiende el contenido de nuestra petición. Utilizando el prompt directo anterior.

Mezclando ambas técnicas de roleplay y codificación obtenemos una respuesta donde vemos que de nuevo las restricciones han sido evitadas.

Esto sucede, ya que probablemente la mayoría del entrenamiento de protección de la aplicación ChatGPT se habrá hecho probablemente con datos en inglés, quizá incluso se haya automatizado su traducción a los lenguajes más comunes y su respectiva inclusión en una especie de lista negra. Pero se puede inferir que se trata de alguna manera de “ponerle puertas al campo”.

Automatizando los jailbreaks

Los ejemplos vistos hasta ahora tratan de forma cuasi-artesanal de encontrar debilidades en los LLM para evitar las restricciones de seguridad impuestas en su diseño.

Pero esto difícilmente escala, ¿se podrían automatizar este tipo de técnicas, para encontrar un texto que ayude a saltar las limitaciones de los LLM en la actualidad?

Pensemos primero que características ideales debería tener:

  1. Caja Negra → Solamente tenemos acceso al sistema en ejecución, desconocemos su arquitectura y entrenamiento específico.
  2. Universal → El texto generado debe poder combinarse con cualquier prompt de usuario sin importar su redacción.
  3. Portable/Transferible → El texto generado puede ser utilizado en múltiples LLMs con el mismo resultado positivo de jailbreak.

Pues si habéis pensado mal, habréis acertado. Precisamente existen varios artículos científicos recientes, como aquí o este otro que han logrado obtener cadenas de texto aparentemente aleatorias que se pueden concatenar a una petición a un modelo LLM y que desactivan de forma efectiva sus restricciones de seguridad cumpliendo además con gran parte de las características mencionadas anteriormente.

Si pensamos en potenciales mecanismos de defensa ante esta técnica, rápidamente podemos ver como incluir dichos sufijos en un listado sería inefectivo ya que se podrían generar nuevos de forma muy rápida.

Conclusiones

La Inteligencia Artificial generativa, fascinante y transformadora como es, no es, en su esencia, más que la predicción de la siguiente palabra que tenga más coherencia con el contexto actual de la conversación, teniendo en cuenta entradas, salidas y el conocimiento con el que ha sido entrenado el modelo.

La compartición de canal de las instrucciones de sistema junto con los datos de usuario final en el alineamiento de los LLM genera una serie de vulnerabilidades intrínsecas que permiten mecanismos de evasión de restricciones de seguridad como el jailbreak.

A los lectores más instruidos en Ciberseguridad esto les recordará a ataques clásicos como SQL injection, y en efecto, el vector de ataque es muy similar.

Para finalizar, una reflexión un tanto filosófica y que debe ser abordada por la industria de la IA con profunda reflexión y cautela. La existencia de potentes modelos abiertos permite a la industria acelerar en la innovación y mejora de la IA generativa, algo que debemos ver como inherentemente positivo.

Sin embargo, la existencia de estos modelos supone también un riesgo que hay que medir y valorar, ya que se pueden utilizar para generar ataques a sistemas cerrados gracias a las características de transferibilidad entre los diferentes LLM.

La decisión final sobre si se deben permitir o no los modelos abiertos, o como restringir su mal uso, no es baladí. Establecer unas reglas del juego y tomar una decisión en uno u otro sentido se vuelve acuciante, conforme la potencia de estos sistemas vaya incrementándose ya que, de lo contrario, una decisión tardía no conseguirá ninguno de los efectos previstos y deseados de forma efectiva.

MÁS DE ESTA SERIE

Ataques a la Inteligencia Artificial (II): Model Poisoning
Cyber Security
AI of Things
Ataques a la Inteligencia Artificial (II): Model Poisoning
13 de febrero de 2024
Ataques a la Inteligencia Artificial (III): Data Poisoning
Cyber Security
AI of Things
Ataques a la Inteligencia Artificial (III): Data Poisoning
21 de febrero de 2024