На прошлой неделе исследователи из компании Sternum опубликовали любопытную историю о том, как им удалось обнаружить уязвимость в умных розетках Belkin Wemo. При соблюдении ряда условий уязвимость позволяет выполнить произвольный код на устройстве и получить над ним контроль. В том числе есть некоторая вероятность сделать это удаленно.



Сразу отметим, что это не настолько серьезная уязвимость, как кажется из краткого описания. В Sternum решили не тратить время на демонстрацию полного цикла атаки и вместо этого ограничились доказательством того, что она теоретически возможна. Тем не менее в статье наглядно показано, как анализировать и искать уязвимости в IoT-устройствах. Наконец, работа вновь подтверждает тот факт, что в целом подобные штуки защищены недостаточно хорошо.

В американском онлайн-магазине Amazon об устройствах Belkin Wemo есть множество отзывов, и наверняка такие розетки продавались тиражами в десятки тысяч штук. Однако когда исследователи обратились к производителю с информацией об уязвимости, он отказался выпускать патч, сославшись на то, что устройство уже не поддерживается. Это еще одна типичная IoT-история: производитель поддерживает устройство максимум пару лет, потом переключается на новую модель. А старая без патчей и, вероятно, с легко эксплуатируемыми дырами может оставаться у потребителя годами и десятилетиями.

Вот так выглядит само устройство изнутри:



Оно поделено на две платы: высоковольтную и управляющую. На управляющей плате расположены SoC от Mediatek, модуль памяти на 512 мегабайт и ПЗУ на 128 мегабайт. На первом этапе исследователи скопировали прошивку устройства из ПЗУ и изучили ее. Анализ показал, что умная розетка работает на базе свободно распространяемого дистрибутива OpenWRT. Методом прозвонки тестовых площадок на плате исследователи нашли и последовательный интерфейс, через который можно управлять устройством. Пароль суперпользователя взломать не удалось, зато получилось перезагрузить устройство в «режим восстановления», где пароль root можно было просто поменять. Все эти действия позволили установить на устройство отладочное ПО для дальнейшего анализа.



Главная зацепка, благодаря которой удалось обнаружить уязвимость, нашлась в фирменном приложении для удаленного управления умной розеткой. Каждой розетке можно назначить уникальное имя (что-нибудь вроде «вентилятор_на_кухне»). В приложении говорится, что имя не должно быть длиннее 30 символов. Оказалось, что это ограничение (а также запрет на использование спецсимволов) проверяется только на уровне приложения, а не на самом устройстве. Используя свободно распространяемую утилиту pyWeMo, исследователи смогли назначать устройству имя произвольной длины, и в какой-то момент из-за достаточно длинных строк управляющее приложение в OpenWRT начало «падать».

Проанализировав содержимое оперативной памяти «взломанного» устройства, авторы работы нашли куски «длинного названия» в ряде мест, где у пользователя вообще не должно быть прав доступа. Выяснилось, что на кастомное имя умной розетки выделяется 68 байт, ввод на стороне устройства никак не проверяется, а при записи особо длинной строки происходит переполнение буфера. Из-за действующей системы Address Space Layout Randomization (ASLR) лишние данные записывались в разные области памяти. Для дальнейшего изучения прошивки ASLR пришлось отключить. В результате еще пары экспериментов у исследователей получилось выполнить произвольную команду (например, для загрузки по определенному адресу потенциально вредоносного кода и его запуска), переданную в составе «уникального имени» для умного устройства. Вместе с такой командой передаются и данные, обеспечивающие ее выполнение путем перезаписи по определенным адресам в оперативной памяти.

Уязвимость получила идентификатор CVE-2023-27217. В представленном методе атаки есть несколько ограничений. Даже с выключенной системой ASLR потенциальный эксплойт должен сделать несколько «попыток» атаки. Каждая неудачная попытка будет приводить к падению приложения и его перезагрузке — таким образом устройство оказывается вне доступа примерно на 10 секунд. Авторы статьи предполагают, что атаку можно провести и при включенном ASLR. Есть еще одна теория, которую было бы неплохо проверить, — вероятно, атака возможна не только в локальной сети, но и через облачный сервис.

В любом случае рекомендации для защиты от подобных атак всегда примерно одинаковые:
  • не делать устройства доступными из Интернета;
  • не забывать менять стандартные пароли доступа, если они есть;
  • если вдруг такие розетки используются в корпоративном окружении — изолировать их от основной сети.

Уязвимость в Belkin Wemo оказалась менее ужасной, чем, например, недавний набор проблем в промышленных дверных замках Akuvox. Но и обнаруженные практики безопасной разработки, мягко говоря, оставляют желать лучшего. То, что в данном случае не был показан эффективный метод атаки, является следствием скорее лени авторов исследования, а не защищенности самого IoT-устройства. Из данного исследования можно вывести и рекомендации для разработчиков IoT-устройств: если прошивку зашифровать, а последовательный интерфейс отключить и ограничить возможности recovery mode — поиск и обнаружение уязвимостей будут несколько затруднены. Хотя сами уязвимости при этом никуда не денутся.

Что еще произошло


А вот пример последствий плохих решений по безопасности. Производитель автомобилей Hyundai и KIA согласился выплатить в США 200 миллионов долларов по коллективному иску. В автомобилях этих марок в базовых комплектациях вплоть до 2021 года не было иммобилайзера. Замок зажигания можно было достаточно легко разобрать и прокрутить посторонними предметами, например, для этого отлично подходил разъем USB-A. Одним словом, угнать подобный автомобиль было ну очень просто. Все это, увы, привело к опасному модному тренду в соцсетях, а угоны и последующая опасная езда в 8 случаях привели к смертельным ДТП.

В менеджерах паролей Keepass версий 2.х найдена опасная уязвимость, позволяющая добыть незашифрованный мастер-пароль из оперативной памяти.

Фичу операционной системы Windows под названием Phone Link можно использовать для киберсталкинга. Если за пользователем против его воли следит близкий человек, он может достаточно легко привязать телефон жертвы к своему компьютеру и таким образом получить доступ к истории ее звонков и сообщений. Недавно Phone Link начал поддерживать не только устройства на базе Android, но и смартфоны Apple.

Компания Apple закрыла три активно эксплуатируемые уязвимости в браузерном движке WebKit. Патчи выпущены как для мобильных устройств Apple, так и для персональных компьютеров, часов и приставок Apple TV.

Китайские исследователи показывают способ брутфорса сканеров отпечатков пальцев на современных смартфонах. Помимо самой методики последовательной отправки на сканер «виртуальных отпечатков» в научной работе также показан метод, полностью снимающий ограничение на количество попыток ввода на смартфонах Android. На устройствах Apple исследователи смогли ввести отпечатки десять раз сверх официального лимита.

Комментарии (5)


  1. gev
    23.05.2023 17:00

    Проанализировав содержимое оперативной памяти «взломанного» устройства, авторы работы нашли куски «длинного названия» в ряде мест, где у пользователя вообще не должно быть прав доступа. Выяснилось, что на кастомное имя умной розетки выделяется 68 байт, ввод на стороне устройства никак не проверяется, а при записи особо длинной строки происходит переполнение буфера.

    Вот поэтому я и использую Haskell и Ivory


  1. speshuric
    23.05.2023 17:00
    +4

    На управляющей плате расположены SoC от Mediatek, модуль памяти на 512 мегабайт и ПЗУ на 128 мегабайт.

    Чувствую себя старым, потому что не могу привыкнуть к половине гигабайта памяти в розетке.


    1. litos
      23.05.2023 17:00
      +2

      Лет 15 назад у меня был ПК с 512 памяти и на нем шли вообще все игры в которые я играл в то время на windows xp. Может на розетку пора ставить не только doom, но и quake3 и halflife?


      1. speshuric
        23.05.2023 17:00
        +2

        К сожалению, судя по новости, придётся ограничиться антивирусом :)


    1. lolipop
      23.05.2023 17:00
      +1

      не поленился почитать оригинал статьи и проверить даташиты. там 512 мегаБИТ и 128 мегаБИТ, ученый в очередной раз изнасиловал журналиста.