Time4Popcorn naraził miliony urządzeń na zdalne wykonanie kodu przez wadliwy mechanizm aktualizacji - Security Bez Tabu

Time4Popcorn naraził miliony urządzeń na zdalne wykonanie kodu przez wadliwy mechanizm aktualizacji

Cybersecurity news

Wprowadzenie do problemu / definicja

Porzucone i nieutrzymywane aplikacje stanowią poważne zagrożenie dla bezpieczeństwa, zwłaszcza gdy nadal działają w tle i posiadają automatyczny mechanizm aktualizacji. Przypadek Time4Popcorn pokazuje, jak niepozorny komponent aktualizacyjny może stać się krytycznym wektorem ataku, umożliwiając zdalne uruchomienie dowolnego kodu z wysokimi uprawnieniami.

Problem dotyczył jednego z forków dawnego ekosystemu Popcorn Time. Badacze ustalili, że aplikacja korzystała z niebezpiecznie zaprojektowanego procesu aktualizacji, który umożliwiał przejęcie komunikacji i dostarczenie złośliwego pliku wykonywalnego bez odpowiedniej kontroli integralności.

W skrócie

Mechanizm aktualizacji w Time4Popcorn komunikował się z porzuconą infrastrukturą przez niezabezpieczony protokół HTTP i nie wymuszał weryfikacji podpisu cyfrowego pobieranego kodu. W praktyce oznaczało to, że osoba kontrolująca domenę aktualizacyjną lub ruch sieciowy mogła podmienić aktualizację na złośliwy payload.

Skutki były bardzo poważne, ponieważ pobrany plik mógł zostać uruchomiony z uprawnieniami SYSTEM w Windows lub root w macOS. Badacze, którzy przejęli część porzuconych domen, zaobserwowali miliony połączeń od aktywnych i zapomnianych instalacji aplikacji, a następnie wykorzystali ten dostęp do ograniczenia ryzyka poprzez dezaktywację podatnego mechanizmu.

Kontekst / historia

Popcorn Time był przez lata rozpoznawalnym klientem multimedialnym opartym na technologii BitTorrent. Po zamknięciu pierwotnego projektu w obiegu pozostały liczne forki, z których część była nadal instalowana przez użytkowników, mimo braku realnego wsparcia i regularnych aktualizacji bezpieczeństwa.

Time4Popcorn okazał się szczególnie ryzykowny, ponieważ nawet po zakończeniu aktywnego używania aplikacji jej komponenty mogły nadal funkcjonować na urządzeniu. Analiza ruchu sieciowego wykazała, że porzucone instalacje wciąż próbowały łączyć się z dawną infrastrukturą aktualizacyjną z sieci domowych, firmowych, a nawet środowisk o podwyższonej wrażliwości.

To klasyczny przykład zagrożenia związanego z tzw. martwym oprogramowaniem, czyli aplikacjami, które nie są już wspierane ani świadomie używane, ale pozostają obecne w systemie i zachowują możliwość komunikacji sieciowej oraz wykonywania operacji z wysokimi uprawnieniami.

Analiza techniczna

Główny problem wynikał z architektury procesu aktualizacji. Aktualizator pobierał informacje i pliki przez HTTP, bez szyfrowania i bez gwarancji integralności danych. Taki model otwierał drogę do przejęcia odpowiedzi serwera, ataków typu man-in-the-middle lub wykorzystania przejętej bądź odtworzonej domeny aktualizacyjnej.

Drugim krytycznym błędem był brak obowiązkowej weryfikacji podpisu cyfrowego pobieranego pliku wykonywalnego. Oznaczało to, że aplikacja mogła zaakceptować i uruchomić dowolny binarny payload wskazany w odpowiedzi aktualizacyjnej, bez potwierdzenia jego autentyczności.

W praktyce scenariusz ataku był relatywnie prosty:

  • przejęcie kontroli nad domeną lub ruchem sieciowym używanym przez aktualizator,
  • podstawienie odpowiedzi wskazującej spreparowany plik wykonywalny,
  • pobranie payloadu przez klienta,
  • uruchomienie go z wysokimi uprawnieniami systemowymi.

Na Windows skutkiem mogło być wykonanie kodu jako NT AUTHORITY\SYSTEM, a na macOS jako root. To poziom dostępu wystarczający do pełnego przejęcia systemu, instalacji trwałych komponentów malware, wyłączenia zabezpieczeń lub dalszego ruchu bocznego w sieci.

Dodatkowe ryzyko wynikało z faktu, że aplikacja miała opierać się na bardzo starym silniku Chromium, pochodzącym jeszcze z 2014 roku, i działać bez ochrony sandbox. Taki stan znacząco zwiększał prawdopodobieństwo wykorzystania znanych historycznych luk, również poza samym mechanizmem aktualizacji. Problem pogłębiało także ładowanie zasobów przez HTTP i odwołania do porzuconych domen.

Konsekwencje / ryzyko

Z perspektywy użytkowników indywidualnych i organizacji była to podatność o bardzo wysokiej wadze. Atakujący mógł uzyskać uprzywilejowane wykonanie kodu bez potrzeby nakłaniania ofiary do dodatkowych działań, jeśli podatny komponent nadal pozostawał aktywny w tle.

Taki wektor mógł zostać wykorzystany do wdrożenia różnych klas zagrożeń:

  • ransomware szyfrującego dane lokalne i sieciowe,
  • infostealerów kradnących hasła, tokeny i dane przeglądarek,
  • backdoorów zapewniających trwały zdalny dostęp,
  • loaderów pobierających kolejne etapy złośliwego oprogramowania,
  • narzędzi do rekonesansu i ruchu bocznego w środowisku firmowym.

Szczególnie niebezpieczne było to, że wiele instalacji mogło być już zapomnianych przez użytkowników i administratorów. Takie aplikacje często nie trafiają do standardowych procesów zarządzania podatnościami, ponieważ nie są postrzegane jako aktywne zasoby biznesowe, mimo że nadal wykonują połączenia i posiadają szerokie uprawnienia.

Ryzyko nie zostało też całkowicie wyeliminowane we wszystkich środowiskach. W szczególności ograniczenia techniczne utrudniały pełne zdalne wyłączenie problematycznych komponentów na Androidzie, a nie cała infrastruktura powiązana z dawnym ekosystemem została objęta kontrolą zaufanej strony.

Rekomendacje

Najważniejszym krokiem jest pełna deinstalacja Time4Popcorn oraz wszelkich powiązanych komponentów aktualizacyjnych. Samo wyłączenie części funkcji nie rozwiązuje problemu, ponieważ aplikacja pozostaje przestarzała i może nadal zawierać inne nieusunięte wektory ataku.

Organizacje powinny wdrożyć następujące działania:

  • przeprowadzić inwentaryzację endpointów pod kątem obecności Time4Popcorn, Popcorn Time oraz powiązanych plików, takich jak Updater.exe i PT.updd,
  • monitorować lub blokować ruch do historycznych domen związanych z tym ekosystemem,
  • traktować wykryte instalacje jako nieautoryzowane oprogramowanie wysokiego ryzyka,
  • zablokować komponenty aktualizacyjne przy użyciu EDR, AV oraz polityk kontroli aplikacji,
  • sprawdzić systemy pod kątem oznak wcześniejszego nadużycia procesu aktualizacji,
  • włączyć porzucone aplikacje do procesów asset management i vulnerability management.

Długofalowo warto również egzekwować bezpieczne standardy dla mechanizmów aktualizacji, w tym obowiązkowe użycie TLS, weryfikację podpisu kodu, ograniczanie uprawnień procesów aktualizacyjnych oraz wykrywanie aplikacji uruchamiających pobrane pliki bez walidacji integralności.

Podsumowanie

Incydent związany z Time4Popcorn pokazuje, że źródłem krytycznego ryzyka nie musi być nowa kampania malware ani świeżo ujawniona luka zero-day. Czasem największym problemem okazuje się stare, zapomniane oprogramowanie, które nadal działa na urządzeniach i korzysta z niebezpiecznie zaprojektowanego procesu aktualizacji.

Połączenie porzuconych domen, komunikacji przez HTTP, braku weryfikacji podpisu cyfrowego oraz wysokich uprawnień stworzyło warunki do potencjalnie masowego zdalnego wykonania kodu na milionach urządzeń. Dla użytkowników i firm najbezpieczniejszym rozwiązaniem pozostaje pełna deinstalacja aplikacji oraz przegląd środowiska pod kątem innych nieutrzymywanych komponentów o podobnym profilu ryzyka.

Źródła