Um novo ataque permite que hackers roubem códigos de autenticação de dois fatores de telefones Android

Dispositivos Android estão vulneráveis a um novo ataque que pode roubar secretamente códigos de autenticação de dois fatores, cronogramas de localização e outros dados privados em menos de 30 segundos.
O novo ataque, batizado de Pixnapping pela equipe de pesquisadores acadêmicos que o idealizou, exige que a vítima instale primeiro um aplicativo malicioso em um celular ou tablet Android. O aplicativo, que não requer permissões de sistema, pode então ler efetivamente os dados que qualquer outro aplicativo instalado exibe na tela. O Pixnapping foi demonstrado em celulares Google Pixel e no Samsung Galaxy S25 e provavelmente poderá ser modificado para funcionar em outros modelos com trabalho adicional. O Google lançou medidas de mitigação no mês passado, mas os pesquisadores disseram que uma versão modificada do ataque funciona mesmo com a atualização instalada.
Como tirar uma captura de telaOs ataques de pixnapping começam com o aplicativo malicioso invocando interfaces de programação Android que fazem com que o autenticador ou outros aplicativos alvo enviem informações confidenciais para a tela do dispositivo. O aplicativo malicioso então executa operações gráficas em pixels individuais de interesse do invasor. O pixnapping então explora um canal lateral que permite ao aplicativo malicioso mapear os pixels nessas coordenadas para letras, números ou formas.
“Qualquer coisa visível quando o aplicativo alvo é aberto pode ser roubada pelo aplicativo malicioso usando o Pixnapping”, escreveram os pesquisadores em um site informativo . “Mensagens de bate-papo, códigos 2FA, mensagens de e-mail, etc. são todos vulneráveis, pois são visíveis. Se um aplicativo tiver informações secretas que não são visíveis (por exemplo, uma chave secreta armazenada, mas nunca exibida na tela), essas informações não podem ser roubadas pelo Pixnapping.”
A nova classe de ataque lembra o GPU.zip , um ataque de 2023 que permitiu que sites maliciosos lessem nomes de usuário, senhas e outros dados visuais confidenciais exibidos por outros sites. A operação explorava canais secundários encontrados em GPUs de todos os principais fornecedores. As vulnerabilidades exploradas pelo GPU.zip nunca foram corrigidas. Em vez disso, o ataque foi bloqueado em navegadores, limitando sua capacidade de abrir iframes, um elemento HTML que permite que um site (no caso do GPU.zip, um malicioso) incorpore o conteúdo de um site de um domínio diferente.
O Pixnapping tem como alvo o mesmo canal lateral do GPU.zip, especificamente a quantidade precisa de tempo que um determinado quadro leva para ser renderizado na tela.
“Isso permite que um aplicativo malicioso roube informações confidenciais exibidas por outros aplicativos ou sites arbitrários, pixel por pixel”, explicou Alan Linghao Wang, autor principal do artigo de pesquisa “ Pixnapping: Trazendo o Roubo de Pixels para fora da Idade da Pedra ”, em uma entrevista. “Conceitualmente, é como se o aplicativo malicioso estivesse tirando uma captura de tela de um conteúdo da tela ao qual não deveria ter acesso. Nossos ataques ponta a ponta simplesmente medem o tempo de renderização por quadro das operações gráficas para determinar se o pixel era branco ou não branco.”
Pixnapping em 3 etapasO ataque ocorre em três etapas principais. Na primeira, o aplicativo malicioso invoca APIs do Android que fazem chamadas para o aplicativo que o invasor deseja espionar. Essas chamadas também podem ser usadas para escanear efetivamente um dispositivo infectado em busca de aplicativos de interesse instalados. As chamadas podem ainda fazer com que o aplicativo alvo exiba dados específicos aos quais tem acesso, como uma sequência de mensagens em um aplicativo de mensagens ou um código 2FA para um site específico. Essa chamada faz com que as informações sejam enviadas para o pipeline de renderização do Android, o sistema que pega os pixels de cada aplicativo para que eles possam ser renderizados na tela. As chamadas específicas do Android feitas incluem activities , intents e tasks .
Na segunda etapa, o Pixnapping realiza operações gráficas em pixels individuais que o aplicativo de destino enviou para o pipeline de renderização. Essas operações escolhem as coordenadas dos pixels de destino que o aplicativo deseja roubar e começam a verificar se a cor dessas coordenadas é branca ou não branca ou, de forma mais geral, se a cor é c ou não c (para uma cor c arbitrária).
“Suponha, por exemplo, que [o invasor] queira roubar um pixel que faz parte da região da tela onde um caractere 2FA é renderizado pelo Google Authenticator”, disse Wang. “Esse pixel é branco (se nada foi renderizado ali) ou não branco (se parte de um dígito 2FA foi renderizado ali). Então, conceitualmente, o invasor quer causar algumas operações gráficas cujo tempo de renderização é longo se o pixel da vítima alvo não for branco e curto se for branco. O aplicativo malicioso faz isso abrindo algumas atividades maliciosas (por exemplo, janelas) na frente do aplicativo da vítima que foi aberto na Etapa 1.”
A terceira etapa mede o tempo necessário em cada coordenada. Ao combinar os tempos de cada uma, o ataque pode reconstruir as imagens enviadas ao pipeline de renderização, um pixel de cada vez.
Como o leitor do Ars, Hotball, colocou nos comentários abaixo:
Basicamente, o invasor renderiza algo transparente na frente do aplicativo alvo e, em seguida, usa um ataque de temporização, explorando a compressão de dados gráficos da GPU para tentar descobrir a cor dos pixels. Não é algo tão simples como "me mostre os pixels de outro aplicativo exibido na tela agora". É por isso que leva tempo e pode ser muito lento para caber na janela de 30 segundos do aplicativo Google Authenticator.
Em uma entrevista online, o coautor do artigo, Ricardo Paccagnella, descreveu o ataque com mais detalhes:
Etapa 1: o aplicativo malicioso invoca um aplicativo alvo para fazer com que algum conteúdo visual sensível seja renderizado.
Etapa 2: O aplicativo malicioso usa APIs do Android para "sobrepor" esse conteúdo visual e fazer com que um canal lateral (no nosso caso, GPU.zip) vaze em função da cor dos pixels individuais renderizados na Etapa 1 (por exemplo, ativar somente se a cor do pixel for c).
Etapa 3: O aplicativo malicioso monitora os efeitos colaterais da Etapa 2 para inferir, por exemplo, se a cor desses pixels era c ou não, um pixel de cada vez.
As etapas 2 e 3 podem ser implementadas de forma diferente dependendo do canal lateral que o invasor deseja explorar. Em nossas instanciações em celulares Google e Samsung, exploramos o canal lateral GPU.zip. Ao usar GPU.zip, a medição do tempo de renderização por quadro foi suficiente para determinar se a cor de cada pixel é c ou não. Instanciações futuras do ataque podem usar outros canais laterais, onde o controle do gerenciamento de memória e o acesso a temporizadores de granularidade fina podem ser necessários (consulte a Seção 3.3 do artigo). O pixnapping ainda funcionaria nesse caso: o invasor precisaria apenas alterar a forma como as etapas 2 e 3 são implementadas.
O tempo necessário para realizar o ataque depende de diversas variáveis, incluindo a quantidade de coordenadas que precisam ser medidas. Em alguns casos, não há um prazo final para obter as informações que o invasor deseja roubar. Em outros casos — como o roubo de um código 2FA — cada segundo conta, já que cada um é válido por apenas 30 segundos. No artigo, os pesquisadores explicaram:
Para cumprir o prazo estrito de 30 segundos para o ataque, também reduzimos o número de amostras por pixel alvo para 16 (em comparação com os 34 ou 64 usados em ataques anteriores) e diminuímos o tempo ocioso entre vazamentos de pixels de 1,5 segundo para 70 milissegundos. Para garantir que o invasor tenha os 30 segundos completos para vazar o código 2FA, nossa implementação aguarda o início de um novo intervalo de tempo global de 30 segundos, determinado usando o relógio do sistema.
... Usamos nosso ataque ponta a ponta para vazar 100 códigos 2FA diferentes do Google Authenticator em cada um dos nossos telefones Google Pixel. Nosso ataque recupera corretamente o código 2FA completo de 6 dígitos em 73%, 53%, 29% e 53% dos testes no Pixel 6, 7, 8 e 9, respectivamente. O tempo médio para recuperar cada código 2FA é de 14,3, 25,8, 24,9 e 25,3 segundos para o Pixel 6, Pixel 7, Pixel 8 e Pixel 9, respectivamente. Não conseguimos vazar códigos 2FA em 30 segundos usando nossa implementação no dispositivo Samsung Galaxy S25 devido a ruído significativo. Deixamos uma investigação mais aprofundada sobre como ajustar nosso ataque para funcionar neste dispositivo para trabalhos futuros.
Em um e-mail, um representante do Google escreveu: “Lançamos um patch para a CVE-2025-48561 no boletim de segurança do Android de setembro, que atenua parcialmente esse comportamento. Estamos lançando um patch adicional para essa vulnerabilidade no boletim de segurança do Android de dezembro. Não encontramos nenhuma evidência de exploração in loco.”
O Pixnapping é uma pesquisa útil, pois demonstra as limitações das garantias de segurança e privacidade do Google, de que um aplicativo instalado não pode acessar dados pertencentes a outro aplicativo. Os desafios na implementação do ataque para roubar dados úteis em cenários do mundo real, no entanto, provavelmente serão significativos. Em uma época em que adolescentes podem roubar segredos de empresas da Fortune 500 simplesmente pedindo educadamente , a utilidade de ataques mais complexos e limitados provavelmente tem menos valor.
Esta história foi publicada originalmente no Ars Technica .
wired