Mitiga las vulnerabilidades excesivas de la agencia

Descripción del riesgo de OWASP

La agencia excesiva es una vulnerabilidad que se produce cuando se le otorgan a un modelo de lenguaje grande (LLM) capacidades innecesarias o demasiado permisivas para interactuar con otros sistemas. Cuando un LLM puede llamar a herramientas, complementos o funciones externos (su "agencia"), esta vulnerabilidad le permite realizar acciones no deseadas, no autorizadas y potencialmente dañinas. Un atacante puede aprovechar esta situación usando inyección de instrucciones o cualquier otra técnica de manipulación para engañar al LLM y que use la capacidad que se le otorgó con fines maliciosos. El problema principal no es solo que el LLM pueda realizar acciones, sino que el alcance de esas acciones es demasiado amplio y está mal controlado.

Por qué deberían preocuparse los desarrolladores de Android

Otorgar a un LLM demasiada capacidad de acción dentro de tu aplicación para Android puede generar incidentes de seguridad graves:

  • Acceso no autorizado al sistema: Si el sistema de archivos y los recursos de almacenamiento del dispositivo, o la capacidad de realizar llamadas de red, se exponen al modelo a través de la llamada a funciones, un atacante podría usar la inyección de instrucciones para acceder, modificar o borrar archivos del dispositivo (por ejemplo, documentos del usuario, datos de la app) o recursos de red conectados.
  • Robo de datos: Si una app usa una llamada a función para darle a un LLM acceso a datos locales (como bases de datos de Room, SharedPreferences o APIs internas) Una instrucción maliciosa podría engañar al modelo para que recupere información sensible y la pase a una herramienta externa, como una función de solicitud de correo electrónico o de red.
  • Compromiso de otras funciones o sistemas: Si el LLM tiene control sobre otras funciones (por ejemplo, enviar SMS, hacer llamadas, publicar en redes sociales con intenciones implícitas, modificar la configuración del sistema, realizar compras integradas en la app), un atacante podría apropiarse de estas funciones para enviar spam, difundir desinformación o realizar transacciones no autorizadas, lo que generaría pérdidas financieras directas o daños al usuario.
  • Denegación de servicio: Si un LLM está integrado con llamadas a funciones que exponen consultas de bases de datos o solicitudes de red, una instrucción maliciosa podría activar estas acciones de forma repetida. Esto puede provocar un deterioro del estado del sistema, como un consumo excesivo de batería, un exceso de datos o el agotamiento de los recursos locales.

Mitigaciones para desarrolladores de apps para Android

La mitigación del exceso de agencia en las apps para Android se enfoca en aplicar el principio de privilegio mínimo a cada herramienta y función a las que el LLM puede acceder o activar.

Limita el conjunto de herramientas de la IA (funciones detalladas frente a funciones abiertas):

  • Proporciona herramientas mínimas: El LLM solo debe tener acceso a las herramientas específicas (funciones, APIs, intents) que necesita absolutamente para realizar su trabajo dentro de tu app. Si no necesita poder navegar por la Web ni enviar un correo electrónico, no le expongas esas capacidades.
  • Usa herramientas simples y de un solo propósito: Diseña herramientas con un alcance limitado y específico. Por ejemplo, proporciona una herramienta que solo lee un tipo específico de configuración del usuario en lugar de una herramienta genérica que acepta parámetros abiertos para acceder a varias fuentes de datos. Evita exponer APIs potentes a nivel del sistema, como Runtime.getRuntime().exec(), a un LLM permitiendo que el modelo defina el comando o los argumentos.

Restringe el poder de la IA

  • Permisos detallados de Android: Cuando una función activada por un LLM interactúa con recursos del sistema Android o con otras apps, verifica que tu app solo solicite y mantenga los permisos mínimos absolutos de Android necesarios.
  • Permisos por usuario: Cuando el LLM realiza una acción en nombre del usuario, debe hacerlo con los permisos y el contexto específicos de ese usuario. Una acción que realiza un LLM debe ser una respuesta directa a un comando específico del usuario.

Mantener a una persona a cargo (consentimiento del usuario para acciones críticas)

  • Exige la aprobación del usuario: Para cualquier acción importante o riesgosa que un LLM pueda sugerir o intentar realizar (por ejemplo, borrar datos, realizar compras en la app, enviar mensajes, cambiar parámetros de configuración críticos), siempre exige la aprobación humana explícita con un diálogo de confirmación en tu IU. Piensa en ello como si necesitaras que un gerente apruebe una decisión importante.

Confianza y verificación (validación de entrada/salida y backends sólidos)

  • Seguridad del backend: No solo confíes en el LLM para decidir si se permite una acción. Todos los servicios de backend o APIs a los que se conectan las funciones activadas por LLM deben tener su propia autenticación, autorización y validación de entrada sólidas para verificar cada solicitud y confirmar que sea legítima y esté dentro de los parámetros esperados.
  • Limpiar los datos: Al igual que con otras vulnerabilidades, es fundamental sanitizar y validar tanto la entrada que se ingresa en el LLM como los parámetros que genera el LLM para las llamadas a funciones, de modo que se detecten instrucciones maliciosas o resultados inesperados antes de que se ejecute cualquier acción.

Resumen

La agencia excesiva es una vulnerabilidad crítica en la que un LLM tiene permisos demasiado amplios para interactuar con otros sistemas o funciones, lo que permite engañarlo para que realice acciones dañinas. Esto puede provocar acceso no autorizado a los datos, vulneración del sistema, pérdidas económicas o daños a los usuarios en las aplicaciones para Android. La mitigación se basa en gran medida en el principio de privilegio mínimo: limita estrictamente las herramientas y los permisos de Android disponibles para el LLM, verifica que cada herramienta tenga una funcionalidad mínima y específica, y requiere la aprobación humana para todas las operaciones de alto impacto.

Recursos adicionales