Pourquoi les photos / vidéos autodestructrices sur Telegram ne sont pas sûres

image

Plus récemment, j'ai vu un article qui parlait de l'introduction de messages auto-destructeurs dans le messager WhatsApp . Il aura des fonctionnalités similaires à Telegram, mais si dans le messager de Durov la suppression s'applique aux messages ordinaires (chats secrets), ils peuvent également être utilisés sur des photos dans des chats réguliers. Autrement dit, après avoir envoyé supposer la photo, l'interlocuteur sera en mesure de la visualiser pendant une durée limitée, et après, en théorie, elle sera supprimée des deux interlocuteurs (de préférence du serveur également), puis WhatsApp prévoit d'introduire la suppression des messages réguliers (et jusqu'à présent, cela a été fait) .

Mais aujourd'hui, nous ne parlons pas de WhatsApp (parce que je ne l'utilise pas du tout), mais de Telegram. L'idée même de messages autodestructeurs n'est guère en demande, mais il y a ces utilisateurs qui les utilisent, par exemple, pour envoyer des documents ou des photos qui ne peuvent être vus qu'une seule fois (ahem).

Pour ceux qui sont trop paresseux pour lire, les messages autodestructeurs sur Telegram ne sont ni sûrs ni confidentiels. Ne pensez pas que si vous envoyez un document important à quelqu'un à qui vous parlez de cette manière, il ne pourra pas le sauvegarder (et je ne parle pas d'une capture d'écran rapide ou de photographies d'écrans de téléphone, Dieu nous en préserve) - utilisez des chats secrets pour cela. Et pour ceux qui sont intéressés par la mise en œuvre même de ces messages, vous pouvez continuer à lire.

Je les ai aussi utilisés, mais pas souvent et plutôt ils n'étaient que du "divertissement" et je ne les regardais pas spécialement. Au mois de juin de cette année, lors de mes recherches sur le télégramme UserAPI , j'ai testé l'envoi et la réception de photos. Je me suis amusé, pas plus. Et un intérêt est apparu dans l'affichage de la «vue» de l'envoi des messages, et comment ils sont généralement affichés dans la réponse. Je me demandais comment cette fonction est implémentée «de l'intérieur», si les fichiers sont supprimés du serveur Telegram ou peuvent-ils être cryptés d'une manière ou d'une autre.

Et à ma grande surprise, ces messages ne sont pratiquement pas différents des messages habituels. Tout droit. Ils ont le même id_fichier que les photos ordinaires, avec lesquelles vous pouvez obtenir le fichier lui-même. Et même si vous avez regardé le message et qu'il a disparu dans le chat, vous pouvez l'enregistrer / envoyer / transférer en toute sécurité et faire la même chose que vous pourriez faire avec des photos / vidéos ordinaires. Autrement dit, il n'est pas supprimé du serveur Telegram lui-même.

Je le répète, ces messages ne s'appliquent pas aux chats secrets, où la correspondance est sur deux appareils, et à partir d'un autre client, je ne peux pas y accéder. Cette fonctionnalité est conçue pour les chats réguliers et semble être considérée comme "sûre". Mais ici, c'est intéressant, je n'ai trouvé nulle part une description détaillée de ces messages autodestructeurs. Autrement dit, Telegram ne semble pas nous dire que ces messages sont si sûrs en termes d'accès (si vous avez accès au compte lui-même) comme par exemple les mêmes chats secrets. La seule chose que j'ai vue, c'est que Telegram lui-même a dit qu'aucun message, même les conversations secrètes, n'ont une sécurité à 100% et que tout le monde est responsable des messages qu'il envoie, mais ...
J'avoue qu'il serait implémenté dans certains WhatsApp / Viber / VK, je n'y ferais même pas attention, mais Telegram est un messager très pratique que j'aime vraiment, mais ce que je déteste, c'est son soutien rempli de bénévoles.

Au cours du même mois de juin, j'ai écrit à support@telegram.org, où j'ai écrit une lettre entière en deux langues. Il a dit non seulement sur les messages autodestructeurs, mais aussi sur les messages ordinaires et que Telegram ne fixe aucune limite au transfert, mais plus à ce sujet plus tard.

Deux mois plus tard, ils ne m'ont pas répondu, j'ai donc dû écrire au télégramme très «support» pour expliquer quoi faire et où écrire lorsque je découvrais ce type de «vulnérabilité».

Là, ils m'ont étonnamment répondu trois heures plus tard, où ils m'ont dit que vous devriez écrire sur les vulnérabilités graves du protocole à security@telegram.org ou partager les détails ici. Je joins le texte de réponse original du support:

5 juillet, réponse du support
Salut Vous pouvez partager les détails ici ou écrire à security@telegram.org si nous parlons vraiment d'une sorte de vulnérabilité dans nos applications ou notre protocole.

J'ai décidé d'écrire au support lui-même sur les «détails» des vulnérabilités, en appliquant la vidéo, le script lui-même et les solutions au problème (voici mon message ci-dessous), mais jusqu'à présent, je n'ai reçu aucune réponse, ni par mail, ni par le support lui-même. Apparemment jusqu'à présent, cela ne les dérange pas. Mieux vaut faire une animation d'emojis simples.

En plus de l'option avec des messages auto-destructeurs, j'ai également remarqué que tout message qui a été supprimé, par exemple, dans un chat privé, un groupe, un canal, est également facile à intercepter. Cela se fait en utilisant le transfert habituel de tous les messages , par exemple, dans un groupe distinct, et après les avoir obtenus en utilisant l'ID du message supprimé (maintenant les bibliothèques ont des gestionnaires sur eux).

J'ai également décrit l'ensemble du processus dans ma lettre (bien qu'en fait il soit simple), avec une solution au problème sous la forme d'une limitation des retransmissions des messages eux-mêmes. Et si vous ne limitez pas complètement, interdisez le transfert constant de tous les messages. Je pense que l'équipe de développement sera en mesure de faire de l'anti-flood à partir de l'avant.

Et avec ceux qui s'autodétruisent, supprimez-les simplement du serveur. Cela ne résoudra pas le problème, les messages peuvent toujours être interceptés exactement au moment où ils sont reçus. Pour une élimination complète, l'algorithme complet de leur lecture doit être retravaillé. Par exemple, pour créer une clé d'accès à chaque message et lorsque vous utilisez cette clé, l'image / la vidéo ne sera disponible que pendant un certain temps. J'ai du mal à trouver l'algorithme complet pour l'équipe de développement, je l'avoue, je ne suis pas moi-même capable de réfléchir à tous les aspects et en tout cas, il y a un moyen de les intercepter. Mais pour le moment, elles sont implémentées de manière horrible, le ou les développeurs qui étaient engagés dans cette fonction devraient être plus responsables du développement de ce type de fonction. Eh bien, ou dans des cas extrêmes, écrivez simplement, en lettres rouges et en gras, que les messages autodestructeurs sont faciles à intercepter et ce n'est rien de plus qu'un jouet.

Je vais vous parler de moi-même, un étudiant de 15 ans, récemment amateur de développement en Python, qui a essayé l'API utilisateur et a trouvé ce genre de "faille / vulnérabilité". Plus cela m'a rendu furieux et m'a forcé à écrire tout cela ici - une implémentation terrible du support Telegram, qui m'a simplement ignoré trois fois en 4 mois.

Pour certains, cette fonction ne sera pas utile, elle ne trouvera rien de mal dans la mauvaise mise en œuvre de tels messages, mais je pense que puisque Telegram lui-même n'est pas intéressé à améliorer les fonctions actuelles, il sera utile pour d'autres de simplement en tenir compte.

J'écris des articles pour la première fois, je pourrais laisser des erreurs quelque part, mais j'espère qu'ils me corrigeront dans les commentaires, en indiquant. Ou, en général, ils me diront que tout va mal et ignorer le soutien était une bonne solution et je vais enfin me calmer. Je joins également mon message:

Message d'assistance pour lequel aucune réponse n'a été reçue
Bonjour, je m'appelle Khamidov Amal.

Récemment, j'ai écrit une expérience utilisateur pour mon projet. À un moment donné, j'ai remarqué comment mon ami m'a envoyé une photo à retrait automatique. Je l'ai regardé sur mon client Android et il a été supprimé comme il se doit après 10 secondes.

Mais je me demandais comment ces messages étaient cryptés et comment ils étaient stockés en déplacement. Après tout, il s'avère que le client du télégramme télécharge d'abord la photo sur le téléphone, et après la lecture, il doit la supprimer.

J'ai écrit un petit script python en utilisant la bibliothèque Pyrogram et je voulais voir comment ils étaient arrivés au client.

J'ai été surpris quand j'ai vu que ces "photos à suppression automatique" ressemblaient à des photos ordinaires (quoi?).
C'est-à-dire que si j'envoyais une photo ordinaire, ce n'était pas différent de "l'auto-dépréciation".
Après cela, j'ai écrit un script qui envoie cette photo sur le fichier, et à ce moment, la photo est allée sur ma chaîne de test comme une photo normale. Et sur le téléphone à partir duquel j'ai envoyé cette photo la plus "auto-extractible", elle n'a même pas été lue.

Cela m'a également permis de voir la photo sur mon client de bureau. Autrement dit, ce script contourne l'essence la plus importante de la photo "auto-extractible".

Je le considère comme une vulnérabilité, et je le considère comme une solution pour reconsidérer la méthode d'envoi de messages "à suppression automatique" et les traiter sur le serveur et non sur l'appareil.

De plus, j'ai trouvé le deuxième (presque une vulnérabilité), qui a été créé en utilisant le télégramme de l'API lui-même et n'est pas du tout interdit.

Donc, nous parlons de messages ordinaires.

J'ai également écrit un script régulier qui envoie (transfère) tous les messages du chat à mon groupe et les marque par leur ID.

J'ai ajouté un gestionnaire à ce script qui répond à tous les messages supprimés et donne l'ID de ces messages supprimés (bonjour pyrogramme).

Après cela, j'ai ajouté un script et maintenant, lorsque le gestionnaire répond à tous les messages supprimés, il les vérifie avec les messages du groupe (qui contient tous les messages) et recherche ce message par ID.

D'une part, cela ne viole rien, car les télégrammes ont un code ouvert, tout le monde peut écrire ses userbots. mais d'un autre côté (le russe est bon), dans la dernière mise à jour, vous avez ajouté la fonction de suppression de vos propres messages et ceux des autres pour des raisons de sécurité, mais de tels scripts simples écrits par un écolier de 15 ans semblent contourner cette très sécurité.

Je comprends que tout le monde répond en réponse qu'il envoie, mais une personne peut envoyer des fichiers importants à une personne inutile par erreur et à ce moment il supprimera le message (alors que l'interlocuteur n'a pas lu) sans savoir que tous ces messages peuvent être compromis et surtout, que les messages ne sont pas marqués comme lus.

La décision, je pense, est d'ajouter des limites aux messages à transmettre et de revoir la façon de «lire» les messages.

Dans la deuxième vidéo, j'ai joint comment puis-je enregistrer tous les messages supprimés sans les lire.
Je joins la vidéo et le script que j'ai écrits pour montrer clairement comment cela fonctionne.


Et à quoi cela ressemble dans le code (utilisé la bibliothèque du Téléthon, sur Pyrogram c'est presque la même chose):

La partie la plus importante du code. Le reste n'est qu'une indication du compte, du numéro de téléphone, 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') 

Source: https://habr.com/ru/post/fr470225/


All Articles