Уязвимость в инфраструктуре Tesla позволяла получить контроль над любым автомобилем
31 августа 2020 года
Раскрыты сведения о проблемах в организации защиты в сети компании Tesla, позволивших полностью скомпрометировать инфраструктуру, осуществляющую взаимодействие с автомобилями потребителей. В том числе, выявленные проблемы давали возможность получить доступ к серверу, отвечающему за поддержание канала связи с автомобилями и отправку команд, передаваемых через мобильное приложение.
В итоге, атакующий сумел через инфраструктуру Tesla получить root-доступ к информационной системе любого автомобиля или удалённо передать на автомобиль управляющие команды. В том числе была продемонстрирована возможность отправки на автомобиль таких команд, как запуск двигателя и разблокировка дверей. Для получения доступа требовалось лишь знание VIN-номера автомобиля жертвы.
Уязвимость была выявлена в начале 2017 года исследователем безопасности Джейсоном Хьюзом(Jason Hughes), который сразу проинформировал компанию Tesla о проблемах и обнародовал выявленные им сведения только спустя три с половиной года после инцидента. Отмечается, что компания Tesla оперативно устранила проблемы и кардинально усилила защиту своей инфраструктуры.
Разбор проблем с инфраструктурой Tesla начался с декомпиляции инструментария, предлагаемого для загрузки с сайта toolbox.teslamotors.com (Архивная копия от 31 августа 2020 на Wayback Machine). Пользователям автомобилей Tesla, имеющим учётную запись на сайте service.teslamotors.com, предоставлялась возможность загрузки всех модулей для разработчиков. Модули были зашифрованы простейшим способом, а ключи шифрования отдавались тем же сервером.
Декомпилировав полученные модули в код на языке Python, исследователь обнаружил, что в коде встречаются вшитые учётные данные для разных сервисов Tesla, находящихся во внутренней сети компании, вход в которую осуществляется через VPN. В том числе в коде удалось найти учётные данные пользователя одного из хостов в поддомене "dev.teslamotors.com", находящегося во внутренней сети.
До 2019 года для подключения автомобилей к сервисам Tesla применялся VPN на базе пакета OpenVPN (впоследствии был заменён на реализацию на основе websocket) с использованием генерируемого для каждого автомобиля ключа. VPN использовался для обеспечения работы мобильного приложения, получения списка станций зарядки аккумуляторов и в других подобных сервисах. Исследователь попытался просканировать сеть, доступную после подключения своего автомобиля по VPN и обнаружил, что доступная клиентам подсеть на должном уровне не изолирована от внутренней сети Tesla. В том числе оказался достижим хост в поддомене dev.teslamotors.com, к которому были найдены учётные данные.
Скомпрометированный сервер оказался узлом для управления кластером и отвечал за доставку приложений на другие серверы. При входе на указанный хост удалось получить часть исходных текстов внутренних сервисов Tesla, включая mothership.vn и firmware.vn, отвечающие за передачу команд на автомобили клиентов и доставку прошивок. На сервере также были найдены пароли и логины для доступа к СУБД PostgreSQL и MySQL. Попутно выяснилось, что доступ к большинству из компонентов можно получить и без найденных в модулях учётных данных, оказалось достаточно отправить HTTP-запрос к Web API из доступной клиентам подсети.
Среди прочего на сервере был найден модуль, внутри которого был файл good.dev-test.carkeys.tar с ключами к VPN, применяемыми в процессе разработки. Указанные ключи оказались рабочими и позволили подключиться к внутреннему VPN компании vpn.dev.teslamotors.com.На сервере также был найден код сервиса mothership, изучение которого позволило определить точки подключения ко многим управляющим сервисам. Было выяснено, что большинство данных управляющих сервисов доступны на любом автомобиле, в случае подключения с использованием найденных VPN-ключей для разработчиков. Через манипуляцию с сервисами удалось извлечь обновляемые ежедневно ключи доступа для любого автомобиля, а также копии учётных данных любого клиента.
Указанные сведения позволяли определить IP-адрес любого автомобиля, с которым установлено соединение через VPN. Так как подсеть vpn.dev.teslamotors.com не была должным образом отделена межсетевым экраном через простые манипуляции с маршрутизацией удалось добраться до IP клиента и подключиться к его автомобилю по SSH с правами root, воспользовавшись полученными ранее учётными данными клиента.
Кроме того, полученные параметры VPN-соединения к внутренней сети позволяли отправлять запросы к любым автомобилям через Web API mothership.vn.teslamotors.com, которые принимались без дополнительной аутентификации. Например, при проведении тестов удалось продемонстрировать определение текущего местоположения автомобиля, разблокировать двери и запустить мотор. В качестве идентификатора для выбора цели атаки используется VIN-номер автомобиля.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.