Zamów książkę sekuraka o bezpieczeństwo aplikacji www!

Błąd w Slacku warty ~13 000 PLN – dostęp do wewnętrznych serwisów przez serwer TURN

08 kwietnia 2020, 13:02 | W biegu | 0 komentarzy

Kilka dni temu ujawniony został ciekawy błąd zidentyfikowany w Slacku, który pozwolił na dostęp do wewnętrznych serwisów przez serwer TURN. Błąd został wyceniony na 3500 dolarów. W praktyce został wykorzystany m.in. do:

  • Podłączenia się do serwisów z metadanymi z chmury Amazona (stamtąd można wyciągnąć tokeny IAM (Identity and Access Management),
  • Przeskanowania portów w infrastrukturze Slacka postawionej na Amazonie,
  • Dostępu do portów na localhoście (czyli na samym serwerze TURN), które nie są wystawione do internetu.

Krótki opis błędu

Żeby zrozumieć o co chodziło w błędzie, w pierwszej kolejności należy zrozumieć czym są serwery TURN. Są one częścią infrastruktury potrzebnej do działania z protokołem WebRTC. Czym jest zatem WebRTC? Posiłkując się Wikipedią, możemy powiedzieć, że jest to „standard służący do komunikacji w czasie rzeczywistym poprzez przeglądarkę internetową”. Jest on powszechnie używany w aplikacjach do audio i wideo w przeglądarkach webowych, takich jak Google Hangouts czy właśnie Slack. W uproszczeniu można powiedzieć, że WebRTC umożliwia nawiązanie połączenia typu peer-to-peer pomiędzy dwoma użytkownikami, którzy chcą się ze sobą bezpośrednio skomunikować.

Głównym problemem z jakim muszą zmierzyć się wszystkie rozwiązania typu peer-to-peer są użytkownicy znajdujący się za NAT-em (Network Address Translation). Tacy użytkownicy nie mają publicznych adresów IP, więc nie można się do nich bezpośrednio podłączyć. Żeby jednak umożliwić im korzystanie z dobrodziejstw bezpośredniej komunikacji, zdefiniowano protokół STUN (Session Traversal Utilities for NAT). Rozwiązanie polega w (ponownie) największym skrócie na tym, że zdefiniowany jest serwer publiczny, który przekazuje połączenia pomiędzy zainteresowanymi. W praktyce STUN nie pozwalał na nawiązanie połączenia przez wszystkie typy NAT-ów, został więc zdefiniowany kolejny protokół: TURN (Traversal Using Relays around NAT).

Wprawdzie w opisie błędu nie napisano jak dokładnie technicznie odbył się atak, ale można wysnuwać pewne przypuszczenia. Na początku komunikacji protokołem TURN wysyłany jest pakiet XOR-PEER-ADDRESS, w którym przekazywana jest też informacja o adresie IP, z którym chce się połączyć. Problem w Slacku polegał na tym, że można było podać nie tylko adresy publiczne (bo takie jest założenie tego protokołu), ale również adresy w sieci lokalnej, dzięki czemu możliwe było przekierowanie połączeń.

Efekt działania ataku można zobaczyć na filmie poniżej:

— mb

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz