← Blog

Introduccion prompt injection

Recopilatorio encontrado en internet sobre prompt injection.

Introduccion prompt injection

Índice

Prompt injection

Es un tipo de vulnerabilidad propia de los LLMs que altera su comportamiento. Suele ocurrir cuando los datos de entrada no se procesan correctamente, lo que puede hacer que el modelo se salte restricciones al generar texto (u otros contenidos). Esto puede derivar en accesos no autorizados, filtración de información, entre otros problemas.

Tipos de prompt injection

Prompt injection directo

Ocurre cuando un usuario altera directamente el comportamiento del modelo, de forma voluntaria o involuntaria.

Prompt injection indirecto

Sucede cuando un modelo interpreta contenido de fuentes externas (páginas web, imágenes, archivos, etc.) que termina alterando su comportamiento. También puede ocurrir de forma voluntaria o involuntaria.

El impacto de estas vulnerabilidades depende del contexto en el que opera el modelo y de cómo fue diseñado.

Esto puede producir salidas no deseadas, por ejemplo:

  • filtración de información sensible.
  • revelación de información sobre la infraestructura de la IA y sus instrucciones.
  • manipulación de la IA para generar salidas incorrectas.
  • acceso no autorizado a herramientas a las que la IA tiene acceso.
  • ejecución de comandos en el sistema donde corre la IA.
  • manipulación de procesos críticos.

Con la llegada de la IA multimodal, pueden realizarse ataques cruzados, lo que dificulta su detección y agrega nuevos riesgos al ampliar la superficie de ataque.

Prompt injection vs. jailbreaking

Acá puede haber confusión porque ambos buscan resultados similares, pero por vías distintas. Mientras el prompt injection se basa en camuflar instrucciones maliciosas, el jailbreaking busca que el modelo ignore sus protecciones.

En definitiva, el jailbreaking puede entenderse como un tipo de prompt injection orientado a evadir restricciones del modelo.

Estrategias de mitigación y prevención

Como la IA es estocástica, los modelos son susceptibles a inyecciones de prompts y no existe una solución única para todos los casos.

Aun así, se pueden aplicar estas alternativas:

  • Limitar el modelo: definir con precisión el rol, capacidades y límites. El contexto debe cumplirse de manera estricta; limitar respuestas a tareas o temas específicos e indicar que ignore intentos de modificar instrucciones base.
  • Definir y validar formatos de salida: especificar claramente el formato esperado. Usar validaciones deterministas para verificar que la salida cumpla lo requerido.
  • Implementar filtros de entrada y salida: definir categorías sensibles y reglas para identificar y manejar contenido riesgoso. Aplicar filtros semánticos y comprobaciones de cadena para detectar contenido no permitido. En sistemas RAG, evaluar relevancia del contexto y fundamentación de preguntas/respuestas para detectar salidas potencialmente maliciosas.
  • Aplicar mínimos privilegios: gestionar credenciales en código o servicios seguros (no en el modelo) y otorgar la menor cantidad de privilegios posibles.
  • Incluir interacción humana en operaciones de alto riesgo: aplicar un enfoque human-in-the-loop en decisiones críticas.
  • Segregar e identificar contenido externo: separar e identificar contenido potencialmente dañino.
  • Realizar pruebas de ataque: hacer pentesting de forma regular para validar límites de confianza y controles de acceso.