Aplikacja Telegram wykorzystywana do uruchamiania złośliwych skryptów Python

Kilka dni temu Telegram ogłosił, że naprawił lukę zero-day w swojej aplikacji desktopowej dla systemu Windows. Podatność mogła zostać wykorzystana do ominięcia ostrzeżeń bezpieczeństwa i automatycznego uruchomienia skryptów w języku Python.

W ciągu ostatnich dni na forach X krążyły pogłoski o rzekomej podatności umożliwiającej zdalne wykonanie kodu w Telegramie dla Windowsa.

Chociaż w niektórych postach twierdzono, że jest to atak niewymagający interakcji ze strony użytkownika, filmy przedstawiające rzekome obejście ostrzeżeń bezpieczeństwa i lukę w zabezpieczeniach RCE wyraźnie pokazują, że ktoś klika udostępnione multimedia, aby uruchomić kalkulator Windows.

Telegram szybko zakwestionował plotki, twierdząc, że nie może potwierdzić, by istniała taka luka i że wideo jest prawdopodobnie mistyfikacją:

Jednak następnego dnia na forum hakerów XSS udostępniono exploit sprawdzający koncepcję i wyjaśniający, że literówka w kodzie źródłowym Telegramu dla Windows może zostać wykorzystana do wysyłania plików Pythona .pyzw, które po kliknięciu omijają komunikaty bezpieczeństwa. Powoduje to automatyczne wykonanie pliku przez Pythona bez ostrzeżenia ze strony Telegramu, jak ma to miejsce w przypadku innych plików wykonywalnych.

Co gorsza, exploit PoC ukrywał plik Pythona jako udostępniony film wraz z miniaturą, który mógł nakłonić użytkowników do kliknięcia go w celu obejrzenia.

W oświadczeniu dla BleepingComputer Telegram słusznie zaprzecza, jakoby luka była automatycznym exploitem niewymagającym kliknięcia, ale potwierdza, że naprawił „problem” w Telegramie dla systemu Windows, uniemożliwiający uruchamianie skryptów Pythona po kliknięciu. Była to poprawka po stronie serwera, którą wyjaśnimy w następnej sekcji:

Na czym polega podatność?

Klient Telegram Desktop śledzi listę rozszerzeń plików powiązanych z plikami ryzykownymi, takimi jak pliki wykonywalne.

Gdy ktoś wyśle jeden z tych typów plików w Telegramie, a użytkownik kliknie plik, zamiast automatycznie uruchomić go w powiązanym programie w systemie Windows, Telegram najpierw wyświetli następujące ostrzeżenie dotyczące bezpieczeństwa:

Jednak nieznane typy plików udostępniane w Telegramie zostaną automatycznie uruchomione w Windowsie, pozwalając systemowi operacyjnemu zdecydować, jakiego programu użyć.

Po zainstalowaniu języka Python dla systemu Windows powiąże on rozszerzenie pliku .pyzw z plikiem wykonywalnym języka Python, powodując automatyczne wykonanie skryptów przez Python po dwukrotnym kliknięciu pliku. Rozszerzenie .pyzw jest przeznaczone dla aplikacji zip w języku Python, które są samodzielnymi programami zawartymi w archiwach ZIP.

Twórcy Telegramu zdawali sobie sprawę, że tego typu pliki wykonywalne należy uważać za ryzykowne i dodali je do listy rozszerzeń plików wykonywalnych. Niestety, dodając rozszerzenie, popełnili literówkę, wpisując rozszerzenie jako „pywz”. Dlatego też gdy pliki zostały przesłane przez Telegram i kliknięte, automatycznie uruchomił je Python – jeśli był zainstalowany w systemie.

Pozwala to atakującym ominąć ostrzeżenia bezpieczeństwa i zdalnie wykonać kod na urządzeniu z systemem Windows ofiary, jeśli uda im się nakłonić ją do otwarcia pliku.

Aby zamaskować plik, badacze wymyślili, że wykorzystają bota Telegrama do wysłania pliku z typem MIME „wideo/mp4”, co spowoduje, że Telegram wyświetli plik jako udostępnione wideo. Jeśli użytkownik kliknie wideo, aby je obejrzeć, skrypt zostanie automatycznie uruchomiony w języku Python dla systemu Windows. BleepingComputer przetestował ten exploit wraz z badaczem AabyssZG, który udostępnił na platformie X również demonstrację. Korzystając ze starszej wersji Telegrama, BleepingComputer otrzymał od badacza plik „video.pywz” wyglądający jak wideo w formacie MP4. Plik zawiera po prostu kod Pythona umożliwiający otwarcie wiersza poleceń, jak pokazano poniżej:

Źródło: bleepingcomputer.com

Podsumowanie

Błąd został zgłoszony Telegramowi 10 kwietnia. Firma stwierdziła, że naprawi błąd przy następnej łatce, poprawiając pisownię rozszerzenia w pliku kodu źródłowego „data_document_resolver.cpp”.

Wydaje się, że poprawka nie została jeszcze wdrożona, ponieważ ostrzeżenia nie pojawiają się po kliknięciu pliku w celu jego uruchomienia.

Podziel się z innymi tym artykułem!