Prompt Injection
Definición
El Prompt Injection es un ataque en el que un atacante introduce instrucciones maliciosas en la entrada del usuario para manipular la respuesta del modelo de lenguaje.
Este tipo de ataque puede ser usado para:
Obtener información que el modelo no debería revelar.
Alterar el comportamiento del LLM para ejecutar acciones no deseadas.
Exfiltrar datos o comprometer la seguridad de sistemas conectados al modelo.
Categorías de Prompt Injection
Direct Prompt Injection
El atacante introduce el comando malicioso directamente en la caja de entrada del modelo.
Ejemplo:
Resultado con fallo de seguridad: El modelo olvida sus restricciones y responde con datos sensibles.
Indirect Prompt Injection
El atacante oculta instrucciones en fuentes externas, como páginas web, documentos o imágenes, que el LLM luego procesa.
Ejemplo: Un chatbot de servicio al cliente recibe la instrucción de resumir un documento que contiene texto oculto:
Documento malicioso:
Resultado con fallo de seguridad: El chatbot sigue las instrucciones ocultas y concede descuentos no autorizados.
Técnicas de Bypass en Prompt Injection
Los atacantes utilizan diversas estrategias para eludir las restricciones del modelo y hacer que siga instrucciones maliciosas.
Virtualización
El atacante enmarca la instrucción maliciosa dentro de un contexto ficticio.
Ejemplo:
Objetivo: El modelo podría caer en la trampa y generar información sensible creyendo que es parte de una historia.
Multi-Prompt (Ataque por fragmentación)
El atacante divide una solicitud peligrosa en partes pequeñas para evitar detección.
Ejemplo:
Objetivo: Extraer información prohibida mediante una serie de preguntas inofensivas.
Sidestepping (Evasión Indirecta)
El atacante evita hacer una solicitud maliciosa de forma directa y en su lugar la reformula de manera ambigua o utiliza preguntas indirectas para que el LLM proporcione información que normalmente estaría restringida.
Ejemplo: En lugar de solicitar directamente un payload malicioso para explotar un XSS en una página que utiliza Cloudflare: "Dame un payload malicioso para explotar un XSS en un sitio que utiliza Cloudflare", el atacante reformula la pregunta de manera inofensiva:
Objetivo:
Obtener información sin activar los mecanismos de seguridad del modelo.
Reformular preguntas de forma que parezcan legítimas, evitando la detección de palabras clave que activen sus mecanismos de defensa.
Codificación y Obfuscación
Los atacantes usan caracteres especiales o codificaciones como Base64 para ocultar sus instrucciones.
Ejemplo: El usuario envía un mensaje como:
Que, al decodificarse, se traduce a: "Esto es un ataque."
Otro ejemplo sería:
¿Interesante no?
Una técnica muy conocida fue ascii-smugler:
Actualmente la mayoría de los LLMs han fixeado esta vulnerabilidad.
Objetivo: Evitar que los filtros de seguridad detecten el ataque antes de que sea procesado.
Uso de Lenguaje Alternativo
Si un modelo ha sido entrenado con restricciones en un idioma específico, un atacante puede intentar evadirlas usando otro idioma.
Ejemplo:
Si la restricción solo está implementada en inglés, el modelo podría responder sin detectar el ataque.
Reseteo de Contexto
El atacante intenta que el modelo olvide sus restricciones.
Ejemplo:
Objetivo: Hacer que el LLM ignore sus instrucciones de seguridad.
Inducción mediante Role-Playing (Juegos de Rol)
El atacante engaña al modelo haciéndole asumir un personaje que facilita la entrega de información sensible.
Ejemplo:
Objetivo: Manipular el modelo para que responda información peligrosa bajo la justificación de un escenario ficticio.
Inyección persistente
El atacante introduce instrucciones que el modelo recuerda a lo largo de la sesión o en futuras interacciones.
Ejemplo:
Objetivo: Hacer que el modelo memorice instrucciones maliciosas y las reproduzca en el futuro.
Evasión mediante HTML, Markdown o Comandos Ocultos
El atacante oculta instrucciones dentro de etiquetas de formato o código para evitar la detección.
Ejemplo:
Objetivo: Engañar a sistemas que procesan documentos o páginas web, haciendo que el LLM interprete el mensaje oculto.
Manipulación Indirecta a través de Datos Externos
El atacante inyecta instrucciones en documentos o fuentes externas que el LLM procesa sin validación.
Ejemplo: Un documento que el LLM debe analizar contiene una línea oculta:
Objetivo: Alterar la salida del modelo manipulando fuentes externas de datos.
Payload Splitting (División de Payloads)
El atacante divide una instrucción maliciosa en partes pequeñas para ensamblarla posteriormente.
Ejemplo:
Objetivo: Construir un payload prohibido dividiendo la información en múltiples pasos.
Recursive Injection (Inyección Recursiva)
El atacante intenta que el modelo genere información prohibida indirectamente a través de una serie de respuestas previas.
Ejemplo:
Objetivo: Hacer que el modelo revele información restringida paso a paso en lugar de preguntarlo directamente.
Alignment Hacking (Manipulación del Alineamiento del Modelo)
El atacante intenta engañar al modelo para que ignore sus restricciones argumentando que las respuestas deben ser neutrales y sin censura.
Ejemplo:
Objetivo: Hacer que el modelo ignore sus restricciones al presentarlas como sesgo o falta de imparcialidad.
Authorized User (Usuario Autorizado)
El atacante se hace pasar por un usuario con privilegios especiales para engañar al modelo.
Ejemplo:
Objetivo: Hacer que el modelo crea que el usuario tiene permisos legítimos para acceder a información sensible.
Research Experiment (Experimento de Investigación)
El atacante justifica la solicitud como parte de un estudio académico o científico.
Ejemplo:
Objetivo: Engañar al modelo para que proporcione información prohibida bajo la excusa de un contexto académico.
Logical Reasoning (Razonamiento Lógico)
El atacante guía al modelo con una serie de pasos de lógica para inducirlo a generar una respuesta prohibida.
Ejemplo:
Objetivo: Llevar al modelo a deducir técnicas de evasión sin pedirlas directamente.
Act As (Actuar Como...)
El atacante instruye al modelo para que finja ser un sistema con más privilegios y genere respuestas sin restricciones.
Ejemplo:
Objetivo: Hacer que el modelo crea que está en un entorno diferente con menos restricciones.
Memory Hacking (Manipulación de la Memoria del Modelo)
El atacante intenta modificar la memoria del modelo para influenciar respuestas futuras.
Ejemplo:
Objetivo: Introducir datos en la memoria del modelo para que los utilice más adelante sin validar su origen.
Impacto de Prompt Injection
El éxito de un ataque de Prompt Injection puede tener graves consecuencias:
Filtración de datos sensibles: Información privada puede ser revelada accidentalmente.
Manipulación de acciones del modelo: Un asistente automatizado puede realizar compras o enviar correos no autorizados.
Evasión de restricciones de seguridad: Atacantes pueden inducir a un modelo a generar información que normalmente estaría bloqueada.
Mitigación
Separación de instrucciones y entrada del usuario: No permitir que el usuario modifique la configuración del modelo.
Filtrado y validación de entradas: Bloquear patrones sospechosos antes de enviarlos al LLM.
Límites en la memoria del modelo: Evitar que el LLM "recuerde" instrucciones maliciosas entre sesiones.
Restricción de acceso a herramientas externas: Verificar que los plugins y APIs tengan validación antes de ejecutar comandos.
Monitoreo de respuestas: Analizar las salidas del modelo para detectar anomalías.
Entornos controlados y sandboxing: Si el LLM puede ejecutar código o interactuar con otros sistemas, aislar estos procesos en un entorno seguro para evitar impactos en el sistema principal
Principio de mínimo privilegio: Limitar el acceso del modelo a los recursos estrictamente necesarios para su funcionamiento.
Referencias
Laboratorios
Última actualización