Un chercheur en sécurité a révélé une faille dans Telegram Desktop qui permettait à un lien conçu pour cela de lire des fichiers sur le disque de la victime et de les envoyer directement à un attaquant, les fichiers de session de la victime figurant parmi les cibles possibles. Selon le rapport publié par BeakSec, aucune demande de confirmation ni vérification d'autorisation ne s'interposait entre le lien et le fichier.
Cette chaîne est préoccupante car elle commence par un geste anodin : quelqu'un vous ajoute à un groupe Telegram et un lien apparaît dans la discussion. Il suffit de cliquer. Telegram Desktop transmet alors ce lien à l'instance déjà en cours sur votre machine, et c'est dans ce transfert que réside le problème — un caractère séparateur qui n'est jamais échappé.
Comment fonctionnait la faille de Telegram Desktop
Les systèmes d'exploitation permettent aux applications d'enregistrer leurs propres schémas d'URI, de sorte qu'un lien tg:// lance Telegram. Si l'application est déjà ouverte, le système démarre tout de même un second processus, qui se connecte à une socket locale, transmet le lien à l'instance en cours sous forme de texte brut, puis se termine. Les données structurées qui traversent une socket doivent être aplaties, et le format de Telegram est simple : un mot-clé, son argument, et un point-virgule pour clore chaque instruction.
Le défaut est que le point-virgule n'est jamais échappé dans le lien transmis. Un lien contenant son propre point-virgule arrive donc à l'instance en cours scindé en deux instructions au lieu d'une. Une commande inoffensive d'un côté ; de l'autre, OPEN:, qui accepte n'importe quelle URL sans filtrer son schéma.
Cela mène à interpret:, un schéma interne de Telegram enregistré nulle part dans le système d'exploitation. Il existe pour permettre à l'application de lire un petit fichier d'instruction indiquant une discussion de destination et un fichier à envoyer. Accessible via la commande OPEN: injectée, il transformait un lien cliqué en moyen de lire un fichier et de l'expédier dans une discussion.



