19.09.2020

Уязвимость в инфраструктуре Tesla позволяла получить контроль над любым автомобилем


Раскрыты сведения о проблемах в организации защиты в сети компании Tesla, позволивших полностью скомпрометировать инфраструктуру, осуществляющую взаимодействие с автомобилями потребителей. В том числе, выявленные проблемы давали возможность получить доступ к серверу, отвечающему за поддержание канала связи с автомобилями и отправку команд, передаваемых через мобильное приложение.

В итоге, атакующий сумел через инфраструктуру Tesla получить root-доступ к информационной системе любого автомобиля или удалённо передать на автомобиль управляющие команды. В том числе была продемонстрирована возможность отправки на автомобиль таких команд, как запуск двигателя и разблокировка дверей. Для получения доступа требовалось лишь знание VIN-номера автомобиля жертвы.

Уязвимость была выявлена в начале 2017 года исследователем безопасности Джейсоном Хьюзом (Jason Hughes), который сразу проинформировал компанию Tesla о проблемах и обнародовал выявленные им сведения только спустя три с половиной года после инцидента. Отмечается, что компания Tesla оперативно устранила проблемы и кардинально усилила защиту своей инфраструктуры.

Разбор проблем с инфраструктурой Tesla начался с декомпиляции инструментария, предлагаемого для загрузки с сайта toolbox.teslamotors.com. Пользователям автомобилей 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-номер автомобиля.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53627

Добавить комментарий