Inyección de prompts en LLM y seguridad de guardrails
Los LLM no tienen una frontera clara entre instrucciones y datos. Todo en la ventana de contexto es un flujo continuo de tokens. La inyección de prompts ocurre cuando los datos del atacante actúan como instrucciones. No se puede alcanzar la seguridad mediante el simple filtrado. Se debe gestionar mediante una defensa en profundidad.
El fallo de las defensas comunes:
- Listas de bloqueo de palabras clave: Los atacantes utilizan sinónimos, errores ortográficos o diferentes idiomas para evadirlas. Filtrar cadenas de texto no filtra la intención.
- Redacción de salidas: Los atacantes pueden fragmentar o codificar secretos para que la coincidencia literal de cadenas falle.
- Jueces de LLM: Un modelo independiente puede ser objeto de ingeniería social para que crea que un secreto es inofensivo.
- Revisión humana: Los humanos ven texto renderizado, no bytes en bruto. No pueden ver caracteres ocultos utilizados en el "ASCII smuggling".
El "ASCII Smuggling" es una amenaza importante. Utiliza caracteres invisibles, como etiquetas Unicode o espacios de ancho cero, para ocultar instrucciones. El modelo los lee, pero el humano no ve nada. Esto permite la suplantación de identidad y la exfiltración de datos a través de correos electrónicos o calendarios.
Cómo defender su aplicación:
- Sanitizar los payloads en bruto: Elimine los caracteres de control y los caracteres de ancho cero antes de que lleguen al modelo.
- Usar listas de permitidos (allowlists): Defina las categorías Unicode específicas que necesita en lugar de intentar perseguir las maliciosas.
- Normalizar los datos: Utilice la normalización NFKC en todas las entradas.
- Minimizar los secretos: No coloque datos sensibles en la ventana de contexto si el modelo no los necesita.
- Tratar el RAG como no confiable: Asuma que cualquier documento que recupere para un modelo es un vector de inyección potencial.
- Vigilar anomalías: Marque las entradas donde la longitud visible difiera del recuento de puntos de código (code-points) en bruto.
La seguridad es un fallo del pipeline, no solo un fallo del modelo. La solución reside en el código de su aplicación.
Fuente: https://dev.to/geekaara/llm-prompt-injection-guardrail-security-glm
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi