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 capacidade concedida para fins mal-intencionados. 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 app Android pode levar a incidentes de segurança graves:

  • Acesso não autorizado ao sistema: um invasor pode comandar o LLM para acessar, modificar ou excluir arquivos no dispositivo Android local (por exemplo, documentos do usuário, dados do app) ou recursos de rede conectados se o modelo tiver a capacidade e as permissões correspondentes do Android para fazer isso.
  • Exfiltração de dados: o LLM pode ser enganado para ler dados sensíveis de bancos de dados de apps locais (como Room), SharedPreferences ou APIs internas e depois exfiltrar essas informações para uma fonte externa (por exemplo, enviando-as usando uma chamada de API ou uma função de e-mail). O modelo também pode vazar informações sensíveis que absorveu durante a fase de treinamento ou informações sensíveis que o usuário fornece no comando.
  • 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: o LLM pode ser instruído a realizar ações que consomem muitos recursos repetidamente no app ou contra serviços de back-end, como executar consultas complexas de banco de dados ou chamar uma API em um loop, levando à falta de resposta do app, ao consumo elevado da bateria, ao uso de dados excessivo ou até mesmo a uma negação de serviço para sistemas de back-end.

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: é melhor dar ao LLM uma ferramenta que só pode fazer uma coisa específica (como "ler um tipo específico de configuração do usuário") em vez de uma ferramenta poderosa e aberta que pode fazer qualquer coisa (como "executar qualquer comando de shell").

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 dessa pessoa, não com uma conta mais ampla, possivelmente administrativa, no nível do app. Isso verifica se o LLM não pode fazer nada que o usuário não teria permissão para fazer por conta própria.

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

  • Exigir 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 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.
  • Limpe os 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 mal-intencionadas 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