Еще в прошлом году ИБ-специалист обнаружил опасные уязвимости в умных колонках Google Home. Проблемы позволяли создать бэкдор-аккаунт и использовать его для удаленного управления устройством, фактически превращая колонку в шпионский девайс с доступом к микрофону. Учитывая полную компрометацию умной колонки, Google выплатила исследователю 107 500 долларов в рамках программы bug bounty.
Теперь, когда проблемы уже устранены, эксперт, скрывающийся под ником DownrightNifty, опубликовал в своем блоге детальное техническое описание багов, а также различные сценарии атак, в которых уязвимости могли использоваться.
Все началось с того, что изучая собственную колонку Google Home Mini, исследователь обнаружил, что новые учетные записи, добавленные с помощью приложения Google Home, могут удаленно отправлять команды устройству через облачный API.
Заинтересовавшись этой функциональностью, он использовал Nmap и нашел порт локального HTTP API Google Home, а затем настроил прокси-сервер для перехвата зашифрованного HTTPS-трафика, надеясь таким образом перехватить токен авторизации пользователя.
В итоге выяснилось, что добавление нового пользователя на целевое устройство — это двухэтапный процесс, требующий имени устройства, сертификата и облачного ID из локального API. С помощью этой информации колонка могла сформировать запрос для связывания (linking request) к серверу Google.
Чтобы создать на целевой колонке аккаунт для потенциального злоумышленника, DownrightNifty написал Python-скрипт, который автоматизировал извлечение данных с локального устройства и воспроизводил запрос на привязку нового аккаунта.
В итоге исследователь описывает теоретическую атаку на Google Home следующим образом.
- Злоумышленник хочет шпионить за своей жертвой, находясь в пределах досягаемости от Google Home по беспроводной связи (но НЕ имеет пароля от Wi-Fi жертвы).
- Злоумышленник находит Google Home жертвы, прослушивая MAC-адреса с префиксами, связанными с Google Inc. (например, E4:F0:42).
- Злоумышленник отправляет пакеты деаутентификации, чтобы отключить устройство от сети и перевести его в режим настройки.
- Злоумышленник подключается к сети настройки устройства и запрашивает информацию об устройстве (имя, сертификат, облачный ID).
- Злоумышленник подключается к интернету и использует полученную информацию об устройстве, чтобы связать свою учетную запись с устройством жертвы.
- Злоумышленник получает возможность шпионить за жертвой через свой Google Home, через интернет (больше нет необходимости находиться рядом с целевым устройством).
В качестве приложения к своей статье исследователь опубликовал на GitHub три PoC-экплоита для осуществления вышеописанных действий. Более того, эти эксплоиты позволяют не просто внедрить нового пользователя на устройство жертвы, но и шпионить за целью через микрофон, делать произвольные HTTP-запросы в сети жертвы, а также читать/записывать произвольные файлы на скомпрометированной колонке.
DownrightNifty подчеркивает, что на устройствах с последней версией прошивки все это работать не будет.
В блоге эксперт объясняет, что наличие учетной записи, связанной с целевым устройством, позволяет совершать через Google Home самые разные действия, например: управлять умными выключателями, делать покупки в интернете, удаленно открывать двери и разблокировать транспортные средства, и даже тайно брутфорсить PIN-коды от умных замков.
Хуже того, исследователь нашел способ злоупотребить командой «позвонить [номер телефона]» и создал вредоносную процедуру (routine), которая в указанное время активирует микрофон, звонит по номеру злоумышленника и устраивает ему прямую трансляцию всего, что происходит рядом с микрофоном жертвы.
Единственным индикатором такой прослушки будет светодиод устройства, который загорится синим во время звонка. Но даже если жертва обратит на это внимание, она может предположить, что устройство просто обновляет прошивку, так как стандартный индикатор включения микрофона — это мигающий светодиод, а во время звонка он не мигает.
Также DownrightNifty рассказывает, что он получил возможность воспроизводить мультимедиа на скомпрометированном устройстве, переименовывать колонку, принудительно перезагружать ее, заставлять «забыть» сохраненные сети Wi-Fi, принудительно спаривать ее с новыми Bluetooth- и Wi-Fi-девайсами и совершать множество других действий.
Весь этот букет проблем исследователь обнаружил еще в январе 2021 года, в марте передал Google дополнительные сведения о багах и PoC-эксплоиты, и в апреле 2021 года инженеры Google исправили все обнаруженные DownrightNifty недостатки.
Выпущенный патч включает в себя новую систему добавления связанных аккаунтов на основе приглашений, которая блокирует любые попытки связать устройство с аккаунтом, не добавленным на саму колонку.
Деаутентификация Google Home по-прежнему возможна, однако теперь ее нельзя использовать для привязки новой учетной записи, потому как локальный API, из-за которого происходила утечка основных данных девайса, более недоступен.
Что касается команды «позвонить [номер телефона]», Google добавила отдельную защиту для предотвращения ее удаленного запуска.
И хотя теперь все баги закрыты, в конце своей статьи DownrightNifty отмечает, что колонки Google Home появились еще в 2016 году, возможность добавлять запланированные процедуры была добавлена в 2018 году, а Local Home SDK представили в 2020 году. То есть у злоумышленников было много времени, чтобы обнаружить те же проблемы, которые в итоге нашел он, и использовать их по своему усмотрению.