Cała historia już załatanego problemu, znajduje się w wątku tutaj:
We recently found a vulnerability affecting Hyundai and Genesis vehicles where we could remotely control the locks, engine, horn, headlights, and trunk of vehicles made after 2012.
Jeśli właściciel zarejestrował się w odpowiednim miejscu, to mógł otworzyć samochód takim żądaniem HTTP (ale musi ono zawierać poprawny token JWT!):
Teraz uwaga: e-mail użytkownika przekazywany był zarówno w body żądania HTTP, jak i w JWT. Na czym polegał hack? Badacze zarejestrowali swoje konto z adresem e-mailowym:
prawdziwy.adres.ofiary@gmail.com
Powiecie jednak – ale zaraz, przecież takie konto już istniało! Rzeczywiście. Więc badacze zarejestrowali jednak konto z adresem mailowym: prawdziwy.adres.ofiary@gmail.com%0d
Powiecie jednak – ale to na jaki adres mailowy przyjdzie prośba o potwierdzenie faktu, że się właścicielem tego adresu? Nie przyjdzie, bo aplikacja podczas rejestracji nie wymagała potwierdzenia maili.
Przechodzimy do meritum. Po zalogowaniu się na nowe konto (atakujących), otrzymywało się token JWT. Teraz wystarczyło użyć tokenu JWT (zawierającego prawdziwy.adres.ofiary@gmail.com%0d) w żądaniu HTTP otwierającym samochód. Przy czym w “normalnym” parametrze w żądaniu należało podać prawdziwego maila ofiary (widoczny jest w pierwszej linijce na zrzucie poniżej):
W ten sposób można było otwierać samochód / bagażnik / włączać światła czy startować silnik. Badacze nawet przygotowali skrypcik, który do działania potrzebował tylko e-maila ofiary i na koniec otwierał jej samochód:
Since exploiting this involved many steps, we took all of the requests necessary to exploit this and put it into a python script which only needed the victim's email address. After inputting this, you could then execute all commands on the vehicle and takeover the actual account. pic.twitter.com/Bz5G5ZvHro