В сервисе Subaru STARLINK, позволяющем контролировать состояние автомобиля через мобильное приложение, выявлены проблемы с безопасностью, дающие возможность получить неограниченный доступ ко всем автомобилям и учётным записям клиентов из США, Канады и Японии. К панели администратора STARLINK оказалась возможно получить доступ через уязвимость в механизме восстановления забытого пароля. Для получения доступа к автомобилю через панель администратора STARLINK достаточно знать телефонный номер, email, автомобильный номер или фамилию с ZIP-кодом владельца.
Найдя в панели администратора нужный автомобиль атакующий мог удалённо завести/заглушить, заблокировать/разблокировать автомобиль, получить данные о текущем местоположении автомобиля, загрузить полную историю перемещений за последний год с точностью до 5 метров, узнать персональные данные владельца (адрес, телефон, последние 4 цифры номера кредитной карты) и историю перепродаж автомобиля.
В результате анализа активности мобильного приложения MySubaru, позволяющего отправлять команды автомобилю, исследователи обратили внимание на то, что запросы отправляются на сервер "mobileapi.prod.subarucs.com". Само мобильное приложение не содержало изъянов, связанных с авторизацией, поэтому была предпринята попытка изучения сервисов в поддоменах "subarucs.com". Одним из активных хостов оказался "portal.prod.subarucs.com", при открытии которого показывалась страница входа в STARLINK Admin Portal.
Изучив используемый на странице JavaScript-код, исследователи заметили в файле "/assets/_js/login.js" функцию для восстановления забытого пароля. Данная функция формировала JSON-блок с новым паролем в привязке к email сотрудника и отправляла запрос обработчику сброса пароля "/forgotPassword/resetPassword.json". Данные отправлялись без привязки к проверочному коду, подтверждающему владение email. Таким образом, для смены пароля любого сотрудника Subaru, имеющего доступ к STARLINK Admin Portal, достаточно было знать его email.
При передаче неверного email обработчик выдавал характерный код ошибки, позволяющий определить существует ли указанный email. Для подбора действующего email исследователи изучили открытую информацию об инженерах Subaru в социальной сети LinkedIn и пришли к выводу, что сотрудники имеют адреса формата "первая буква имени + фамилия@subaru.com", например, "[email protected]". После перебора вероятных сочетания в итоге был найден рабочий email одного из инженеров, которому был успешно изменён пароль:
POST /forgotPassword/resetPassword.json HTTP/1.1
Host: portal.prod.subarucs.com
{
"email": "[email protected]",
"password": "Example123!",
"passwordConfirmation": "Example123!"
}
HTTP/1.1 200
...
"success"
Вход на сайт "portal.prod.subarucs.com" с новым паролем показал, что для завершения смены пароля требуется ответить на вопрос, используемый для двухфакторной аутентификации. Но оказалось, что проверка влияет лишь на отображение страницы и для обхода двухфакторной аутентификации достаточно просто убрать в JavaScript-отладчике слой с модальным диалогом. После этого был получен полный доступ в служебный web-интерфейс.
Среди возможностей, доступных в интерфейсе portal.prod.subarucs.com, был поиск автомобилей по различным параметрам владельцев. Исследователи нашли автомобиль знакомого, согласившегося поучаствовать в эксперименте, и воспользовавшись соответствующей формой в интерфейсе добавили себя в число авторизированных пользователей, которым разрешено удалённо управлять автомобилем. После этого под своей учётной записью в мобильном приложении они удалённо разблокировали автомобиль. При этом владельцу не пришло какого-либо уведомления о совершённых операциях.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62627