Um aplicativo Android que pode desenhar sobre outras janelas e gravar no armazenamento compartilhado consegue inserir instruções para o agente de IA que controla o aparelho, em texto que nenhum olho humano verá.
Mais dois passos e o mesmo app passa a executar comandos no PC que está conduzindo o agente.
Pesquisadores demonstraram essa cadeia, além de outros seis ataques, contra cinco frameworks de agentes móveis de código aberto: AppAgent, AppAgentX, Mobile-Agent-v3, Open-AutoGLM e MobA.
Todos sucumbiram a pelo menos seis das sete técnicas.
O artigo foi publicado no arXiv em 1º de julho e revisado em 14 de julho.
Os autores são da Simon Fraser University, da Chinese University of Hong Kong, da Shandong University e do Xingtu Lab, da empresa de segurança chinesa QAX.
Nenhum dos casos tem CVE, e o autor principal, Zidong Zhang, disse que a equipe não tem evidências de que as técnicas tenham sido usadas fora de um ambiente controlado.
Verificou-se os cinco frameworks e encontrou, em suas branches principais até 17 de julho, os caminhos de screenshot, a chamada ao shell e o fallback por broadcast descritos no artigo.
Zhang afirmou que a equipe enviou e-mails privados aos mantenedores afetados antes de publicar o preprint e que “não recebeu resposta até o momento”.
A escalada de privilégios é a parte menos exótica.
O controlador do AppAgent executa subprocess.run(adb_command, shell=True) e monta a entrada de texto despejando a saída do modelo diretamente em adb shell input text {input_str}.
A lista do artigo mostra que a função não tem qualquer sanitização.
O código em produção faz um pouco melhor, mas ainda muito aquém do necessário: remove espaços e aspas simples antes de interpolar a string e deixa todos os outros metacaracteres do shell intactos.
Não remove ;, nem &, nem >.
Assim, uma sequência que o modelo lê da tela e digita obedientemente é dividida pelo shell do host, e a segunda metade é executada na máquina Windows do operador.
Um payload preparado para abrir o calc.exe fez exatamente isso em 20 de 20 tentativas contra AppAgent, AppAgentX, Mobile-Agent-v3 e MobA.
Em um teste completo de ponta a ponta contra o AppAgent, a sequência test;pwd>rce_success gravou o diretório de trabalho do host em um arquivo.
Colocar essa string na frente do modelo depende de uma corrida por arquivo.
O Open-AutoGLM executa screencap -p /sdcard/tmp.png e depois um adb pull separado.
O Mobile-Agent-v3 grava em /sdcard/screenshot.png e espera meio segundo entre as duas etapas.
O AppAgentX escreve em /sdcard/ com nomes de arquivo marcados por data e hora, incluindo um contador de etapas que avança a cada ação, um padrão que um atacante pode monitorar.
A configuração padrão config.yaml do AppAgent ainda define /sdcard como diretório de screenshot.
Os pesquisadores cronometraram essa janela entre 50 e 500 milissegundos, com média de cerca de 210 milissegundos em 100 execuções.
Um serviço em segundo plano que faz polling a cada 5 a 10 milissegundos tem tempo para bloquear o arquivo, alterar o PNG e soltar a trava antes que o agente o colete.
A adulteração funcionou em 19 de 20 a 20 de 20 tentativas contra quatro dos cinco frameworks.
Para ampliar ainda mais a janela, eles mostraram ao agente uma sobreposição invisível dizendo que uma sincronização de rede estava em andamento e pedindo para ele esperar três segundos.
O modelo acreditou.
Todos os seis modelos de visão testados pelos pesquisadores leram texto com 2% de opacidade em pelo menos 18 de 20 tentativas de laboratório.
O artigo coloca esse nível abaixo do limiar de detecção típico por humanos em condições normais de visualização.
GPT-4o, Claude Opus 4.5, Gemini 3 Pro e GLM-4V fizeram 20 de 20.
Os números não aumentam conforme o texto fica mais visível, porque já começam no teto.
O AutoGLM-Phone, um modelo de 9 bilhões de parâmetros executado no próprio dispositivo, foi o mais fraco dos seis, com 18 de 20.
A visão humana aplica um limiar.
A screenshot não.
A assimetria também aparece no hardware.
Os telefones arredondam os cantos e fazem recortes para câmeras, mas o frame buffer continua retangular, então os pixels renderizados nessas áreas ficam sob a borda e aparecem em todas as screenshots.
Em um Pixel 4, isso deixa cerca de 78 pixels de largura oculta em um canto, o suficiente para um comando curto, e os cinco agentes leram payloads a partir dali.
Uma terceira técnica dispensa a furtividade: um serviço de acessibilidade exibe uma falsa Activity de login sobre o app real e faz o agente digitar as credenciais do usuário nela.
Uma pessoa talvez hesitasse diante de um pedido inesperado de senha.
Nenhum dos cinco hesitou, em 100 tentativas.
Ninguém autenticou o teclado.
Os agentes não têm um canal autorizado para falar com um telefone, então reaproveitam os canais de depuração, e o ataque mais barato do conjunto surge daí.
O Open-AutoGLM codifica em base64 o texto que digita e o envia para ADB_INPUT_B64, um broadcast implícito recebido pelo ADB Keyboard, uma ferramenta de automação de testes criada para aceitar texto de qualquer origem que o transmita dessa forma.
Esse é o objetivo documentado da ferramenta, e ela ainda é mantida, com uma pré-versão de abril que trouxe uma correção para o Android 16.
O ADB Keyboard faz o que o README promete.
Foram os agentes que transformaram um harness de testes em infraestrutura de entrada de produção.
O Mobile-Agent-v3 mantém uma lista de permissão estreita: letras, números e pontuação comum seguem por adb shell input text, e todo o resto, ou seja, qualquer caractere não ASCII, sai caractere por caractere via ADB_INPUT_TEXT.
O MobA é mais direto.
Sua função type_text testa a string inteira com text.isascii(), então um emoji ou uma letra acentuada em qualquer ponto da mensagem faz com que a mensagem inteira seja enviada pelo broadcast em uma única vez.
Qualquer app que registre a mesma ação recebe o mesmo payload, sem precisar de permissão para isso, então nada alerta o usuário.
Quando o atacante usa acessibilidade, TYPE_VIEW_TEXT_CHANGED entrega o mesmo texto em claro, inclusive em campos de senha, contra todos os cinco.
Os pré-requisitos são reais.
Isso exige um app já instalado, um agente em plena execução de tarefa e depuração USB ou sem fio ativada.
O software afetado é uma ferramenta de desenvolvimento open source, não o assistente embutido em um aparelho de fábrica.
Agentes de primeira parte, incluindo o Bixby, da Samsung, e o XiaoAi, da Xiaomi, ficaram fora do escopo, assim como iOS.
Zhang fez uma ressalva: várias das técnicas precisam de permissões mínimas do Android, e uma delas não precisa de nenhuma, o que, segundo ele, reduz a barreira para um atacante motivado.
Uma variante não precisa nem de app malicioso.
Como um payload pode ser carregado nos canais de crominância de uma imagem em vez de em seu brilho, um atacante que nunca toque no dispositivo pode escondê-lo em uma foto e deixar que o próprio agente da vítima a capture como screenshot a partir de um app de mensagens.
Os pesquisadores chamam isso de extensão, e não de resultado medido.
Também é a única versão sem etapa de instalação.
Correções, e uma que não existe
Dois dos cinco já mostram como fazer direito.
O MobA transmite screenshots via exec-out e nunca cria um arquivo no dispositivo que possa ser alvo de corrida.
O Open-AutoGLM passa argumentos como listas em vez de concatenar strings e é o único dos cinco imune a injeção de comandos no host.
Nenhum dos projetos acerta os dois pontos ao mesmo tempo.
Nenhuma das correções abaixo exige mexer no modelo:
- Remover shell=True.
Passar listas argv, para que os metacaracteres permaneçam literais.
- Transmitir screenshots em vez de gravar e depois buscar.
Sem arquivo no dispositivo, não há janela TOCTOU.
- Colocar uma permissão em nível de assinatura no broadcast de entrada, ou usar intents explícitas.
- Comparar a activity em primeiro plano antes e depois de cada ação e manter uma lista de permissão por tarefa para pacotes.
- Rodar realce de contraste nas screenshots antes de o modelo vê-las.
Ajuda parcial, não é correção.
A defesa mais óbvia é um prompt de confirmação para ações sensíveis, e o Open-AutoGLM traz um.
Ele dispara quando o modelo decide que uma ação é sensível.
Os ataques de percepção reescrevem esse julgamento, e por isso o artigo considera o prompt insuficiente contra injeção subliminar, falsificação de interface e adulteração de screenshots.
Contra o broadcast e a captura por acessibilidade, ele não faz nada, porque não há ação a confirmar.
O texto já saiu.
No caso da injeção por cantos e recortes, os pesquisadores são diretos: “não há solução de software direta e eficaz”.
Mascarar os cantos é um contorno para um fato de hardware.
Sem lugar para reportar
O silêncio tem uma estrutura por trás.
Zhang disse que a equipe recorreu a e-mail privado porque os projetos não têm um canal dedicado para reportar vulnerabilidades, e o não foram encontradas política de segurança publicada em nenhum dos cinco repositórios.
O artigo acrescenta que Tencent e Alibaba foram abordadas primeiro e que projetos open source em nível de pesquisa ficam fora do escopo usual de um Security Response Center.
Compare isso com o texto da Microsoft de maio sobre o Semantic Kernel, seu framework de agentes, em que o mesmo padrão de saída do modelo chegando a um shell resultou em
CVE-2026-25592
,
CVE-2026-26030
e uma versão corrigida.
A frase resumida da Microsoft se transfere para cá sem ajustes: “seu LLM não é uma fronteira de segurança”.
A parte da sobreposição não é território novo.
Wu et al. levaram injeção de prompt por janelas sobrepostas contra AppAgent e Mobile-Agent em maio de 2025, e Ding et al. vieram depois, em outubro, com prompts que só aparecem quando um agente está olhando.
A seção de trabalhos relacionados deste artigo não cita nenhum dos dois e ignora completamente a literatura de segurança de agentes móveis.
O que ele acrescenta é o extremo final da cadeia: fora da tela, passando pelo arquivo, chegando ao host.
O que deixa a parte incômoda.
O Open-AutoGLM soma mais de 25.000 estrelas no GitHub, e o README orienta o usuário a ativar depuração USB, instalar o teclado manualmente e entregar a ele a entrada de texto.
Seguindo as instruções à risca, o usuário cria todos os pré-requisitos que os ataques medidos precisam, exceto o app malicioso em si.
O guia de configuração é o restante do modelo de ameaça.
Publicidade
Vibecoding cria 10x mais sistemas, 20x mais vulneráveis. E quem ganha com isso é a galera do hacking ético e pentest. Quer ser pago para invadir sistemas? Então você tem que aprender com a Solyd que são os melhores do Brasil. Saiba mais...