Przejdź do treści

Czy Telegram jest bezpieczny? Jedno kliknięcie wystarczało do kradzieży konta

Rejestr pomiarowy podatności CVE-2026-107181: karta folderu tdata z plikami sesji Telegram Desktop i miarą 7.2.9 pierwsza wersja z poprawką, pieczątka jeden klik całe konto oraz trzy karty łańcucha ataku: fałszywy link, gniazdo IPC, skradziona sesja

Bezpiecznik ukrywający się pod pseudonimem beaksec opisał trzeciego października łańcuch ataków na Telegram Desktop, aplikację Telegrama na komputery. Jeden klik w zwykły link wystarczał, żeby odczytać dowolny plik z dysku ofiary i wysłać go na kanał napastnika, łącznie z plikami sesji, czyli czymś, co otwiera czyjeś konto bez hasła i bez telefonu. Siódmego października podatność dostała numer CVE-2026-107181 i ocenę 8,1 z 10 w skali CVSS, a dziesiątego dotarła na pierwsze strony Hacker News.

Naprawa istnieje od siedemnastego września, więc aktualna aplikacja jest czysta. Robi się jednak gorąco z dwóch powodów. Pierwszy: Telegram wpuścił poprawkę bez żadnego ogłoszenia, wpis zmian 7.2.9 mówi tylko o renderowaniu animacji, a pliki sesji nadal leżą na dysku w przewidywalnym miejscu. Drugi: cały łańcuch zbudował się na domyślnych ustawieniach, które większość ludzi ma niezmienione od instalacji. Po tym tekście będzie pięć rzeczy do przeklikania, zmieszczą się w pięć minut.

Spis treści

Na czym polegała podatność

Cała siła tego ataku siedzi w mechanizmie przekazywania linków. Kiedy klikasz link tg://, system uruchamia Telegram i przekazuje mu adres. Jeśli aplikacja już działa, drugi proces nie otwiera nowego okna, tylko przekazuje adres działającej instancji przez lokalne gniazdo sieciowe, jako zwykły tekst. Każda instrukcja kończy się tam średnikiem, a Telegram nie escapował tego znaku w przekazywanych danych. Podrzucony link ze średnikiem w środku trafia więc do aplikacji nie jako jedna instrukcja, tylko jako dwie.

To jednak dopiero połowa układanki. Druga to to, co dało się wstrzyknąć. W kodzie Telegrama siedział wewnętrzny schemat interpret:, którego system operacyjny nie znał, bo istniał tylko wewnątrz aplikacji. Jego przeznaczenie było przyziemne: skrypt publikacyjny samego Telegrama używał go do wrzucania nowych wydań na kanał ogłoszeniowy, razem z opisem zmian. Pisał mały plik tekstowy z trzema linijkami: kanał docelowy, plik do wysłania i podpis, a potem kazał aplikacji ten plik zinterpretować. Funkcja o nazwie InterpretSendPath czytała instrukcję i wysyłała plik z dysku na kanał podany w treści, bez pytania o potwierdzenie i bez sprawdzania, kto w ogóle prosi.

Każdy, kto połączył te dwie rzeczy, dostawał narzędzie do odczytu dowolnego pliku z dysku ofiary. Wstrzyknięta komenda mówiła Telegramowi: weź plik z tej ścieżki, wyślij na mój kanał. Autor raportu testował na Windows, więc ta platforma pozostaje jedyną potwierdzoną. Wstrzyknięcie przez nieescapowany separator to stara szkoła błędów komunikacji między procesami, ale rzadko dostaje się je tak dobrze udokumentowane: pełny łańcuch, test na konkretnej wersji (6.9.3), odtworzona kradzież od kliknięcia po upload. Ten sam wzorzec, co przy Muse: lokalna funkcja, zdalny zapalnik.

Jak wyglądał atak krok po kroku

Napastnik dodawał ofiarę do grupy. Domyślne ustawienia Telegrama pozwalają każdemu dodawać obcych do grup, bez pytania dodawanego, i to jest pierwszy darmowy element układanki. Do grupy wrzucał trzy pliki tekstowe z instrukcjami, po jednej na każdy plik do ukradzenia. Telegram w konfiguracji domyślnej pobiera pliki z grup automatycznie, do rozmiaru 8 MB, i zapisuje je w stałym miejscu: podfolder „Telegram Desktop” w katalogu Pobrane. Ofiara niczego nie klika, pliki lądują na dysku same.

Potem przychodziło zaproszenie do kliknięcia: zwyczajny adres https, na który serwer napastnika odpowiadał przekierowaniem 302 do spreparowanego adresu tg://. Tu jest smaczek: link kliknięty wewnątrz czatu Telegram obsługuje własnymi siłami i nigdy nie dociera do gniazda, więc atak musiał startować z przeglądarki. Klik poza aplikacją uruchamiał drugi proces Telegrama, ten przekazywał adres przez gniazdo, średniki rozbijały go na trzy komendy i trzy pliki z katalogu ofiary wylatywały na kanał napastnika. Żadnego okienka z pytaniem „czy na pewno”.

Ścieżki w instrukcjach były względne, w stylu trzy razy katalog wyżej, potem Pobrane, więc napastnik nie musiał znać nazwy użytkownika ofiary. Wszystko działo się w tle, w sekundę, na ustawieniach fabrycznych.

Co dokładnie dostawał atakujący

Odpowiedź brzmiała: wszystko, co leżało na dysku. Raport skupia się na sesji Telegrama, bo to nagroda największa, ale ten sam mechanizm wyciągał klucze prywatne SSH, bazy haseł przeglądarki, pliki konfiguracyjne z tokenami API, rozliczenia podatkowe. Cokolwiek, co da się odczytać kontem użytkownika.

Sama sesja siedziała w folderze tdata i składała się z trzech plików: key_datas z solą i zaszyfrowanym kluczem danych, pliku D877F783D5D3EF8Cs z autoryzacją MTProto oraz indeksu maps. Nazwa tego folderu brzmi jak losowy ciąg, a pochodzi od słowa „data” i jest identyczna na każdej instalacji na świecie. Telegram szyfruje dane lokalnie, ale w konfiguracji domyślnej nie ustawia się żadnego lokalnego kodu dostępu. Klucz szyfrujący wyliczany jest wtedy z pustego hasła i soli, a sól leży obok w tym samym pliku, w jawnej postaci. Kto skopiował trzy pliki, ten odpalał je na własnej maszynie i patrzył na cudze konto z własnego komputera.

Lokalny kod dostępu, o którym piszę niżej, nie zapobiega kradzieży tych plików. Autor raportu mówi to wprost: kradzież się uda, ale skradziona sesja staje się bezużyteczna, bo bez prawdziwego hasła nie da się z niej nic odszyfrować, więc z włamu zostaje paczka bezwartościowych bitów.

Czy Telegram jest bezpieczny

To pytanie wpisuje w Google tyle osób, że podpowiedzi rozwijają się na dziesięć wariantów, od „czy telegram jest bezpiecznym komunikatorem” po wersję z rokiem. Odpowiedź nie jest przełącznikiem i po tej sprawie widać dlaczego. Sam błąd to klasyczna podatność, nie backdoor: zgłoszona dwudziestego piątego czerwca przez firmę ZDI, naprawiona szesnastego września, wydana dzień później w wersji 7.2.9, potwierdzona w rejestrze NVD. Dwanaście tygodni od zgłoszenia do poprawki to nie rekord, ale też nie dramat.

Zastanawia coś innego. Poprawka weszła siedemnastego września w wersji 7.2.9, a wpis zmian tej wersji brzmi: „poprawiono kilka błędów w renderowaniu animacji”. Nic więcej. Commit nazywa się „Remove legacy interpret path helper”, czyli usuwa całą starą funkcję publikacyjną, żadnego ogłoszenia o bezpieczeństwie nie było, a case w ZDI zamknięto dopiero trzydziestego września. Użytkownik czytający changelogi nie miał jak się dowiedzieć, co naprawdę przyjechało z tą wersją. A kolejność dat robi resztę: między poprawką szesnastego września a ujawnieniem trzeciego października sesja niepodaktualizowanych osób leżała na dysku w przewidywalnym miejscu, i to dopiero ujawnienie zamienia wiedzę wąskiego grona w wiedzę wszystkich. Do tego domyślne ustawienia: dodawanie do grup przez obcych, automatyczne pobieranie plików, brak lokalnego kodu. Każdy z tych elementów zrobił swoją robotę w tym ataku. W tekście o bezpieczeństwie Gemini pytałem, czy ufać modelowi Google; tu pytanie jest podobne, tylko odpowiedź dotyczy konfiguracji, na której siedzisz dziś.

Co zrobić teraz

Aktualizacja zamyka sprawę, reszta to ubezpieczenie na przyszłość. Ta podatność dotyczy wyłącznie aplikacji desktopowej: jeśli Telegrama używasz tylko na telefonie albo w przeglądarce, konkretny atak cię nie dotyczy. Kroki od trzeciego do piątego i tak mają sens, bo zamykają inne furtki.

  1. Zaktualizuj Telegram Desktop. Numer wersji znajdziesz w ustawieniach aplikacji. Potrzebujesz 7.2.9 albo nowszej; aktualna, wydana dziewiątego października, nosi numer 7.3.0. Jeśli korzystasz ze sklepu Microsoft Store albo wersji na macOS, sprawdź tam dostępność aktualizacji.
  2. Włącz pytanie o miejsce zapisu plików. W ustawieniach aplikacji znajdziesz opcję „Ask where to save each file” (pytaj, gdzie zapisywać każdy plik). To wyłącza automatyczne pobieranie, a wraz z nim cały pierwszy etap ataku: instrukcje nigdy nie docierają na dysk.
  3. Ogranicz dodawanie do grup. W ustawieniach prywatności ustaw, kto może cię dodawać do grup i kanałów: tylko kontakty. Atak zaczynał się od wrzucenia ofiary do grupy, tu znika wjazd.
  4. Ustaw lokalny kod dostępu do aplikacji i potraktuj go jak prawdziwe hasło, nie jak czterocyfrowy PIN. Nie zatrzyma kradzieży plików, ale skradzione pliki sesji przestają cokolwiek znaczyć. Przy okazji włącz weryfikację dwuetapową konta, tę z hasłem dla nowych logowań.
  5. Przejrzyj aktywne sesje. W ustawieniach, w sekcji urządzeń, widać wszystkie zalogowane maszyny. Obca sesja na liście to sygnał do natychmiastowego wylogowania i zmiany haseł, nie tylko w Telegramie.

Kroki od drugiego do czwartego zostają z tobą na stałe i działają też przy następnych podatnościach, bo te w komunikatorach przytrafiają się regularnie.

Zastrzeżenia

Nie odtwarzaliśmy ataku i nie testowaliśmy starych wersji aplikacji; opis opiera się na raporcie odkrywcy, wpisie w rejestrze NVD i historii wydań na GitHubie, wszystkie daty i liczby pochodzą z tych trzech źródeł. Autor raportu potwierdza Windows; macOS i Linux nie były testowane publicznie, a naprawa w 7.2.9 dotyczy aplikacji desktopowej jako takiej. Telegram nie opublikował własnego komunikatu (stan na dziesiąte października). Gdy się pojawi, dopiszę aktualizację przy tym tekście.

Źródła

Powiązane artykuły