Миллионы взломанных умных весов и уязвимый API

Меня зовут Максим Князев. На канале я пишу об Интернете вещей, информационной безопасности и технологиях так, чтобы было понятно и полезно. Разбираю Edge AI, стандарты, уязвимости и инструменты безопасной разработки, делюсь практическим опытом и вдохновляющими кейсами.

iotумные весыинформационная безопасность

Прочитал на днях оригинал статьи, перевод которой относительно недавно вышел на Хабре. Суть в чем: один исследователь (Spaceraccoon) взял и взломал миллионы умных весов. Да, миллионы. Те самые, что по Bluetooth и Wi-Fi шлют ваши данные в облако, чтобы потом приложение заботливо сообщило вам: «Сегодня +2 кг. Надо бы сократить сладкое». Только теперь это может увидить не только пользователь, а любой человек, умеющий взаимодействовать с API 😳

Статью в подробностях вы можете прочитать и без меня (все ссылки я оставил в этом посте выше), а я расскажу вам все в более кратком варианте. Разберемся в причинах, сделаем выводы, пошутим... ну как обычно 🤝

Что вообще произошло?

Началось всё с иконки Wi-Fi на весах в отеле. Оказалось, что эти штуки подключаются к интернету и обмениваются данными с серверами через мобильное приложение. А если быть точнее — через уязвимое API. Там, где происходит самое важное: привязка пользователя к устройству 🧐

И вот тут начинается магия (чернокнижная, а точнее черношляпная) 😎

Автор понял, что многие бренды (даже те, что кажутся совершенно не связанными друг с другом) используют одну и ту же библиотеку — com.qingniu.heightscale. То есть, если нашёл баг в одном приложении — можно быть практически уверенным в том, что он будет и в десятке других 🪄

🤌 Самое мясо:

  1. Через баг в API можно было подобрать серийники устройств
  2. Эти серийники использовались не только как идентификатор, но и как ключ. То есть знаешь MAC-адрес устройства — можешь привязать его к своему аккаунту
  3. SQL-инъекция с хитрой WAF-обходкой ('or @@version limit 1#) позволяла вытаскивать серийники тысяч устройств, просто двигая offset
  4. В API логике была дыра, что позволило отправлять токен пользователя вместо токена устройства, и сервер честно привязывал чужое устройство к тебе

Вуаля — у тебя весы незнакомого человека, а у него теперь «Ошибка соединения». Что ты с ними делаешь дальше — вопрос совести. Или фантазии 😅

👍 Что особенно круто — автор не ограничился только API. Он разобрал весы Withings WBS06, нашёл debug-порты, подключился через UART, вытащил прошивку, нашёл TLS-сертификаты, приватные ключи и… получил shell. На весах. Да. Там реально была консоль. На весах (зачем?)

И всё это было не ради фана, а чтобы понять, как работает связка «железо → приложение → сервер» и где в ней то, что так сильно болит 💀

🫡 Небольшие выводы от меня (побуду моралистом):

API = точка входа. Даже если у вас супербезопасное железо, всё рушится, если на бэке забыли добавить валидацию 🤓

Серийник ≠ секрет. Нельзя строить безопасность на том, что легко узнать ⛔️

mTLS — это не броня, если логика не вытягивает 💯

Хорошие производители фиксируют баги даже 3 января. Респект тем, кто слушает таких вот исследователей (да, разработчики оперативно все устранили в новогодние праздники) 🎅

Я бы не сказал, что после этой истории хочется срочно перестать взвешиваться на умных весах. Но точно стоит помнить: если девайс подключается к интернету — рано или поздно кто-то к нему тоже подключится. И не факт, что это будете вы 😉

#интернет_вещей

#информационная_безопасность

Скриншот: заголовок статьи и фрагмент текста про взлом миллионов умных весов, уязвимый API и разбор Withings WBS06
Иллюстрация к разбору исследования Spaceraccoon о взломе умных весов

Читайте так же