Mitiga las vulnerabilidades excesivas de la agencia

Descripción del riesgo de OWASP

La agencia excesiva es una vulnerabilidad que ocurre 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 esto usando inyección de instrucciones o alguna 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 puede 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: Un atacante podría ordenar al LLM que acceda, modifique o borre archivos en el dispositivo local con Android (por ejemplo, documentos del usuario, datos de la app) o recursos de red conectados si el modelo tiene la capacidad y los permisos de Android correspondientes para hacerlo.
  • Exfiltración de datos: Se podría engañar al LLM para que lea datos sensibles de bases de datos locales de la app (como Room), SharedPreferences o APIs internas, y luego exfiltre esa información a una fuente externa (por ejemplo, enviándola con una llamada a la API o una función de correo electrónico). El modelo también podría filtrar información sensible que absorbió durante su fase de entrenamiento o información sensible que el usuario proporciona en su instrucción.
  • 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 secuestrar 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: Se le podría indicar al LLM que realice acciones que consuman muchos recursos de forma repetida dentro de la app o contra los servicios de backend, como ejecutar consultas complejas de bases de datos o llamar a una API en un bucle, lo que provocaría que la app no responda, que se agote la batería, que se use una cantidad excesiva de datos o incluso una denegación de servicio para los sistemas de backend.

Mitigaciones para desarrolladores de apps para Android

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

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: Es mejor darle al LLM una herramienta que solo pueda hacer una cosa específica (como "leer un tipo específico de configuración del usuario") en lugar de una herramienta potente y de final abierto que pueda hacer cualquier cosa (como "ejecutar cualquier comando de shell").

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, no con una cuenta más amplia a nivel de la app que podría ser administrativa. Esto verifica que el LLM no pueda hacer nada que el usuario no pueda hacer por sí mismo.

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 integradas en la app, enviar mensajes o 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 back-ends sólidos)

  • Seguridad del backend: No confíes solo en el LLM para decidir si se permite una acción. Todos los servicios de backend o APIs a los que se conecten las funciones activadas por LLMs 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