Uma falha no Telegram Desktop permitiu que a mensagem de um bot inserisse JavaScript oculto em conversas exportadas pelos usuários para arquivos HTML, segundo pesquisadores de segurança da ExPatch em um relatório publicado em 12 de setembro.
No Telegram, a mensagem parecia comum, com um botão de link, e o script só era executado quando alguém abria o arquivo exportado em um navegador. A partir daí, ele podia copiar todas as mensagens daquele arquivo para um servidor controlado pelo atacante ou alterar o conteúdo exibido pela página.
O Telegram lançou uma correção em julho, mas a atualização do aplicativo não altera arquivos exportados com versões anteriores. Na prática, isso significa que exportações antigas em HTML ainda podem carregar o script.
O Telegram Desktop, aplicativo do Telegram para Windows, macOS e Linux, permite salvar uma conversa ou todas as conversas de uma conta como páginas HTML que abrem no navegador. Bots podem adicionar linhas de botões abaixo de suas mensagens, que o Telegram chama de teclados inline, e o bot escolhe o texto exibido em cada botão.
Até a correção, o código de exportação gravava esse texto diretamente na página HTML sem fazer a devida limpeza, descobriram os pesquisadores Denis Rostilov e Aleksander Rostilov.
A limpeza transforma caracteres como < para que o navegador os mostre como texto, em vez de tratá-los como código. O recurso já fazia isso com o texto das mensagens, nomes de remetentes e outros campos.
Com isso, um bot podia inserir uma tag de script no texto de um botão, preenchida com caracteres invisíveis, para que o botão parecesse vazio na versão do Telegram Desktop que eles testaram.
O bot nem precisava estar na conversa alvo. Quando uma mensagem com botões de link é encaminhada, esses botões são preservados. Assim, qualquer membro que repasse a mensagem do bot para um grupo leva o script junto, segundo os pesquisadores. A mensagem então permanece no histórico como qualquer outra até ser apagada e pode ser exportada meses ou anos depois.
Os pesquisadores relataram a falha ao Telegram em 3 de junho, dois dias após encontrá-la, e afirmam que os testes foram feitos apenas em suas próprias contas e grupos de teste. O relatório não afirma que alguém tenha explorado a falha contra usuários reais.
Quando um arquivo de exportação contendo a mensagem era aberto, o script era executado sem qualquer clique adicional, disseram os pesquisadores. Ele podia ler todas as mensagens daquele arquivo, incluindo nomes de remetentes e timestamps, o nome da conversa, seu tipo, a quantidade de membros e o caminho local do arquivo, além de enviar tudo ao servidor do atacante.
O código de exportação do Telegram Desktop divide exportações longas em arquivos com 1.000 mensagens cada, de modo que um arquivo expõe apenas seu próprio conteúdo, e não toda a conversa nem toda a conta do Telegram.
O script também podia reescrever a página. Na demonstração dos pesquisadores, ele substituiu toda a exportação por um falso formulário de “verificação” do Telegram.
Segundo eles, o mesmo controle poderia alterar datas, remetentes ou o texto das mensagens em um arquivo usado como registro. Isso não modificava a cópia da conversa mantida pelo próprio Telegram nem o arquivo exportado salvo em disco.
Os pesquisadores atribuíram à falha nota 8,2 na escala CVSS 3.1, e até 14 de setembro não havia pontuação publicada nem pelo Telegram nem pela National Vulnerability Database (NVD) dos Estados Unidos.
Para que o script fosse executado, três condições precisavam ser atendidas: a exportação em HTML tinha de ter sido feita com uma versão do Telegram Desktop anterior à correção, a mensagem com o script precisava estar dentro da conversa exportada e o arquivo tinha de ser aberto em um navegador com JavaScript ativado.
Os pesquisadores analisaram apenas a exportação em HTML do Telegram Desktop e não abordaram o formato de exportação JSON nem os recursos de exportação de outros aplicativos do Telegram.
Se uma mensagem encaminhada de um bot apareceria ou não em uma exportação depende de como a exportação é feita. Exportar uma única conversa pelo menu inclui as mensagens de todos os participantes. Já uma exportação de conta completa inclui, por padrão, apenas as mensagens do próprio titular da conta em grupos e canais, mas todas as mensagens em conversas individuais e em chats com bots, segundo o código de exportação e a documentação do Telegram.
A correção, identificada pelo commit 8457d13a e feita pelo desenvolvedor John Preston, do Telegram Desktop, adiciona a limpeza que faltava. O código foi escrito em 30 de junho e chegou à versão beta 6.9.4 em 3 de julho e à versão estável 7.0.1 em 14 de julho, as primeiras versões corrigidas publicadas no GitHub. A linha sem limpeza estava presente nas versões estáveis desde 4.15.1, lançada em março de 2024, há cerca de dois anos e quatro meses.
Afetadas: Telegram Desktop 4.15.1 (março de 2024) até 6.9.3
Corrigidas: 6.9.4 beta (3 de julho de 2026), 7.0.1 (14 de julho de 2026) e posteriores
Os pesquisadores recomendam que os usuários:
Atualizem o Telegram Desktop para a versão 7.0.1 ou posterior, ou para a 6.9.4 ou posterior no canal beta.
Depois da atualização, exportem novamente quaisquer conversas que tenham sido exportadas em HTML antes da correção, ou abram os arquivos antigos apenas com JavaScript desativado.
Tratem como não confiável qualquer exportação em HTML feita antes da correção, especialmente em grupos grandes, onde é difícil verificar a origem de cada mensagem.
Até o aplicativo ser atualizado, não há motivo para criar novas exportações em HTML, já que apenas exportações geradas pelo código antigo carregam a falha.
Até 14 de setembro, o Telegram não havia publicado orientações para usuários que ainda guardam exportações antigas.
Sem comunicado, sem CVE
As notas de versão da 6.9.4 e da 7.0.1, o histórico de mudanças do aplicativo e o anúncio da atualização feito pelo Telegram em 14 de julho não mencionam a correção, e o repositório do Telegram Desktop no GitHub não lista nenhum comunicado de segurança.
Também não há um identificador CVE para a falha. Os pesquisadores observaram que, até 11 de setembro, uma busca em bases públicas de vulnerabilidades em 14 de setembro não encontrou nenhum registro.
Os pesquisadores afirmam que o Telegram confirmou a falha em 1º de julho e ofereceu uma recompensa de US$ 500 no programa de bug bounty, valor que eles recusaram e pediram que fosse doado para caridade. Eles solicitaram uma data coordenada de publicação e se ofereceram para permanecer em silêncio até que o patch fosse lançado.
“Também consideramos a possibilidade de uma divulgação pública, mas não podemos aprová-la, porque divulgar até mesmo problemas já corrigidos pode colocar mais usuários do Telegram em risco no futuro. Por exemplo, se informações sobre uma vulnerabilidade forem tornadas públicas, atores maliciosos podem tentar explorá-la, causando prejuízo financeiro aos usuários do Telegram”, escreveu o suporte do Telegram em um e-mail datado de 1º de julho, publicado pelos pesquisadores como captura de tela.
Os pesquisadores entenderam a resposta como uma recusa em permitir a publicação mesmo após a correção. Eles afirmam que não havia acordo de confidencialidade cobrindo o relatório e publicaram o material em 12 de setembro, depois que o patch já havia sido liberado.
As regras públicas do bug bounty do Telegram dizem que vulnerabilidades “divulgadas ao público ou a terceiros antes de serem corrigidas” não são elegíveis para recompensa. A página não diz nada sobre publicação após a correção.
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...