Независимый исследователь выявил в веб-интерфейсе SmartTub уязвимости, позволяющие просматривать и редактировать данные клиентов Jacuzzi. Автор атаки также потенциально мог подстроить каверзу любому владельцу гидромассажной ванны или спа-бассейна — наполнить их кипятком, изменить цикл фильтрации и т. п.
Система SmartTub, как и другие IoT-сервисы, позволяет управлять умной ванной с помощью Android- или iOS-приложения — дистанционно включать и выключать форсунки, менять подсветку, контролировать температуру воды. В каталоге Google Play за SmartTub числится более 10 тыс. загрузок.
Белый хакер Итон Звир (Eaton Zveare) обнаружил возможность получения доступа к бэкенду SmartTub, когда занялся настройкой своей только что прибывшей умной джакузи. Создав аккаунт с помощью мобильного приложения, он получил подтверждение с сайта smarttub.io; как оказалось, регистрация на нем осуществляется через Auth0.
При попытке входа сайт выдал сообщение об ошибке 401 (Unauthorized — отказ в доступе), но перед этим на экране быстро промелькнули заголовок и таблица. Заинтересовавшись, Звир применил запись экрана и к своему удивлению обнаружил, что это панель администратора, заполненная пользовательскими данными.
Как оказалось, консоль реализована как одностраничное приложение на основе JavaScript-библиотеки React, и к ней можно получить полный доступ. Обойти ограничения, выдав себя за админа, исследователю помог Fiddler — инструмент тестирования, позволяющий перехватывать и анализировать трафик между клиентом и сервером.
В итоге ему удалось добраться до информации об установленных по всему миру IoT-устройствах Jacuzzi и их пользователях (в последнем случае список включал только имена и email). Подобная возможность, по словам Звира, позволяет также редактировать аккаунты и лишать владельцев права собственности.
При просмотре APK-файла приложения Android хакер обнаружил ссылку на другую админ-панель. Попытка входа под своими идентификаторами и здесь вернула ошибку, но хакер вновь преодолел преграду путем подмены JavaScript-кода, так как эта консоль тоже использует React.
Кроме тех же пользовательских данных, здесь можно было просмотреть и изменить сроки подписки, производственные логи, списки дилеров и зарегистрированных мобильных устройств (без номеров телефона).
О неприятных находках Звир сообщил в Jacuzzi и в ответ получил запрос на более детальное описание проблем. Дальнейшие попытки добиться исправления ситуации результата не дали; разработчик упорно игнорировал письма и DM в Твиттере, поэтому баг-хантер решил заручиться поддержкой Auth0.
Поставщику услуг авторизации далеко не сразу удалось достучаться до Jacuzzi, но в итоге искомый эффект был достигнут — спустя полгода. Одну из админ-панелей SmartTub отключили, а другую по-тихому пофиксили.