Прочитал на днях оригинал статьи, перевод которой относительно недавно вышел на Хабре. Суть в чем: один исследователь (Spaceraccoon) взял и взломал миллионы умных весов. Да, миллионы. Те самые, что по Bluetooth и Wi-Fi шлют ваши данные в облако, чтобы потом приложение заботливо сообщило вам: «Сегодня +2 кг. Надо бы сократить сладкое». Только теперь это может увидить не только пользователь, а любой человек, умеющий взаимодействовать с API 😳
Статью в подробностях вы можете прочитать и без меня (все ссылки я оставил в этом посте выше), а я расскажу вам все в более кратком варианте. Разберемся в причинах, сделаем выводы, пошутим... ну как обычно 🤝
Что вообще произошло?
Началось всё с иконки Wi-Fi на весах в отеле. Оказалось, что эти штуки подключаются к интернету и обмениваются данными с серверами через мобильное приложение. А если быть точнее — через уязвимое API. Там, где происходит самое важное: привязка пользователя к устройству 🧐
И вот тут начинается магия (чернокнижная, а точнее черношляпная) 😎
Автор понял, что многие бренды (даже те, что кажутся совершенно не связанными друг с другом) используют одну и ту же библиотеку — com.qingniu.heightscale. То есть, если нашёл баг в одном приложении — можно быть практически уверенным в том, что он будет и в десятке других 🪄
🤌 Самое мясо:
- Через баг в API можно было подобрать серийники устройств
- Эти серийники использовались не только как идентификатор, но и как ключ. То есть знаешь MAC-адрес устройства — можешь привязать его к своему аккаунту
- SQL-инъекция с хитрой WAF-обходкой ('or @@version limit 1#) позволяла вытаскивать серийники тысяч устройств, просто двигая offset
- В API логике была дыра, что позволило отправлять токен пользователя вместо токена устройства, и сервер честно привязывал чужое устройство к тебе
Вуаля — у тебя весы незнакомого человека, а у него теперь «Ошибка соединения». Что ты с ними делаешь дальше — вопрос совести. Или фантазии 😅
👍 Что особенно круто — автор не ограничился только API. Он разобрал весы Withings WBS06, нашёл debug-порты, подключился через UART, вытащил прошивку, нашёл TLS-сертификаты, приватные ключи и… получил shell. На весах. Да. Там реально была консоль. На весах (зачем?)
И всё это было не ради фана, а чтобы понять, как работает связка «железо → приложение → сервер» и где в ней то, что так сильно болит 💀
🫡 Небольшие выводы от меня (побуду моралистом):
API = точка входа. Даже если у вас супербезопасное железо, всё рушится, если на бэке забыли добавить валидацию 🤓
Серийник ≠ секрет. Нельзя строить безопасность на том, что легко узнать ⛔️
mTLS — это не броня, если логика не вытягивает 💯
Хорошие производители фиксируют баги даже 3 января. Респект тем, кто слушает таких вот исследователей (да, разработчики оперативно все устранили в новогодние праздники) 🎅
Я бы не сказал, что после этой истории хочется срочно перестать взвешиваться на умных весах. Но точно стоит помнить: если девайс подключается к интернету — рано или поздно кто-то к нему тоже подключится. И не факт, что это будете вы 😉
#интернет_вещей
#информационная_безопасность


