Взлом автомобилей Hyundai и Genesis

1 year ago 156
BOOK THIS SPACE FOR AD
ARTICLE AD

Недавно мы обнаружили уязвимость, затрагивающую автомобили Hyundai и Genesis, с помощью которой можно удаленно управлять замками, двигателем, звуковым сигналом, фарами и багажником автомобилей, выпущенных после 2012 года.

Наше открытие началось с того, что @_specters_ обратился к @bbuerhaus и ко мне, чтобы помочь изучить потенциальные проблемы безопасности, влияющие на службы автомобильной телематики.

Большинство исследований автомобилей, которые мы видели ранее, включали действительно крутые крипто-атаки на физические ключи, но что насчет веб-сайтов?

Мобильные приложения Hyundai и Genesis позволяют аутентифицированным пользователям запускать/выключать/запирать/отпирать свой автомобиль. Поскольку у нас был доступ к Hyundai, мы начали проксировать весь трафик приложения через Burp Suite и смотреть, какие фактические вызовы API имели место.

Ниже приведен упрощенный HTTP-запрос для обычной разблокировки автомобиля:

POST /ac/v2/rcs/rdo/unlock HTTP/1.1
Access_token: token
{"userName":"EMAIL","vin":"VIN"}

Заголовок “Access_token" был нашим JWT, сгенерированным в результате аутентификации по электронной почте и паролю в мобильном приложении.

Что было интересно, так это то, что в POST запросе мы повторно отправляли наш email в теле JSON. Это было необычно, поскольку сервер должен был иметь возможность идентифицировать нашу электронную почту с помощью нашего сессионного токена в JWT.

Нам было любопытно: как сервер обрабатывает параметр электронной почты из JSON?

Если бы мы изменили параметр электронной почты на что-либо еще, кроме электронной почты из JWT, сервер вернул бы «Unauthorized».

Оказалось, что сервер сравнивает email, который мы отправили в JSON, с адресом электронной почты из нашего JWT, и выполняет своего рода предварительную проверку перед отправкой запроса.

Поскольку это делалось при фактическом запросе на разблокировку автомобиля, то если бы это можно было обойти, то, теоретически, мы могли бы разблокировать автомобиль и выполнить все остальные действия. Нам нужно было найти какой-то способ обмануть сервер, чтобы он распознал электронную почту жертвы как действительную из обоих наших входов.

Первый подход, о котором мы подумали, — это фаззинг регистрации учетной записи пользователя Hyundai. Сразу же мы заметили, что сервер не требует от пользователей подтверждения адреса электронной почты. Кроме того, оказалось, что здесь используется очень свободное регулярное выражение, которое допускает использование управляющих символов в вашей электронной почте.

Мы поигрались с этим некоторое время, пока не получили что-то, что сработало. Добавив во время регистрации символ CRLF в конце уже существующего адреса электронной почты жертвы, мы могли создать учетную запись, которая обходила проверку сравнения параметров JWT и адреса электронной почты!

Для проверки того, что это работает, мы отправили HTTP-запрос на конечную точку, отображающую все транспортные средства, подключенные к учетной записи, с использованием следующих переменных:

Registered JWT email: victim@gmail.com%0d

JSON parameter email: victim@gmail.com

Ответ возвращал нам VIN жертвы, а значит это сработало!

Наша последняя проверка заключалась в том, чтобы увидеть, можем ли мы выполнять реальные действия, такие как разблокировка или запуск автомобиля, используя наш подделанный JWT.

Если мы сможем так сделать, то это будет полный захват аккаунта и транспортных средств Hyundai (и, как мы узнали позже, Genesis) с дистанционным управлением.

Мы отправили HTTP-запрос, используя нашу учетную запись жертвы с добавлением CRLF, чтобы попытаться удаленно разблокировать автомобиль, подключенный к адресу электронной почты жертвы. Служба заняла несколько секунд, а затем, наконец, вернула «200 OK». @_specters_ подтвердил, что его машина разблокирована!

Поскольку эксплуатация этой уязвимости включала много шагов, мы взяли все запросы и поместили их в скрипт на Python, которому нужен был только адрес электронной почты жертвы. После его ввода вы можете выполнять все команды на транспортном средстве и захватить учетную запись.

Собрав все это вместе, мы сообщили о проблеме в Hyundai и работали с ними, чтобы подтвердить исправление.

Оригинал на английском тут.

Read Entire Article