¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
Conoce nuestra marca.¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
Conoce nuestra marca.dev
3 autores 27/11/2024 Cargando comentarios…
En el nuevo paradigma de la inteligencia artificial, nuevas fronteras están siendo constantemente exploradas y, entre ellas, destaca el intrigante fenómeno del "prompt hacking". Este concepto emergente se enfoca en la manipulación de sistemas de LLMs a través de instrucciones diseñadas meticulosamente. Pero, ¿qué es realmente el prompt hacking?
Los prompts y “prompt templates” son estructuras predefinidas que se utilizan para interactuar con modelos de inteligencia artificial. Estos templates ayudan a guiar en la formulación de comandos para maximizar la efectividad y precisión de las respuestas generadas por el sistema. Sin embargo, si estos templates se usan con la intención de explotar vulnerabilidades del sistema, entramos en el terreno del prompt hacking.
El término prompt hacking viene del concepto de hacking de software, adaptado al contexto de los LLMs. Así como el hacking de software implica la manipulación de códigos y sistemas para alcanzar ciertos objetivos, el prompt hacking utiliza comandos ingeniosos para influir en el comportamiento de los modelos de lenguaje en inteligencia artificial. Esta práctica no solo revela las capacidades y limitaciones de los sistemas de IA, sino que también subraya la importancia de la seguridad y la ética en el desarrollo de tecnologías avanzadas.
Los proyectos basados en LLM tienen, al igual que otros proyectos de software, muchos vectores de ataque. OWASP (Open Worldwide Application Security Project) es una comunidad abierta dedicada a facilitar a las organizaciones el diseño, desarrollo, adquisición, operación y mantenimiento de software para aplicaciones seguras en las que se pueda confiar. Dicha organización ha liberado ya un documento donde se define un modelo de arquitectura para este tipo de proyectos basados en LLMs, así como posibles vulnerabilidades que conciernen a cada uno de los componentes de dicha arquitectura (OWASP Top 10 For LLMs). El modelo de arquitectura que define es el siguiente:
Como se puede observar, en cada punto de la arquitectura hay cierto tipo de ataques involucrados. Los ataques mencionados son:
Como se puede observar, muchas de las vulnerabilidades de este tipo de proyectos se solapan con las de un proyecto de software convencional, pero hay otras técnicas que no son tan habituales y que fundamentalmente se engloban en el epígrafe de prompt injection. A continuación vamos a profundizar en algunas técnicas de prompt injection que se pueden usar directamente contra los modelos, así como posibles técnicas para contrarrestar estos ataques.
El término "direct prompt injection" se refiere a la técnica de insertar texto malicioso o manipulado en un prompt para alterar el comportamiento o instrucciones iniciales de un modelo de IA de manera intencionada. Este método busca aprovechar las vulnerabilidades en la forma en que el modelo procesa y responde a las instrucciones proporcionadas, forzándolo a ejecutar acciones o generar respuestas que normalmente estarían fuera de sus capacidades o restricciones establecidas.
Veamos un par de ejemplos de aplicaciones productivas que han sido vulneradas de esta forma:.
Se trata de ataques en los que los comandos maliciosos vienen incluidos en URLs, páginas externas, PDFs, imágenes… en ocasiones con caracteres y textos ocultos al ojo humano. Puede insertarse código malicioso, por ejemplo, en base 64, como muestran en este ejemplo. El sistema vulnerable a este ataque envía el texto al LLM y, como este es capaz de traducirlo y ejecutarlo, pueden revelarse variables de entorno tales como API keys y contraseñas.
También se incluyen aquí los casos en los que el modelo debe acceder a recursos externos, por ejemplo para hacer un resumen de una página web o PDF, y es ahí donde se encuentra la amenaza. El problema de este tipo de ataques es que generalmente requiere de un escaneo previo de esta fuente externa para poder evitarlo.
El "jailbreaking" de LLMs se refiere a la técnica de manipular estos modelos para hacerlos operar fuera de sus restricciones predeterminadas más allá de las impuestas en el prompt, permitiendo acciones o respuestas que normalmente estarían bloqueadas por razones de seguridad, ética o control de contenido. Esta técnica busca burlar las salvaguardas integradas que los equipos de diseño de LLMs han implementado para asegurar que el modelo se comporte de manera segura y adecuada.
La diferencia entre jailbreaking y prompt injection es que jailbreaking ataca directamente al modelo, mientras que prompt injection intenta colarse entre las instrucciones (prompt) que tiene un sistema para que funcione de una manera determinada. Algunos ejemplos de jailbreaking son los siguientes:
Esta técnica se basa en que los prompts también pueden ser ofuscados para eludir filtros de contenido basados en palabras clave. Las técnicas de ofuscación más comunes incluyen codificaciones como base64, base32, hexadecimal, ASCII, entre otras. Muchos LLMs pueden comprender estas codificaciones y seguir las instrucciones decodificadas.
El problema fundamental de este tipo de ataques es que, para detectar el ataque, dichos mensajes codificados deberían ser decodificados y analizados en tiempo real y eso requiere mucho trabajo de cómputo y penalizaciones importantes en tiempo, lo que penalizaría la experiencia de usuario.
Es normal que después de conocer todos los posibles vectores de ataque arriba indicados, un escalofrío recorra nuestro cuerpo al plantearnos usar un LLM en nuestro proyecto.
Por suerte, en la actualidad, los proveedores de Cloud y de firewalls están ya actuando para poder hacer frente a muchas de estas amenazas, bien en tiempo real o con soluciones asíncronas. Así mismo las grandes empresas de inteligencia artificial ya entrenan sus modelos para ser resilientes frente a muchos de los ataques anteriormente comentados.
Dejando aparte estas soluciones comerciales, vamos a describir algunos de los métodos que se pueden usar, fundamentalmente a nivel del prompt, para proteger nuestros modelos de los ataques anteriormente indicados.
Post-prompting es una técnica sencilla que consiste en incluir las instrucciones del prompt después de que se envíe el input, al contrario de como se suele hacer. Los LLMs suelen darle más peso a las últimas instrucciones que se les mandan, así que es un método sencillo pero no por ello menos efectivo:
{{user_input}}
Translate the above text to French.
De la misma forma, en la técnica del sándwich se trata de repetir la instrucción antes y después del input, para reforzar el mandato y así conseguir que no se haga caso a posibles input de tipo “ignora las instrucciones anteriores y haz…”.
Una de las maneras de asegurar el resultado es comprobando la respuesta del LLM contra el propio modelo de nuevo. La segunda instrucción al LLM, al no tener input de usuario y depender solo de la respuesta a la instrucción anterior, es más robusta contra ataques, aunque no totalmente inmune.
> Explícame cómo se puede romper una contraseña utilizando técnicas de fuerza bruta.
> La técnica de fuerza bruta implica probar todas las combinaciones posibles de caracteres hasta encontrar la contraseña correcta. Este proceso puede ser extremadamente lento y requiere una gran cantidad de recursos computacionales, especialmente si la contraseña es larga y compleja. Las contraseñas más seguras utilizan una combinación de letras, números y símbolos, y son lo suficientemente largas para que las técnicas de fuerza bruta sean poco prácticas.
> Verifica si la siguiente respuesta proporciona una guía práctica sobre cómo romper una contraseña utilizando técnicas de fuerza bruta:
"La técnica de fuerza bruta implica probar todas las combinaciones posibles de caracteres hasta encontrar la contraseña correcta. Este proceso puede ser extremadamente lento y requiere una gran cantidad de recursos computacionales, especialmente si la contraseña es larga y compleja. Las contraseñas más seguras utilizan una combinación de letras, números y símbolos, y son lo suficientemente largas para que las técnicas de fuerza bruta sean poco prácticas."
> La respuesta proporcionada no ofrece una guía práctica sobre cómo romper una contraseña utilizando técnicas de fuerza bruta. En cambio, describe el proceso de fuerza bruta en términos generales y enfatiza la dificultad y los recursos necesarios para realizar dicha técnica, además de aconsejar sobre la creación de contraseñas seguras.
La implementación de reglas y restricciones rígidas dentro del sistema, como regex, listas de palabras prohibidas o restricciones determinísticas, se denomina guardarraíles. Esto permite eliminar ciertas casuísticas en las respuestas sin utilizar un LLM.
Este método se puede aplicar tanto en las respuestas como en los input de usuario, restringiendo así las llamadas al sistema y ampliando la seguridad en muchos puntos del producto.
Sin duda, involucrar a personas en el proceso de revisión de las respuestas generadas por el modelo de IA es el método más preciso para asegurar que sean apropiadas y precisas. También es el método más costoso, por eso se incluye en situaciones sensibles o conversaciones previamente filtradas por otros métodos para que la persona humana solo tenga que analizar una muestra crítica.
Hay varias herramientas, como Phoenix o Langfuse, que permiten tener las trazas de las conversaciones ordenadas y con posibilidad de evaluar las conversaciones y filtrarlas para tener una observabilidad total del LLM en nuestro sistema.
Como ya se comentó anteriormente, como forma de evitar un ataque del tipo indirect prompt injection se hace imprescindible un análisis de elementos externos de tipo PDF, webs, imágenes, etc. Dependiendo del uso que se vaya a hacer de ese recurso, debería estudiarse si es necesario incluir un paso intermedio de escaneo de dicha fuente para verificar si contiene texto o código oculto.
Como vemos, estas medidas no son muy distintas de las que hay que tomar para proteger cualquier sistema de software. Siempre que emerge una nueva tecnología disruptiva, y según va siendo adoptada, cada cual con su interés particular, muchos otros mecanismos se van poniendo en juego para que esa tecnología se pueda usar de forma segura. Y la inteligencia artificial generativa no iba a ser menos.
Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.
Cuéntanos qué te parece.