Informacja o w organizowaniu bezpieczeństwa w sieci Tesla, co pozwoliło na całkowite naruszenie infrastruktury, która komunikuje się z samochodami konsumenckimi. Zidentyfikowane problemy pozwoliły m.in. na uzyskanie dostępu do serwera odpowiedzialnego za utrzymanie kanału komunikacji z pojazdami oraz przesyłanie komend przekazywanych za pomocą aplikacji mobilnej.
W rezultacie atakujący był w stanie uzyskać dostęp do systemu informatycznego dowolnego samochodu za pośrednictwem infrastruktury Tesli lub zdalnie przesyłać polecenia sterujące do samochodu. Zaprezentowano m.in. możliwość wysyłania poleceń do samochodu, na przykład uruchomienia silnika czy odblokowania drzwi. Aby uzyskać dostęp, wystarczyło znać numer VIN pojazdu ofiary.
Luka została odkryta na początku 2017 roku przez badacza ds. bezpieczeństwa Jasona Hughesa
(), który natychmiast poinformował Teslę o problemach i upublicznił odkryte przez siebie informacje dopiero trzy i pół roku po incydencie. Warto zaznaczyć, że Tesla usunęła problemy w 2017 r., w ciągu kilku godzin od otrzymania powiadomienia o luce w zabezpieczeniach, po czym radykalnie wzmocniła ochronę swojej infrastruktury. Za wskazanie luki badacz otrzymał nagrodę w wysokości 50 tysięcy dolarów.
Badanie problemów infrastrukturalnych Tesli rozpoczęto od dekompilacji narzędzi dostępnych do pobrania na stronie. . Użytkownicy samochodów Tesla posiadający konto na service.teslamotors.com otrzymali możliwość pobrania wszystkich modułów deweloperskich. Moduły zostały zaszyfrowane w najprostszy sposób, a klucze szyfrujące zostały podane przez ten sam serwer.
Dekompilując powstałe moduły do kodu Pythona, badacz odkrył, że kod zawierał osadzone dane uwierzytelniające do różnych usług Tesli zlokalizowanych w wewnętrznej sieci firmy, do której dostęp odbywa się za pośrednictwem sieci VPN. W szczególności kod zawierał dane uwierzytelniające użytkownika jednego z hostów w subdomenie „dev.teslamotors.com”, zlokalizowanej w sieci wewnętrznej.
Do 2019 roku Tesla korzystała z pakietu VPN w celu łączenia samochodów ze swoimi usługami. OpenVPN (później zastąpiona implementacją opartą na protokole websocket) z wykorzystaniem klucza generowanego dla każdego pojazdu. Sieć VPN służyła do obsługi aplikacji mobilnej, pobierania listy stacji ładowania i innych podobnych usług. Badacz próbował przeskanować sieć dostępną po podłączeniu samochodu przez VPN i odkrył, że podsieć dostępna dla klientów nie była odpowiednio odizolowana od wewnętrznej sieci Tesli. Dotyczyło to również dostępu do hosta w subdomenie dev.teslamotors.com, dla którego znaleziono dane uwierzytelniające.
Okazało się, że zainfekowany serwer był węzłem zarządzania klastrem i odpowiadał za dostarczanie aplikacji na inne serwery. Dzięki dostępowi do wskazanego hosta udało nam się uzyskać część kodu źródłowego wewnętrznych usług Tesli, w tym mothership.vn i firmware.vn, które odpowiadają za przesyłanie poleceń do samochodów klientów i dostarczanie oprogramowania sprzętowego. Na serwerze znaleziono również hasła i loginy umożliwiające dostęp do systemów PostgreSQL i MySQL DBMS. Po drodze okazało się, że dostęp do większości komponentów można uzyskać bez konieczności podawania danych uwierzytelniających znajdujących się w modułach; okazało się, że wystarczy wysłać żądanie HTTP do Web API z podsieci dostępnej dla klientów.
Między innymi na serwerze znaleziono moduł, w którym znajdował się plik good.dev-test.carkeys.tar z kluczami do sieci VPN, wykorzystywanymi w procesie rozwoju. Podane klucze okazały się działać i pozwoliły nam nawiązać połączenie z wewnętrzną siecią VPN firmy vpn.dev.teslamotors.com.
Na serwerze znaleziono również kod usługi macierzystej, którego zbadanie pozwoliło na ustalenie punktów połączeń z wieloma usługami zarządzającymi. Okazało się, że większość danych z usług zarządzania jest dostępna w każdym samochodzie, jeśli połączymy się z nim przy użyciu znalezionych kluczy VPN dla programistów. Dzięki manipulacji usługami możliwe było uzyskanie codziennie aktualizowanych kluczy dostępu do dowolnego pojazdu, a także kopii danych uwierzytelniających dowolnego klienta.
Dostarczone informacje pozwoliły na ustalenie adresu IP każdego pojazdu, z którym nawiązano połączenie VPN. Ponieważ podsieć vpn.dev.teslamotors.com nie była prawidłowo oddzielona przez zaporę sieciową, poprzez proste manipulacje trasą udało się dotrzeć do adresu IP klienta i połączyć się z jego samochodem przez SSH z uprawnieniami roota, korzystając z wcześniej uzyskanych danych logowania klienta.
Ponadto otrzymane parametry połączenia VPN z siecią wewnętrzną pozwoliły na wysyłanie żądań do dowolnych samochodów poprzez interfejs Web API mothership.vn.teslamotors.com, które zostały zaakceptowane bez dodatkowego uwierzytelniania. Podczas testów można było m.in. zademonstrować ustalenie aktualnego położenia samochodu, odblokowanie drzwi i uruchomienie silnika. Numer VIN pojazdu służy jako identyfikator umożliwiający wybór celu ataku.
Źródło: opennet.ru
