
Mais recentemente, vi
um artigo que falava sobre a introdução de
mensagens autodestrutivas no messenger do
WhatsApp . Ele terá funcionalidade semelhante ao Telegram, mas se no messenger de Durov a exclusão se aplicar a mensagens comuns (bate-papos secretos), eles também poderão ser usados em fotos em bate-papos regulares. Ou seja, depois de enviar suponha a foto, o interlocutor poderá visualizá-la por um período limitado de tempo e, depois, teoricamente, será excluído dos dois interlocutores (de preferência também do servidor), então o WhatsApp planeja introduzir a exclusão de mensagens regulares (e até o momento) .
Hoje, porém, não estamos falando sobre o WhatsApp (porque eu não uso), mas sobre o Telegram. A própria idéia de mensagens autodestrutivas dificilmente é muito procurada, mas existem usuários que as usam, por exemplo, quando enviam documentos ou fotos que só podem ser vistas uma vez (ahem).
Para quem tem preguiça de ler,
as mensagens autodestrutivas no Telegram não são seguras nem confidenciais. Não pense que, se você enviar um documento importante para alguém com quem conversar dessa maneira, ele não será capaz de salvá-lo (e não estou falando de uma captura de tela rápida ou fotografias de telas de telefone, Deus permita) - use bate-papos secretos para isso. E para aqueles que estão interessados na própria implementação dessas mensagens, você pode continuar lendo.
Eu também os usei, embora não com frequência, e sim que eram apenas "entretenimento" e não os assisti especialmente. No mês de junho deste ano, enquanto pesquisava o
Telegram da
UserAPI , testei o envio e o recebimento de fotos. Eu me diverti, não mais. E apareceu interesse em ver a "visão" do envio de mensagens e como elas geralmente são exibidas na resposta. Fiquei me perguntando como essa função é implementada “de dentro”, se os arquivos são excluídos do servidor Telegram ou podem ser criptografados de alguma forma.
E para minha surpresa, essas mensagens não são praticamente diferentes das usuais. Direto mesmo. Eles têm o mesmo
file_id que as fotos comuns, com as quais você pode obter o próprio arquivo. E mesmo que você tenha olhado para a mensagem e ela desapareceu no bate-papo,
você pode salvar / enviar / encaminhar com segurança e fazer o mesmo que faria com fotos / vídeos comuns. Ou seja, não é excluído do próprio servidor Telegram.
Repito, essas mensagens não se aplicam a bate-papos secretos, onde a correspondência está em dois dispositivos, e de outro cliente não consigo acessá-los. Esse recurso foi desenvolvido para bate-papos regulares e parece ser considerado "seguro". Mas aqui é interessante, não encontrei uma descrição detalhada dessas mensagens autodestrutivas em nenhum lugar. Ou seja, o Telegram parece não nos dizer que essas mensagens são tão seguras em termos de acesso (se você tiver acesso à própria conta) como, por exemplo, os mesmos chats secretos. A única coisa que vi foi que o próprio Telegram disse que nenhuma mensagem, mesmo bate-papos secretos, tem 100% de segurança e que todos são responsáveis pelas mensagens que ele envia, mas ...
Confesso que ele seria implementado em alguns WhatsApp / Viber / VK, eu nem prestaria atenção nele, mas o Telegram é um mensageiro muito conveniente que eu realmente amo, mas o que odeio é seu apoio cheio de voluntários.
No mesmo mês de junho, escrevi para support@telegram.org, onde escrevi uma carta inteira em dois idiomas. Ele disse não apenas sobre mensagens autodestrutivas, mas também sobre mensagens comuns e que o Telegram não estabelece limites para o encaminhamento, mas mais sobre isso mais tarde.
Dois meses depois, eles não me responderam, então eu tive que escrever para o próprio Telegrama de "suporte" sobre como explicar o que fazer e onde escrever ao encontrar esse tipo de "Vulnerabilidade".
Lá, eles me surpreenderam três horas depois, onde me disseram que você deveria escrever sobre vulnerabilidades sérias no protocolo em security@telegram.org ou compartilhar os detalhes aqui. Anexo o texto da resposta original do suporte:
5 de julho, resposta de suporteOi Você pode compartilhar os detalhes aqui ou escrever para security@telegram.org se realmente estivermos falando sobre algum tipo de vulnerabilidade em nossos aplicativos ou protocolo.
Decidi escrever para o próprio suporte sobre os "detalhes" das vulnerabilidades, aplicando o vídeo, o próprio script e as soluções para o problema (abaixo está a minha mensagem), mas até agora não recebi resposta, nem por correio nem pelo próprio suporte. Aparentemente, até agora, isso não os incomoda.
Melhor vamos fazer uma animação de emojis únicos.Além da opção com mensagens autodestrutivas, também notei que qualquer mensagem excluída, por exemplo, em um bate-papo particular, grupo ou canal, também é fácil de interceptar. Isso é feito usando o
encaminhamento usual de todas as mensagens , por exemplo, em um grupo separado e depois de obtê-las
usando o ID da mensagem excluída (agora as bibliotecas têm manipuladores).
Também descrevi todo o processo em minha carta (embora de fato seja simples), com uma solução para o problema na forma de limitar o encaminhamento das próprias mensagens. E se você não limitar completamente, proíba o encaminhamento constante de todas as mensagens. Eu acho que a equipe de desenvolvimento será capaz de fazer alguns anti-flood a partir de agora.
E com os autodestrutivos, exclua-os do servidor. Isso não resolverá o problema; as mensagens ainda podem ser interceptadas exatamente no momento em que são recebidas. Para uma eliminação completa, todo o algoritmo para lê-los deve ser reformulado. Por exemplo, para criar uma chave de acesso para cada mensagem e, ao usar essa tecla, a imagem / vídeo estará disponível apenas por um certo tempo. Agora é difícil criar todo o algoritmo para a equipe de desenvolvimento, admito, eu mesmo não sou capaz de pensar em todos os aspectos e, de qualquer forma, há uma maneira de interceptá-los. Mas, no momento, eles são implementados de maneira terrível, o (s) desenvolvedor (es) envolvido (s) nessa função devem ser mais responsáveis pelo desenvolvimento desse tipo de função. Bem, ou em casos extremos, basta escrever, em vermelho e em negrito, que as mensagens autodestrutivas são fáceis de interceptar e isso não passa de um brinquedo.
Vou falar sobre você, um estudante de 15 anos, recentemente apaixonado por desenvolver em Python, se interessou pela API do usuário e encontrou esse tipo de "falha / vulnerabilidade". Quanto mais me enfureceu e me forçou a escrever tudo isso aqui - uma péssima implementação do suporte do Telegram, que simplesmente me ignorou três vezes em quatro meses.
Para alguns, essa função não será útil, não encontrará nada de ruim na má implementação dessas mensagens, mas acho que, como o próprio Telegram não está interessado em melhorar as funções atuais, será útil que outros apenas levem isso em consideração.
Estou escrevendo artigos pela primeira vez, posso deixar erros em algum lugar, mas espero que eles me corrijam nos comentários, indicando. Ou, em geral, eles me dizem que tudo está errado e ignorar o suporte foi uma boa solução e finalmente vou me acalmar. Também anexo minha mensagem:
Mensagem de suporte para a qual nenhuma resposta foi recebidaOlá, meu nome é Khamidov Amal.
Recentemente, escrevi uma experiência de usuário para o meu projeto. Em algum momento, notei como meu amigo me enviou uma foto com remoção automática. Eu olhei para ele no meu cliente Android e ele foi removido como deveria ser após 10 segundos.
Mas me perguntei como essas mensagens são criptografadas e como são armazenadas em qualquer lugar. Afinal, acontece que o cliente de telegrama primeiro carrega a foto no telefone e, após a leitura, deve removê-la.
Escrevi um pequeno script python usando a biblioteca Pyrogram e queria ver como eles chegavam ao cliente.
Fiquei surpreso quando vi que essas "fotos com exclusão automática" se parecem com fotos comuns (o que?).
Ou seja, se eu mandasse uma foto comum, não era diferente da "auto-depreciativa".
Depois disso, escrevi um script que envia essa foto no arquivo e, naquele momento, a foto foi para o meu canal de teste como uma foto normal. E no telefone do qual enviei a foto mais "auto-extraível", ela nem foi lida.
Também me permitiu ver a foto no meu cliente de desktop. Ou seja, esse script ignora a essência mais importante da foto "Extração automática".
Considero uma vulnerabilidade e uma solução para reconsiderar o método de envio de mensagens de "exclusão automática" e processá-las no servidor e não no dispositivo.
Além disso, encontrei o segundo (quase uma vulnerabilidade), que foi criado usando o próprio telegrama da API e não é proibido.
Então, estamos falando de mensagens comuns.
Também escrevi um script regular que envia (encaminha) todas as mensagens do bate-papo para o meu grupo e as marca por seu ID.
Eu adicionei um manipulador a esse script que responde a todas as mensagens excluídas e fornece o ID dessas mensagens excluídas (hello pyrogram).
Depois disso, adicionei um script e agora, quando o manipulador responde a todas as mensagens excluídas, ele as verifica com as mensagens do grupo (que contém todas as mensagens) e procura essa mensagem por ID.
Por um lado, isso não viola nada, porque os telegramas têm um código aberto, todos podem escrever seus userbots. mas, por outro lado (o russo é bom), na última atualização, você adicionou a função de excluir as suas próprias mensagens e as de outras pessoas por questões de segurança, mas scripts simples escritos por um estudante de 15 anos parecem ignorar isso. muita segurança.
Entendo que todo mundo responde em resposta ao que ele envia, mas uma pessoa pode enviar arquivos importantes a uma pessoa desnecessária por engano e, nesse momento, ele exclui a mensagem (enquanto o interlocutor não leu) sem saber que todas essas mensagens podem ser comprometidas e o mais importante, que as mensagens não são marcadas como lidas.
A decisão, eu acho, é adicionar limites ao encaminhamento de mensagens e revisar a maneira de "ler" as mensagens.
No segundo vídeo anexado, como posso salvar todas as mensagens excluídas sem lê-las.
Anexo o vídeo e o script que escrevi para mostrar claramente como ele funciona.
E como fica no código (usado na biblioteca Telethon, no Pyrogram é quase o mesmo):
A parte mais importante do código. O resto é apenas uma indicação da conta, número de telefone etc.@client.on(events.NewMessage(func=lambda e: e.is_private and getattr(e, 'photo'))) async def handler(event: message.Message): # event.input_chat may be None, use event.get_input_chat() chat: InputPeerUser = await event.get_input_chat() sender: User = await event.get_sender() photo: Photo = event.photo await client.send_message(img_channel, file=MessageMediaPhoto(photo), message=f'<code>{chat.user_id}</code>\n' f'<code>{sender.first_name}</code>\n', parse_mode='HTML')