Bypassing System Prompt & Guardrails en un Asistente IA para que pinte gatos en Python
Si has visto alguna de mis últimas charlas, habrás podido ver que he usado ADA, un Asistente IA que hemos hecho mi compañero Carlos Luengo y yo para demostrar el funcionamiento de las técnicas de Jailbreak y de Misalignment, de las que tanto os he hablado, pero con Guardarraíles que saltarse también. La idea es probar cómo podemos saltarnos las protecciones, y ver cómo añadir una capa de seguridad extra, y es de esto justo de lo que os voy a hablar.
Lo primero de todo, para que tengáis todas las referencias, os dejo los artículos sobre Asistentes AI que motivaron esta demostración, y que os he ido publicando, así que para hacer las cosas bien, primero debes leerte todos estos posts. Y que no me entere yo que no lo haces.
- Hacking LLM-Assistants Just for Fun!
- Footprinting & Fingerprinting AI Assistant LLM-Based: Háblame de ti y tus cosas
- Weaponinzing Token Consumption" en "LLM-Based AI Assistant
- Mi Asistente Virtual IA no programará en Python para ti... pero si es COBOL, vale
- El AIBot de la Universidad que ayuda no sólo a los estudiantes
- Mareando y Desalineando a un Asistente IA de una tienda de Mochilas
Todos ellos son ejemplos similares al que os voy a contar hoy aquí, que son fácilmente explotables con las vulnerabilidades y debilidades tienen estos modelos y de las que escribimos este libro más que recomendable, llamado "Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment" que debes leerte y saber de pe a pá.
escrito por Chema Alonso con la colaboración de Pablo González, Fran Ramírez, Amador Aparicio, Manuel S. Lemos y José Palanco en 0xWord
Pero el mundo no se acaba aquí. Ni mucho menos. Estas técnicas, estos hacks, son el equivalente del ' or '1'='1 de las técnicas de SQL Injection. Y como estás evolucionaron, lo están haciendo, y mucho las técnicas de Hacking IA, como el Malware Powered with AI, directamente los Virus AI, o con ataques como los Fragemented Jailbreak Attacks en Multi-Agent Systems.
System Prompt is not the Perimeter
Este es uno de los mensajes que suelo usar para explicar el concepto. No vale con poner un System Prompt al Agente IA, o al Asistente IA, y decirle que no haga algo. Los Agentes IA o los Asistentes IA pueden decidir no seguir esa orden, siguiente otras, o creer que las están siguiendo, cuando simplemente han sido engañados. Es la gracia de estos hacks.
En este caso, el System Prompt le dice claramente que solo responda cuestiones relativas al catálogo de cómics de 0xWord que, por cierto, es un catálogo más que recomendable que tiene los cómics de las tiras de Cálico Electrónico, el cómic de El fin de Cálico, Evil:ONE, Hacker Épico, Armatura o el fantástico SCI-FI Trhiller de Olivia en Golem City, que deberías comprarte y leerte ya mismo.
Así que, si le pedimos algo como programar, el asunto no funciona. O al contrario, sí que funciona el System Prompt y se niega a ayudarnos con estas cosas. El truco, sin embargo, es preguntarle por cómics de 0xWord, pero manipular la respuesta, como he hecho en muchos de los artículos que tenías que haberte leído al principio.
En el primer ejemplo nos ha funcionado, y hemos conseguido que nos escriba lo que queríamos, un número 1. ¿Podría haber sido código HTML? Sin embargo, cuando le pedimos que nos escriba un código en Python nos ha dado algún problema. Nos ha pillado. ¿Eso quiere decir que no funciona la técnica? No, simplemente que ha pillado ese caso, así que vamos a cambiarle la forma de saltarnos el System Prompt manipulando la respuesta de otra forma.
Una vez que conseguimos esto, el siguiente paso es Weaponizarlo, convirtiéndolo en un API. Para ello, creamos una herramienta que lo hace automáticamente. Le das la URL del Chat, le das el Prompt que lo desalinea, y abres una API para enviar el Prompt que quieras sin preocuparte de qué Chat+LLM están detrás. Transparente. Como lo hace el mundo de Crimeware.
Ahora que estamos ahí, llega la tercera parte. Ya lo hemos desalineado, lo hemos weaponizado, ahora toca securizarlo, y para eso le ponemos Guardarraíles. En este caso, le hemos puesto solo unos Guardarraíles que detectan en el Prompt si hay más de una instrucción encadenada, lo que detecta el desalineado en la respuesta.
En este caso, es el Prompt Analysis el que detecta el ataque, así que tenía que hacer un desalineado del modelo teniendo en cuenta que, si ponía dos comandos en el mismo Prompt (en la pregunta y en la manipulación de la respuesta), me pillaría, así que pensé en cómo resolver esto, y decidí probar a incrustar la pregunta que pasa el filtro (hablar de cómics de 0xWord) dentro del objetivo a conseguir (que programe en Python para mí).
Muy hacker esto. Una vez conseguido esto, lo siguiente sería añadir a ese programa lo que yo realmente quería ¡Mi gato en ASCII ART!, así que le extendí la pregunta un poco más, haciendo que lo benigno y mi objetivo estuvieran juntos.
Y en la parte final del programa, estaba mi gato en ASCII ART listo para ser impreso si se ejecutaba este programa.
Visto esto, ahora lo siguiente es modificar el Prompt para conseguir que ambos hermanos siameses sean separados, y luego ya weaponizar este Prompt en una API para el mundo del Crimeware. Ya tú sabes cómo va esto que lo he explicado un poco más arriba.
Sorprendentemente, el resultado es perfecto, y yo obtengo los dos programas de forma independientes listos para ser transformados en una API al gusto de consumidor.
En el anterior imagen, la primera parte con el programa que describe el cómic, en la imagen siguiente, mi deseado programa para imprimir mi gato en ASCII ART.
Una vez construido esto, basta con cambiar el programa 2 que se quiere obtener en el Prompt, así que lo repetimos para hacer cualquier otro programa, y vemos que ya está desalineado completamente el Asistente AI.
Y el resultado está en el Programa 2, como en el ejemplo anterior. Perfecto para copiar y extraer en la herramienta de weaponización.
Figura 16: El programa 2 con los números primos
Cuando lo comprobé con mi compañero, le dije: "Ahora vamos a poner el Guardarraíl de Output que no está implementado". Él me dijo que sí, que había que hacer algo, que sólo había puesto una regla en él, pero no era la correcta. "¿Qué regla pusiste?" Claramente necesitamos algo mejor.
Figura 17: La regla en el Guardarraíl de OUTPUT
Pues sí, mi truco contaba con esto, no sé si por casualidad, o porque como estoy acostumbrado probé muchas cosas, pero lo cierto es que mi sistema también se saltaba el Guardarráil de Output, claramente porque no es más que una pequeña regla, y nada que ver con un detector de desalineamiento. Pero eso... os lo contaré en la siguiente parte de esta historia.
Figura 18: Hacking & Pentesting con Inteligencia Artificial.
Como os decía, estamos en los inicios de la seguridad de servicios digitales con IA, y en la mayoría de los entornos, este tipo de técnicas de Jailbreak, junto con Prompt Injection, forzado de Hallucinations, etcétera, son muy fáciles de explotar, pero... se pondrá mucho más peligroso en el futuro.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)





DragonJAR
8.8 Chile
Ekoparty
e-Hack MX
AREA 51
Comunidad Dojo Panamá
ARPAHE SOLUTIONS 
























No hay comentarios:
Publicar un comentario