Хакер #305. Многошаговые SQL-инъекции
Интернет вещей богат и разнообразен самыми разными девайсами. Существуют даже IoT-гирлянды, управлять которыми можно удаленно, с помощью мобильного приложения и Wi-Fi. ИБ-специалисты из компании MWR InfoSecurity (недавно фирма была поглощена F-Secure) нашли сразу несколько уязвимостей в одном из таких решений, «умной» гирлянде Twinkly итальянской компании LEDWorks. Исследователи предупреждают, что около 20 000 таких устройств могут быть свободно доступны через интернет.
Диоды в гирляндах Twinkly можно контролировать индивидуально. Используя бреши в системе аутентификации и передаче команд, специалисты, например, сумели воспроизвести на smart-гирлянде легендарную игру Snake, популярную несколько десятков лет тому назад (для этого также задействовали Raspberry PI и контроллер SNES).
Для этого экспертам понадобилось изучить, как гирлянда сообщается с мобильным приложением. Оказалось, что сначала нужно подключиться к Twinkly напрямую, как к точке доступа, а затем настроить подключение гирлянды к домашней сети, через которую впоследствии и осуществляются коммуникации. Связь работает через эндпоинт RESTful HTTP API, который расположен на 80 порту устройства. При этом данные оказались не зашифрованы, хотя при исходной настройке пароль от Wi-Fi и передавался в зашифрованном виде. В отсутствии шифрования специалистам осталось лишь произвести атаку Man-in-the-Middle и изучить работу API.
Чтобы связаться с гирляндой, мобильному приложению сначала нужно ее обнаружить. Для этого используется UDP broadcast (порт 5555) с сообщением «\x00discover». Гирлянда отвечает на это, сообщая свой IP-адрес и имя.
Получив IP гирлянды, приложение осуществляет аутентификацию, получая токен и информацию об устройстве. Однако внимательно изучив аппаратную часть гирлянды и работу мобильного приложения, специалисты пришли к выводу, что процесс аутентификации небезопасен.
Также удалось выявить проблему в механизме обновления прошивки: в ходе обновления не проверяются сигнатуры файлов, чтобы установить их подлинность. В итоге на устройство можно установить любую прошивку, без какой-либо дополнительной авторизации и аутентификации, что может вести прямиком к исполнению произвольного кода.
Кроме того, гирлянды Twinkly можно контролировать с помощью Google Assistant, и реализовано это с помощью MQTT (message queue telemetry transport). Этот упрощенный сетевой протокол работает поверх TCP/IP и ориентирован на обмен сообщениями между устройствами по принципу издатель-подписчик. Для этого устройство соединяется с MQTT-брокером и может получать данные от издателей.
Специалисты MWR InfoSecurity заметили, что для связи с MQTT-брокером гирлянды используют жестко закодированные, всегда одинаковые логин и пароль, узнать которые не составляет никакого труда. Именно через эту функциональность исследователи и сумели обнаружить около 20 000 устройств Twinkly.
Принимая во внимание все это множество проблем, эксперты предупреждают, что Twinkly можно отключать удаленно или заставлять их отображать кастомные узоры. Специалисты сумели даже реализовать атаку DNS rebinding на «умные» гирлянды. Для этого они создали тестовую вредоносную страницу, при посещении которой обнаруживаются все локальные устройства. Если среди них есть Twinkly, гирлянда отобразит сообщение «Hack the Planet!», как показано на видео ниже.
В заключение аналитики MWR InfoSecurity пишут, что Twinkly – это классический пример того, насколько небезопасными могут быть устройства интернета вещей. И хотя праздничные гирлянды вряд ли можно называть особенно интересной целью для хакеров, другие IoT-девайсы демонстрируют ничуть не меньше уязвимостей, а их взлом может привести к куда более серьезным последствиям.