Divulgation de numéro de téléphone et géolocalisation par vulnérabilité dans Telegram

image

Récemment, Telegram a de plus en plus discuté du sujet de la percée des personnes et de la fuite de données personnelles. Je me demandais à quel point l'écosystème Telegram lui-même résiste à de telles fuites.

Sous la coupe se trouve l'histoire de la façon dont j'ai trouvé un bug dans Telegram. Le bogue vous permet d'induire l'utilisateur en erreur et de le pousser à partager sans le savoir ses données - géolocalisation et numéro de téléphone.

Voici comment ça fonctionne:


La complexité du système a toujours été un ennemi de la sécurité.

Telegram a grandi, a cessé d'être un simple messager et est devenu une grande plate-forme multimédia dotée de fonctionnalités riches. L'API Telegram Bot se démarque comme une maison séparée, vous permettant de créer des applications entières à l'intérieur du messager - les soi-disant bots.

Très probablement, tous ceux qui ont essayé de créer leur propre bot savent déjà que l'utilisateur peut recevoir une demande pour son numéro de téléphone à l'aide d'un bouton spécial.

Le texte de ce bouton peut être défini sur n'importe lequel. De plus, le bot peut utiliser les mêmes boutons pour d'autres interactions:

image

Après avoir cliqué sur le bouton, l'utilisateur recevra bien sûr un avertissement que son contact sera désormais envoyé au bot:

image

Ce message parle assez clairement du risque de désanonymisation et avertit l'utilisateur réfléchi des actions dangereuses pour lui.

En parcourant les mises à jour de l'API, je me suis souvenu qu'à un moment donné, Telegram avait donné aux utilisateurs la possibilité de faire leur propre localisation du messager. Il y avait des exemples où la localisation était utilisée pour des modifications comiques de l'interface. À ce moment-là, la même pensée m'est venue que vous pourriez maintenant:

Mais que faire si vous essayez de "traduire comiquement" une boîte de dialogue avertissant l'utilisateur de transférer le numéro de téléphone au bot, en remplaçant son texte?

image image

Au début, je pensais qu'obtenir un utilisateur pour installer une localisation de fichier xml étrangère dans l'application serait beaucoup plus difficile que de simplement convaincre de cliquer sur Partager le contact. En effet, tout comme cela, à l'aide d'un fichier xml, Telegram a proposé de répartir ses localisations entre interlocuteurs.

J'ai donc pensé, jusqu'à ce que je tombe sur le gestionnaire de liens setlanguage dans le code source de l'application Android .

image

Exactement ce qui est nécessaire!

Il s'est avéré que Telegram avait depuis longtemps créé une plate-forme de traduction, translations.telegram.org, accessible à tous les utilisateurs de Telegram, et maintenant vous n'avez plus besoin de transférer de fichiers xml.

image

Cliquez simplement sur le lien t.me/setlanguage/%lang%, après quoi l'utilisateur verra une boîte de dialogue vous demandant d'installer une nouvelle langue. Et cette fenêtre est beaucoup moins intimidante qu'un message sur une demande de numéro de téléphone:

image

Comment ça fonctionne?


Inscrivez-vous sur translations.telegram.org .

Ajoutez votre langue, traduisez les éléments d'interface nécessaires et quelques autres .

Dans la localisation, vous pouvez écrire tout ce que vous voulez. Nous écrirons un texte inoffensif au lieu d'un avertissement terrible sur le partage de la géolocalisation et du numéro de téléphone. Nous faisons de même pour les autres plateformes.

Notre langage empoisonné est prêt. Reste à le glisser à l'utilisateur.

image

Je ne pouvais toujours pas trouver un moyen de savoir si l'utilisateur avait installé la localisation qui lui était proposée. Il n'y avait pas de statistiques linguistiques sur translations.telegram.org, ni de changements dans le profil utilisateur. L'API Bot vous permet de découvrir la langue de l'utilisateur via le paramètre language_code, mais sa valeur est tirée des paramètres système. La modification de la langue dans l'application n'affecte pas le paramètre.

Eh bien, ajoutez simplement un peu de retard après le message avec un lien vers la langue. Après avoir choisi une langue, nous suggérons à l'utilisateur de se familiariser avec le menu du bot. Lorsque vous cliquez sur OK dans cette boîte de dialogue, le nombre fuit vers le bot avec un message et le bot supprime ce message immédiatement. Si le bot utilise le webhook pour recevoir des mises à jour, le message est supprimé plus rapidement et l'utilisateur peut ne pas comprendre qu'il vient d'envoyer son contact.

Soit dit en passant, de la même manière qu'une demande de contact, un bot peut demander à un utilisateur de partager sa géolocalisation. Oui, et cette boîte de dialogue peut également être «traduite».

Comment réparer


De toute évidence, vous ne devez pas permettre aux utilisateurs de traduire absolument l'intégralité de l'interface sans modération. Par ailleurs, la modération de la traduction est activée, par exemple, pour cette boîte de dialogue translations.telegram.org/rutech/ios/unsorted/AuthCode.Alert . Le besoin de modération nous est signalé par le label Critique.

image

Il s'avère qu'une aussi petite omission que l'absence d'étiquette critique pour les dialogues sur le partage des numéros et la géolocalisation conduit à une fuite. Une fuite de données très sensibles, comme pour un messager construisant son marketing autour de la confidentialité / sécurité.

Un messager lié à votre numéro de téléphone personnel, par définition, ne peut pas être privé. Cela ne peut qu'augmenter le coût de la révélation de votre identité.

Cette vulnérabilité est tombée dans le programme de télégramme bug bounty et a été évaluée à 100 €.

PS

Venez nous voir au Telegram chat @secinfosec . Nous y partageons notre expérience et discutons de tout ce qui concerne la sécurité de l'information: un bug de prime, des pentests, une sécurité papier et pratique, de nouvelles menaces et de nouvelles méthodes pour y faire face.

All Articles