Данная история о том, как я хотел сделать жизнь моего ребёнка немного безопасней с помощью новых технологий и что из этого вышло. Хотя по заголовку я думаю, вы и так догадались, о чём пойдёт речь.
Приближалось 1 сентября и я, как отец будущего первоклассника, задался вопросом, как сделать так, чтобы первые дни моего чада в школе прошли как можно более спокойно как для него, так и для нас с женой.
Я думаю, что не найдётся человека, который не слышал о таком новом гаджете, как детские смарт-часы. Рынок просто заполонили многочисленные варианты устройств, как правило произведённых в Китае. Цены и функционал этих устройств варьируется, но лучшие из них включают в себя такой широкий набор функций, как телефон, GPS трекер, мессенджер, фотокамеру, шагомер, ну и конечно же часы. По заявлению производителей — этот гаджет создан специально для детей и включает в себя средства безопасности ребенка. Так думал и я, поэтому стал выбирать в интернете подходящий вариант. Как итог я купил часы FixiTime 3 от компании Elari.
Функционал этих часов был впечатляющим:
- GPS/LBS/Wi-Fi-трекинг
- 2 камеры, доступ к камере часов с подключенного смартфона
- поддержка входящих и исходящих голосовых вызовов, в том числе скрытых
- голосовой чат
- шагомер
- ну и Фиксики внутри, как без них же
Весь этот богатый набор возможностей часов убеждает родителей, что они получают если не полный, то достаточно существенный контроль над своим чадом. Но, с другой стороны, устройства с таким функционалом должны надежно защищать данные своих пользователей. Тем более, что такими пользователями являются дети. Страшно представить, что может произойти, если злоумышленник получит доступ к устройству ребенка и сможет следить за ним.
Терзаемый такими мыслями, я решил проверить, насколько безопасным является использование купленных мною часов.
После того, как я установил приложение Elari SafeFamily из Apple Store и добавил в него часы по QR коду, я запустил Fiddler на ноутбуке и начал анализировать трафик. Приложение отправляло данные на сервер http://wherecom.com. Первое, на что я обратил внимание, это то, что использовался обычный HTTP протокол, никакого шифрования трафика не было, ни HTTPS, ни SSL Pinning. У меня закралась тревожная мысль, что этим дело не закончится.
Так и оказалось. Продолжая анализировать запросы и подменяя в них параметры, я обнаружил первую уязвимость. Так, запрос по адресу
http://api.wherecom.com:8099/umeox/api/holder/detail.json?holderId=111111&monitorId=222222
возвращал подробную информацию о ребёнке: его имя, дату рождения, рост, вес, в какой класс ходит, номер телефона, имейл родителей, фото ребёнка и главное — QR код его часов. Зная последний, любой мог добавить часы этого ребёнка в своё приложение и следить за ним так же, как это делают его родители. Суть же уязвимости заключалась в том, что изменив значение параметра monitorId в запросе в большую или меньшую сторону, мы получим данные другого ребёнка.
Так, в плане эксперемента, мне удалось добавить несколько устройств других детей в своё приложение.
Продолжая анализировать трафик, я обнаружил ещё несколько запросов, подмена параметров которых позволяла получить различные данные пользователей, такие как история GPS координат, данные родителей (имена, телефоны, имейлы). Но вся эта информация и так была доступна благодаря первой уязвимости с QR кодом. Единственное отличие было в том, то добавляя QR код в приложение, злоумышленник бы выдал себя, так как эта информация отображалась в приложении родителей. Выполняя же другие уязвимые запросы, злоумышленник мог оставаться незамеченным.
Помимо прочего, эксплуатацию перечисленных уязвимостей порядком упрощал тот факт, что все эти данные были доступны без какой либо авторизации к API с любого устройства, что говорит многое о качестве разработанного ПО и отношению к вопросам безопасности в целом.
Получается, что производитель, разрабатывая устройство, предназначенное повысить безопасность ребёнка, на самом деле не заботится о ней, как таковой. Таким образом под угрозой оказались несколько сотен тысяч устройств не только компании Elari, но и всех устройств, произведённых китайской компанией Wherecom.
Дальнейший анализ показал, что наружу торчат служебные страницы со статистикой сервера, админка phpMyAdmin, страница phpinfo.
Поэтому я прекратил дальнейший анализ и начал искать способы сообщить разработчикам приложения и производителю часов о найденных уязвимостях. Ведь если не закрыть их, пользоваться часами становится небезопасно, если не сказать больше. И если я могу вернуть часы продавцу, то что делать остальным пользователям, даже не подозревающим о происходящем? Я не смогу оповестить всех владельцев, что их дети не защищены должным образом. Точнее я могу это сделать, ведь у меня есть доступ ко всем телефонам и имейлам родителей, но этот путь незаконный, неэтичный и довольно трудоёмкий.
Производителем часов, как вы могли догадаться, оказалась китайская компания Wherecom technology limited. Согласно информации, размещенной на их сайте, располагаются они на территории Science & Technology Development Institute of China. Можно много размышлять, как так вышло, что такой важный продукт, предназначенный для безопасности детей и разрабатываемый на территории научного института, оказался такого низкого качества. На самом деле все мы знаем, на сколько дешёвой, а иногда и бесплатной, бывает студенческая рабочая сила. В итоге имеем то, что имеем.
Далее, я начал многочисленные попытки донести информацию о существующих уязвимостях до ответственных лиц. Сперва я отправил письмо в саппорт российского представительства компании Elari. Но там, создав автоматически заявку, её на следующий день закрыли без каких либо объяснений.
Отправив письмо в саппорт компании Wherecom, я тоже спустя несколько дней так и не получил ответа. Дальше были сообщения в Facebook на официальной странице Wherecom, негативный отзыв на сайте интернет-магазина, сообщения в Linkedin сотрудникам Wherecom. Как следствие, меня услышали и производитель и вендор, правда пришлось потратить больше усилий, чем на сам поиск уязвимостей.
Так начали понемногу устранять слабые места и закрывать уязвимости. Включили авторизацию к API. Оказывается, её по какой-то причине отключили, что делало эксплуатацию уязвимостей максимально простой.
На данный момент, спустя чуть более месяца после после первого обращения, все найденные мной уязвимости устранены, осталось перейти на HTTPS и добавить SSL Pinning в приложение. Но это только та часть брешей, которые удалось обнаружить мне в результате не очень продолжительного анализа. А кто знает, сколько ещё таких уязвимостей в их устройствах. Да и сколько таких некачественных устройств продаётся во всём мире и никто не проводит аудит безопасности. Кроме чёрных хакеров конечно же.
Автор: dinikin