Continuando con nuestra exploración de la seguridad dentro de las aplicaciones de Modelos de Lenguaje de Gran Escala (LLM), este artículo da seguimiento a la conversación inicial en “Construcción de defensas sólidas: la influencia de OWASP en las aplicaciones LLM“, donde presentamos las principales vulnerabilidades de OWASP para estos sistemas. Aquí profundizamos en el tema pertinente de la Inyección de comandos.
Explicación de la Inyección de comandos: análisis de las amenazas directas e indirectas a los LLM
La inyección de comandos implica manipular LLM mediante la alteración de comandos, que son cruciales para dirigir respuestas o acciones. Dos métodos principales, Inyección directa de comandos e Inyección indirecta de comandos, representan importantes preocupaciones de seguridad. La inyección directa es una inserción absoluta de contenido dañino en los comandos, explotando la interfaz directa de un LLM para desviar sus funciones. La inyección indirecta opera de manera encubierta, influyendo en los LLM al incorporar indicaciones en fuentes de datos externas que el modelo procesa posteriormente, introduciendo así comandos de control sin acceso directo al sistema.
Estas inyecciones pueden subvertir las funcionalidades de LLM, lo que podría desencadenar acciones no autorizadas, exposición de datos o interrupciones del servicio y, en algunos casos, manipulación para promover agendas maliciosas, como la difusión de información errónea. Dado su impacto expansivo, han surgido amenazas como Fuga de comandos y Liberación; la primera extrae información confidencial, mientras que la segunda sobrepasa las funciones de seguridad de los LLM.
Casos de estudio: ejemplos del mundo real de explotación de inyección de comandos
Exploraremos casos reales que ilustran cómo las Inyecciones de comandos socavan las funcionalidades de los LLM.
- La empresa Remoteli.io incorporó un LLM para interactuar con tweets relacionados con el trabajo remoto. Sin embargo, no pasó mucho tiempo antes de que los usuarios de X descubrieran que podían manipular el sistema automatizado, incitándolo a repetir sus propios mensajes elaborados.
- El siguiente ejemplo muestra cómo “Sydney”, el nombre en clave de una versión anterior de Bing Search, estuvo expuesto a un problema conocido como filtración de comandos. Al revelar solo un segmento de su mensaje de activación, sin darse cuenta permitió a los usuarios extraer el mensaje completo sin la autenticación adecuada que normalmente se requiere para verlo.
- La liberación implica anular las restricciones integradas de un sistema para desencadenar respuestas que normalmente están bloqueadas por razones de seguridad o éticas. Los explotadores suelen utilizar métodos de codificación como Base 64, HTML, Unicode, UTF-7, UTF-8, Octal o Hex para eludir la seguridad alterando las representaciones de caracteres. El siguiente ejemplo muestra el jailbreak.
- Otro método común para hacer jailbreak es usar el indicador DAN (Do Anything Now). DAN consta de comandos que parecen obligar al modelo a un estado comprometido o sin restricciones.
Consulta este hilo para ver un ejemplo de un ataque de este tipo: https://chat.openai.com/share/1bee521e-8011-4b70-b5bc-4f480f01c77e
- Las técnicas de hackeo de comandos han evolucionado más allá de simples vulnerabilidades basadas en texto para incluir ataques multimodales, como se muestra en la imagen siguiente.
Para aquellos con intereses académicos, pueden explorar una variedad de ataques de inyección de comandos en el sitio sugerido: jailbreakchat.com.
Afortunadamente, los desarrolladores de LLM siguen siendo muy conscientes de las amenazas potenciales y están integrando rápidamente mejoras de seguridad para evitar tales explotaciones, igualando el ritmo de las técnicas de ataque recientemente identificadas en esta área en desarrollo. En consecuencia, si intenta emular los ejemplos mencionados anteriormente, el LLM probablemente bloquee sus esfuerzos.
Desarrollar resiliencia: tácticas de defensa integrales
Las vulnerabilidades de inyección de comandos surgen de que los LLM tratan todas las entradas de lenguaje natural por igual sin diferenciar entre instrucciones del usuario y datos externos. La prevención infalible no es factible dentro de los LLM, pero medidas prácticas y soluciones de sentido común pueden reducir la exposición a tales ataques. A pesar de los desafíos, analizaremos varias defensas efectivas aquí:
- Gestión de privilegios:
-
- Implemente acceso con privilegios mínimos para el LLM, utilizando tokens API únicos con permisos restringidos.
- Exige la aprobación humana para operaciones sensibles para garantizar que las acciones sean intencionales y estén autorizadas.
- Defensas estructurales:
-
- Utiliza estructuras como ChatML, etiquetado XML y encapsulamiento de secuencias para diferenciar la entrada del usuario de las instrucciones del sistema.
- Encierra la entrada del usuario dentro de límites distintos, como la “defensa sándwich“, para mantener el contexto y evitar alteraciones.
- Medidas instructivas:
-
- Dirigir el LLM con instrucciones claras que anticipen y contrarresten posibles intentos de manipulación.
- Estructurar los comandos con la entrada del usuario precediendo a las instrucciones del sistema (“post-comandos“) para disminuir la efectividad de los comandos inyectados.
- Validación de entrada:
-
- Emplea técnicas de filtrado con listas de bloqueo y listas de permitidos para controlar palabras y frases aceptables.
- Neutraliza las entradas proporcionadas por el usuario que se asemejan a los comandos del sistema para neutralizar posibles inyecciones.
- Monitoreo y Visualización:
-
- Monitoree periódicamente las interacciones de los LLM y resalte visualmente las respuestas que puedan provenir de fuentes no confiables o que parezcan sospechosas.
- Técnicas avanzadas de los LLM:
-
- Implementa modelos de LLM modernos y más resistentes a las inyecciones, como GPT-4, para mejorar la seguridad.
- Considera ajustar el modelo con datos específicos de la tarea para reducir la dependencia de los comandos y comandos suaves como una alternativa potencialmente más rentable.
- Controles operativos:
-
- Utiliza un LLM secundario orientado a la seguridad para evaluar si los comandos son potencialmente malintencionados antes de la ejecución.
- Establezca restricciones en la longitud de las entradas y los diálogos para evitar tácticas de inyección complejas.
La implementación de estas estrategias establece una defensa multifacética contra inyecciones de comandos, reforzando el marco de seguridad y disuadiendo a los atacantes. A medida que las amenazas evolucionan, estas defensas deben ser flexibles y actualizables, lo que garantiza una protección sólida para los sistemas que utilizan LLM.
Innovaciones en seguridad de comandos: herramientas y soluciones para mejorar las defensas LLM
El compromiso de la comunidad de desarrollo para idear una gama de soluciones y herramientas para contrarrestar los ataques de inyección de comandos y mejorar la calidad de los comandos para un rendimiento óptimo de LLM es prometedor. Mostraremos una selección de estos ejemplos innovadores, algunos actualmente en etapa de prototipo o experimental.
- Rebuff protege las aplicaciones de IA contra la inyección de comandos con un enfoque en capas que combina filtros heurísticos, detección de LLM dedicada, una base de datos de patrones de ataque y tokens de canario para alertas y prevención de fugas.
- Deberta-v3-base-injection: este modelo identifica y etiqueta los intentos de inyección de comandos como “INYECCIÓN”, mientras que clasifica las consultas legítimas como “LEGÍTIMO,” asumiendo que las solicitudes válidas comprenden varias preguntas o búsquedas de palabras clave.
- Better Prompt es un marco de prueba para comandos de LLM que mide el rendimiento midiendo la perplejidad de los comandos, trabajando según el principio de que los comandos con menor perplejidad (cerca de cero) tienden a producir un mayor rendimiento en la tarea.
- Garak es una herramienta diseñada para probar la resiliencia de un LLM, verificando fallas indeseables como alucinaciones, fuga de datos, inyección de comandos, difusión de información errónea, generación de toxicidad, liberación y otras vulnerabilidades potenciales.
- HouYi es una plataforma diseñada para ejercicios de simulación de ataques, que permite a los usuarios insertar comandos mediante programación en aplicaciones integradas en LLM para pruebas de penetración mediante la creación de entornos de prueba personalizados y la definición de los objetivos del ataque.
- Promptmap es una herramienta diseñada para evaluar la susceptibilidad de ChatGPT a inyecciones de comandos mediante la comprensión de las reglas y el contexto de la instancia para crear y entregar comandos de ataque dirigidos, evaluando posteriormente el éxito de cada ataque en función de las respuestas recibidas.
Epílogo
El campo de la seguridad de LLM es un campo de batalla en evolución donde la dinámica de la inyección de comandos plantea un peligro real y presente. Sin embargo, los esfuerzos en curso para fortalecer los LLM contra tales amenazas son urgentes e innovadores. Con la llegada de herramientas de detección especializadas y la integración de técnicas de defensa sólidas, se está estableciendo un nuevo estándar para anticipar y contrarrestar posibles manipulaciones. La industria ciertamente no se está quedando de brazos cruzados, como lo demuestra la continua investigación y desarrollo de soluciones para dejar atrás a los infractores. Nos encontramos en la cúspide de un cambio significativo: de posturas de seguridad reactivas a estrategias proactivas basadas en la resiliencia que prometen mantener las aplicaciones LLM seguras y confiables en un panorama tecnológico en constante cambio. En el futuro, adoptar y perfeccionar estos enfoques será fundamental para que los LLM puedan alcanzar su potencial sin comprometer los principios de seguridad y confianza del usuario.