Luka w Telegram Desktop naraża eksporty czatów HTML na kradzież danych - Security Bez Tabu

Luka w Telegram Desktop naraża eksporty czatów HTML na kradzież danych

Cybersecurity news

Wprowadzenie do problemu / definicja

W Telegram Desktop wykryto podatność typu stored cross-site scripting, która nie uruchamia się bezpośrednio w aplikacji, lecz dopiero po wyeksportowaniu rozmowy do formatu HTML i otwarciu jej w przeglądarce. W praktyce oznacza to, że archiwum czatu może stać się nośnikiem aktywnego kodu JavaScript zdolnego do wycieku danych, manipulacji treścią oraz fałszowania widoku zapisanej konwersacji.

W skrócie

  • Podatność dotyczyła funkcji eksportu czatów do HTML w Telegram Desktop.
  • Złośliwy kod mógł zostać osadzony w treści przycisku inline keyboard generowanego przez bota.
  • Ładunek nie wykonywał się w samym Telegramie, lecz pozostawał uśpiony do momentu otwarcia eksportu HTML w przeglądarce.
  • Problem naprawiono w nowszych wersjach klienta, ale stare eksporty utworzone podatnymi wersjami nadal mogą być niebezpieczne.

Kontekst / historia

Badacze bezpieczeństwa Denis i Aleksander Rostilov opisali ten przypadek jako naruszenie granicy zaufania między komunikatorem a mechanizmem eksportu danych. Źródłem problemu nie był moduł wyświetlania wiadomości w aplikacji, ale logika odpowiedzialna za tworzenie archiwów HTML.

Według opisu podatny kod miał trafić do produktu w lutym 2024 roku, a następnie do stabilnego wydania Telegram Desktop 4.15.1 w marcu 2024 roku. Zgłoszenie do producenta nastąpiło 3 czerwca 2026 roku, a poprawka została wdrożona w czerwcu 2026 roku. Pierwszą wersją beta zawierającą naprawę było wydanie 6.9.4, natomiast pierwszą stabilną wersją z poprawką była 7.0.1, opublikowana 14 lipca 2026 roku.

Analiza techniczna

Sedno podatności polegało na nieprawidłowym przetwarzaniu tekstu przycisków inline keyboard podczas generowania eksportu HTML. Wrażliwe pole nie było odpowiednio escapowane przed zapisaniem do dokumentu, przez co znaczniki HTML i osadzony JavaScript mogły zostać zinterpretowane przez przeglądarkę jako aktywna zawartość strony.

Badacze wskazali, że w kodzie eksportera nie zastosowano funkcji sanitizacji używanej dla innych pól, takich jak treść wiadomości czy nazwy nadawców. To otworzyło drogę do wstrzyknięcia kodu przez tekst przycisku bota. Co istotne, bot nie musiał być członkiem docelowej grupy. Wystarczyło przygotować odpowiednio spreparowaną wiadomość, a następnie doprowadzić do jej przekazania do innego czatu.

Scenariusz ataku był dwuetapowy. Najpierw dochodziło do trwałego osadzenia ładunku w historii rozmowy, a następnie do jego aktywacji poza Telegramem, już w środowisku przeglądarki. To utrudniało wykrycie zagrożenia, ponieważ standardowe monitorowanie pracy komunikatora mogło nie wskazać żadnych anomalii.

Dodatkowo opisano drugi problem związany z możliwością wstrzyknięcia zawartości do obsługi zdarzenia JavaScript typu onclick. Oznacza to, że poprawka objęła nie tylko jedno miejsce w kodzie, ale szersze uszczelnienie procesu generowania interaktywnych elementów w eksporcie.

Konsekwencje / ryzyko

Skutki praktyczne mogą być poważne, szczególnie dla organizacji wykorzystujących Telegram do archiwizacji komunikacji operacyjnej, projektowej lub dowodowej. Złośliwy skrypt uruchomiony w eksporcie HTML mógł odczytywać wiadomości, nazwy nadawców, znaczniki czasu oraz inne metadane obecne na stronie i przesyłać je do atakującego.

Ryzyko nie kończy się na exfiltracji danych. Taki kod mógł również dynamicznie modyfikować wygląd eksportu, podmieniać treść rozmowy, znaczniki czasu lub nazwy użytkowników, a nawet wyświetlać fałszywe komunikaty przypominające oficjalny interfejs Telegrama. To stanowi realne zagrożenie dla audytu, analiz powłamaniowych, zgodności oraz postępowań wewnętrznych.

Szczególnie niebezpieczny jest aspekt trwałości. Nawet po aktualizacji klienta stare pliki HTML wygenerowane podatnymi wersjami nie są automatycznie oczyszczane. Jeżeli złośliwa zawartość została już zapisana do archiwum, pozostaje aktywna przy każdym późniejszym otwarciu pliku.

Rekomendacje

Podstawowym działaniem jest aktualizacja Telegram Desktop do wersji zawierającej poprawkę. Sama aktualizacja nie eliminuje jednak zagrożenia związanego z wcześniej utworzonymi archiwami, dlatego organizacje powinny przeprowadzić przegląd istniejących eksportów HTML wygenerowanych przed 14 lipca 2026 roku lub przy użyciu podatnych wersji klienta.

  • Traktować stare eksporty HTML z Telegram Desktop jako dane nieufne.
  • Ponownie wygenerować archiwa po aktualizacji klienta.
  • Otwierać historyczne eksporty wyłącznie w środowisku odizolowanym, najlepiej w sandboxie lub maszynie wirtualnej.
  • Skanować eksporty pod kątem znaczników script, nietypowych atrybutów HTML oraz podejrzanych elementów interaktywnych.
  • Ograniczyć stosowanie formatu HTML tam, gdzie wystarczą formaty mniej podatne na aktywną zawartość.
  • Uwzględnić to ryzyko w procedurach eDiscovery, compliance i analizy incydentów.

Podsumowanie

Luka w Telegram Desktop nie polegała na klasycznym przejęciu sesji w komunikatorze, lecz na błędzie w mechanizmie eksportu czatów do HTML. W efekcie archiwum rozmowy mogło zostać przekształcone w wektor kradzieży danych i manipulacji treścią. Choć producent usunął problem w nowszych wersjach klienta, historyczne eksporty nadal wymagają ostrożności i ponownej oceny zaufania.

Źródła

  1. Security Affairs — https://securityaffairs.com/199076/security/telegram-desktop-flaw-could-turn-old-chat-exports-into-data-theft-traps.html
  2. ExPatch report on Telegram Desktop stored XSS — https://expatch.com
  3. Telegram Desktop source repository — https://github.com/telegramdesktop/tdesktop