Независимый исследователь из Небраски Сэм Карри (Sam Curry) обнаружил XSS-уязвимость в своей Tesla Model 3. Баг позволял извлечь и модифицировать информацию об автомобиле и принес Карри 10 000 долларов по программе bug bounty.
Ошибку исследователь нашел случайно, ради интереса попытавшись проверить свое авто на защиту от различных атак. Свои тесты Карри начал с изучения поля «Name Your Vehicle» в информационно-развлекательной системе автомобиля. Это поле позволяет присвоить автомобилю имя, необходимое для сохранения информации в учетной записи, чтобы пользователь мог видеть ее в мобильном приложении и при получении push-уведомлений.
Эксперт пытался выяснить, уязвим ли автомобиль к атакам форматирования строки (и назвал авто «% x.% X.% X.% X»). Попытка не увенчалась успехом, однако исследователь заметил, что Tesla поддерживает длинные строки символов, чем и решил воспользоваться, прибегнув к помощи инструмента XSS Hunter. Увы, эти попытки тоже ни к чему не привели. После Карри попробовал поступиться к встроенному браузеру авто, но тоже не добился ничего и сдался, на этом завершив поиск багов. Про запущенный XSS Hunter Карри к этому моменту уже попросту забыл.
Однако в июне в лобовое стекло его автомобиля попал камень, и оно треснуло. В сервис для замены лобового стекла Карри обратился при помощи приложения, а на следующий день получил текстовое уведомление: как оказалось, забытый XSS hunter нашел что-то интересное, а именно слепую XSS.
Баг обнаружился в контексте субдомена Tesla, который предоставлял доступ к текущей информации об автомобиле (включая VIN, скорость, температуру, версию прошивки, давление в шинах, местный часовой пояс, информацию о блокировке и так далее). И срабатывание полезной нагрузки XSS hunter, разумеется, спровоцировал запрос на замену лобового стекла, в позволивший собрать данные о транспортном средстве.
Попытка получить доступ к уязвимому субдомену привела к ошибке, так как он, вероятно, был ограничен для внутреннего использования. В блоге исследователь объясняет, что так живые сотрудники поддержки могут взаимодействовать с автомобилем клиента, отправляя обновления и, скорее всего, изменяя конфигурацию. То есть злоумышленнику, который попытался бы воспользоваться этой слепой XSS-уязвимость, нужно было предварительно отправить несколько запросов в службу поддержки, чтобы получить контекст DOM и JavaScript. В итоге атакующий собирал достаточно данных для формирования запроса, с помощью которого мог получить информацию как о самом автомобиле, так и о его владельце.
Карри сообщил о своем открытии инженерам Tesla и уязвимость, получившая высокий уровень опасности, была исправлена уже 12 часов спустя. Исследователю было выплачено вознаграждения в размере 10 000 долларов за ответственное раскрытие бага.
«В заключение отмечу, что bug bounty программа Tesla, это просто фантастика. Они предоставляют исследователям, которые пытаются добросовестно взломать свои машины, безопасную гавань. Если вы случайно брикнули машину в процессе, они даже предложат помощь в ее починке», — резюмирует Карри.