Mitigar vulnerabilidades excessivas da agência

Descrição do risco do OWASP

O excesso de autonomia é uma vulnerabilidade que ocorre quando um modelo de linguagem grande (LLM) recebe habilidades desnecessárias ou permissivas demais para interagir com outros sistemas. Quando um LLM pode chamar ferramentas, plug-ins ou funções externas (a "agência" dele), essa vulnerabilidade permite que ele execute ações não intencionais, não autorizadas e potencialmente prejudiciais. Um invasor pode explorar isso usando injeção de comandos ou outras técnicas de manipulação para enganar o LLM e usar a autonomia concedida para fins maliciosos. O problema principal não é apenas que o LLM pode realizar ações, mas que o escopo dessas ações é muito amplo e mal controlado.

Por que isso é importante para os desenvolvedores Android

Conceder a um LLM autonomia excessiva no seu aplicativo Android pode levar a incidentes de segurança graves:

  • Acesso não autorizado ao sistema: se o sistema de arquivos e os recursos de armazenamento do dispositivo ou a capacidade de fazer chamadas de rede forem expostos ao modelo por chamadas de função, um invasor poderá usar a injeção de comandos para acessar, modificar ou excluir arquivos no dispositivo (por exemplo, documentos do usuário, dados de apps) ou recursos de rede conectados.
  • Exfiltração de dados: se um app usa uma chamada de função para dar a um LLM acesso a dados locais (como bancos de dados do Room, SharedPreferences ou APIs internas). Um comando malicioso pode enganar o modelo para que ele recupere informações sensíveis e as transmita a uma ferramenta externa, como uma função de solicitação de e-mail ou rede.
  • Comprometimento de outras funções/sistemas: se o LLM tiver controle sobre outras funções (por exemplo, enviar SMS, fazer ligações, postar em redes sociais usando intents implícitos, modificar configurações do sistema, fazer compras no app), um invasor poderá sequestrar essas funções para enviar spam, espalhar desinformação ou realizar transações não autorizadas, causando prejuízo financeiro direto ou danos ao usuário.
  • Negação de serviço: se um LLM for integrado à chamada de função que expõe consultas de banco de dados ou solicitações de rede, um comando malicioso poderá acionar essas ações repetidamente. Isso pode levar à degradação da integridade do sistema, como consumo excessivo de bateria, excedentes de dados ou esgotamento de recursos locais.

Mitigações para desenvolvedores de apps Android

A mitigação do excesso de agência em apps Android se concentra na aplicação do princípio de privilégio mínimo a todas as ferramentas e funções que o LLM pode acessar ou acionar.

Limite a caixa de ferramentas da IA (funções granulares x abertas):

  • Forneça ferramentas mínimas: o LLM só deve ter acesso às ferramentas específicas (funções, APIs, intents) de que precisa para fazer o trabalho no seu app. Se ele não precisar navegar na Web ou enviar um e-mail, não exponha essas funcionalidades.
  • Use ferramentas simples e de propósito único: crie ferramentas com um escopo limitado e específico. Por exemplo, forneça uma ferramenta que leia apenas um tipo específico de configuração do usuário em vez de uma ferramenta genérica que aceite parâmetros abertos para acessar várias fontes de dados. Evite expor APIs poderosas no nível do sistema, como Runtime.getRuntime().exec(), a um LLM permitindo que o modelo defina o comando ou os argumentos.

Restringir o poder da IA

  • Permissões detalhadas do Android: quando uma função acionada por um LLM interage com recursos do sistema Android ou outros apps, verifique se o app solicita e mantém apenas o mínimo absoluto de permissões necessárias.
  • Permissões por usuário: quando o LLM realiza uma ação em nome do usuário, ele precisa fazer isso com as permissões e o contexto específicos desse usuário. Uma ação realizada por um LLM precisa ser uma resposta direta a um comando específico do usuário.

Manter um humano no comando (consentimento do usuário para ações críticas)

  • Exija aprovação do usuário: para qualquer ação importante ou arriscada que um LLM possa sugerir ou tentar realizar (por exemplo, excluir dados, fazer compras no app, enviar mensagens, mudar configurações críticas), sempre exija aprovação humana explícita usando uma caixa de diálogo de confirmação na sua interface. É como precisar de um gerente para aprovar uma decisão importante.

Confie, mas verifique (validação de entrada/saída e back-ends robustos)

  • Segurança de back-end: não confie apenas no LLM para decidir se uma ação é permitida. Todos os serviços ou APIs de back-end a que as funções acionadas por LLM se conectam precisam ter autenticação, autorização e validação de entrada robustas para verificar cada solicitação e confirmar se ela é legítima e está dentro dos parâmetros esperados.
  • Limpar dados: assim como em outras vulnerabilidades, é fundamental higienizar e validar a entrada do LLM e os parâmetros gerados por ele para chamadas de função. Isso ajuda a detectar instruções maliciosas ou saídas inesperadas antes da execução de qualquer ação.

Resumo

O excesso de autonomia é uma vulnerabilidade crítica em que um LLM tem permissões muito amplas para interagir com outros sistemas ou funções, permitindo que ele seja enganado para realizar ações prejudiciais. Isso pode levar a acesso não autorizado a dados, comprometimento do sistema, perdas financeiras ou danos ao usuário em aplicativos Android. A mitigação depende muito do princípio de privilégio mínimo: limite estritamente as ferramentas e permissões do Android disponíveis para o LLM, verifique se cada ferramenta tem funcionalidade mínima e específica e exija aprovação humana para todas as operações de alto impacto.

Outros recursos