Contexte de la faille

Telegram Desktop, l’application multiplateforme de messagerie, propose depuis la version 4.15.1 (mars 2024) d’exporter des conversations au format HTML. L’export sépare les discussions en fichiers de 1 000 messages chacun. Jusqu’à la version 6.9.3, le code d’export n’échappait pas le texte des boutons d’un clavier inline, alors que le texte des messages, des noms d’expéditeurs et d’autres champs était correctement échappé.

Mécanisme d’injection et d’exécution

Un bot peut placer une balise <script> dans le texte d’un bouton, masquée par des caractères invisibles afin que le bouton apparaisse vide dans l’interface de Telegram Desktop. Lorsqu’un utilisateur exporte la conversation contenant ce bouton, le texte du bouton est injecté tel quel dans le fichier HTML. Le script s’exécute automatiquement dès l’ouverture du fichier dans un navigateur avec JavaScript activé, sans interaction supplémentaire.

html += "" + button.text + "";

Le script récupère alors le contenu complet du fichier : chaque message, les noms d’expéditeurs, les horodatages, le nom du chat, le type, le nombre de membres et le chemin local du fichier. Ces données sont ensuite envoyées à un serveur contrôlé par l’attaquant via une requête HTTP.

Impact et limites

Le score CVSS attribué par les chercheurs est de 8.2/10 (CVSS 3.1). La portée de l’exfiltration se limite au fichier HTML ouvert, car chaque export ne contient qu’un maximum de 1 000 messages. Le script ne modifie pas la copie du chat stockée par Telegram ni le fichier exporté sur le disque ; il ne peut altérer que la représentation affichée dans le navigateur. En outre, le vecteur d’attaque nécessite trois conditions : un export réalisé avec une version antérieure à la correction, la présence du message malveillant dans l’export, et l’ouverture du fichier avec JavaScript activé.

Mesures correctives

Telegram a intégré la correction dans le commit 8457d13a, publié le 30 juin 2026, et diffusé dans la version bêta 6.9.4 (3 juillet 2026) puis la version stable 7.0.1 (14 juillet 2026). La mise à jour ajoute l’échappement du texte des boutons inline. Les utilisateurs doivent mettre à jour leur client vers 7.0.1 ou 6.9.4 (bêta) et, après mise à jour, ré‑exporter les conversations précédemment exportées ou ouvrir les anciens fichiers avec JavaScript désactivé. Aucun identifiant CVE n’a été attribué et aucune note officielle n’a été publiée par Telegram ou le NVD.