Som ett resultat lyckades angriparen få root-åtkomst till informationssystemet i vilken bil som helst genom Tesla-infrastrukturen eller fjärrsända kontrollkommandon till bilen. Bland annat demonstrerades möjligheten att skicka kommandon som att starta motorn och låsa upp dörrar till bilen. För att få tillträde krävdes bara kunskap om VIN-numret på offrets bil.
Sårbarheten identifierades i början av 2017 av säkerhetsforskaren Jason Hughes
(
Analysen av problem med Teslas infrastruktur började med dekompileringen av de verktyg som erbjuds för nedladdning från webbplatsen
Efter att ha dekompilerat de resulterande modulerna till Python-kod upptäckte forskaren att koden innehöll inbäddade referenser för olika Tesla-tjänster som finns på företagets interna nätverk, som nås via VPN. I synnerhet kunde vi i koden hitta användaruppgifterna för en av värdarna i underdomänen "dev.teslamotors.com" som finns på det interna nätverket.
Fram till 2019, för att ansluta bilar till Tesla-tjänster, användes en VPN baserad på OpenVPN-paketet (senare ersatt av en websocket-baserad implementering) med en nyckel som genererades för varje bil. VPN användes för att säkerställa driften av en mobilapplikation, få en lista över batteriladdningsstationer och andra liknande tjänster. Forskaren försökte skanna nätverket som var tillgängligt efter att ha anslutit sin bil via VPN och fann att undernätet som var tillgängligt för kunder inte var tillräckligt isolerat från Teslas interna nätverk. Bland annat gick det att nå en värd på underdomänen dev.teslamotors.com, för vilken referenser hittades.
Den komprometterade servern visade sig vara en klusterhanteringsnod och var ansvarig för att leverera applikationer till andra servrar. När vi loggade in på den angivna värden kunde vi erhålla en del av källkoden för interna Tesla-tjänster, inklusive mothership.vn och firmware.vn, som är ansvariga för att överföra kommandon till kundbilar och leverera firmware. Lösenord och inloggningar för att komma åt PostgreSQL och MySQL DBMS hittades också på servern. Längs vägen visade det sig att tillgång till de flesta komponenterna kan erhållas utan de referenser som finns i modulerna, det visade sig att det räckte med att skicka en HTTP-förfrågan till webb-API:et från subnätet som är tillgängligt för klienter.
Bland annat hittades en modul på servern, inuti vilken det fanns en fil good.dev-test.carkeys.tar med VPN-nycklar som användes under utvecklingsprocessen. De angivna nycklarna visade sig fungera och tillät oss att ansluta till företagets interna VPN för företaget vpn.dev.teslamotors.com.
Moderskeppstjänstkoden hittades också på servern, vars studie gjorde det möjligt att fastställa anslutningspunkter till många förvaltningstjänster. Det visade sig att de flesta av dessa hanteringstjänster är tillgängliga på alla bilar, om de är anslutna med hjälp av de hittade VPN-nycklarna för utvecklare. Genom manipulation av tjänsterna var det möjligt att extrahera åtkomstnycklar uppdaterade dagligen för vilken bil som helst, såväl som kopior av användaruppgifterna för alla kunder.
Den angivna informationen gjorde det möjligt att fastställa IP-adressen för vilken bil som helst som en anslutning upprättades med via VPN. Eftersom undernätet vpn.dev.teslamotors.com inte var ordentligt separerat av brandväggen, var det genom enkla routingmanipulationer möjligt att nå klientens IP och ansluta till hans bil via SSH med roträttigheter, med hjälp av klientens tidigare erhållna referenser.
Dessutom gjorde de erhållna parametrarna för VPN-anslutningen till det interna nätverket det möjligt att skicka förfrågningar till alla bilar via Web API mothership.vn.teslamotors.com, som accepterades utan ytterligare autentisering. Till exempel, under tester var det möjligt att demonstrera bestämningen av den aktuella platsen för bilen, låsa upp dörrarna och starta motorn. Fordonets VIN-nummer används som en identifierare för att välja ett attackmål.
Källa: opennet.ru