Подборка багов в IoT: теперь вся наша жизнь может быть ошибкой

image-loader.svg

Современные «умные устройства» выглядят привлекательно для потребителей: получать уведомления от видеоняни, управлять домом голосовыми командами, подзывать свою Tesla — всё это звучит как будущее. Есть и менее броские, но не менее полезные применения IoT: вплоть до датчиков в мусорных контейнерах, позволяющих удалённо проверить, вывезен ли мусор.

Однако, чем умнее вещи, тем больше всего может пойти не так. Об этом говорят давно, но обычно в контексте безопасности: мол, представьте, что злоумышленники получили доступ к вашему шибко умному дверному замку (а то и к поясу верности). А вот что получает меньше внимания — так это случаи, когда без всяких хакеров достаточно простой ошибки, чтобы люди уже каким-то образом пострадали. Поэтому я захотел собрать упоминания таких багов и посмотреть: если мы теперь во всём полагаемся на софт, то что в нашей жизни могут случайно сломать создатели этого софта?

Therac-25 (1985–1987)

Начать надо явно с этого классического и трагического случая. Ещё не было никакого «internet of things», а человечество уже обнаружило, что с багами можно столкнуться не только при сидении за компьютером. И что цена ошибки с другими устройствами может быть куда выше, чем при зависании обычного ПК.

В 1982-м канадская компания AECL выпустила аппарат лучевой терапии Therac-25. Там был частично переиспользован код, написанный ранее для аппаратов Therac-6 и Therac-20. Но у предыдущих устройств были хардварные ограничения, защищающие от определённых ошибок —, а вот у Therac-20 таких не было. В итоге привычный код, казавшийся уже совершенно безопасным, получил возможность проявить себя по-новому. Полноценного (по сегодняшним меркам) тестирования также проведено не было. И, что ещё хуже, когда при использовании стали возникать сообщения о проблемах, поначалу их игнорировали, считая «там что-то путают, у нас всё правильно». 

А в итоге ряд ошибок в коде привёл к тому, что при определённых условиях пациент мог получить дозу облучения, на порядки превышающую задуманную. С 1985-го по 1987-й такое произошло по меньшей мере шесть раз. Трое пациентов умерли от последствий. Так некачественный код буквальным образом убил людей.

При всей трагичности этой истории, от неё есть и польза: она встряхнула индустрию, став наглядным примером «как нельзя делать и к чему это может привести». Хочется верить, что в итоге кого-то она и спасла, потому что в других местах тщательнее подошли к тестированию «чтобы не вышло как с Therac-25» и выявили опасные ошибки. 

Баг с термостатом (2016)

image-loader.svg

Прошли десятилетия, и началось пришествие новых устройств. Они умели обмениваться данными друг с другом, не тратить на это много энергии благодаря Bluetooth LE, получать информацию от самых разных сенсоров — не красота ли? Как сказал Шелдон, всё становится лучше с Bluetooth, так?

Ну, выигрыши-то действительно есть. Вот, например, термостаты. «Глупые» просто поддерживают в помещении заданную вручную температуру. А затем пришли «умные», которыми можно управлять с телефона и настраивать им расписание — всё это не только удобно, но и помогает экономить на отоплении, когда оно не нужно.

Тут пионером стала компания Nest Labs, основанная одним из создателей iPod — Тони Фаделлом. И её первый продукт Nest Learning Thermostat стал для рынка термостатов примерно тем же, чем iPod для рынка плееров: новым мировым стандартом со стильным дизайном. Было много восхищённых отзывов о том, что «эппловский» подход добрался до домашних устройств.

А в январе 2016-го после апдейта внезапно проявился баг, который быстро разряжал термостат Nest до полного отключения. И многие пользователи посреди зимы внезапно просыпались в холодном доме. Вскоре проблему исправили, и она вроде бы ни к каким трагическим последствиям не привела. Но тут показательно вот что: люди дали софту (а значит, и его ошибкам) доступ к таким базовым своим потребностям, как тепло. Можем ли мы теперь быть уверенными, что новый баг в термостате не заморозит младенца?

И этот случай оказался не единственным. В случае с другой компанией Ecobee пользователь жаловался, что из-за её плановых серверных работ также проснулся в холодном доме. Похоже, что в его случае «умный» термостат не перестал работать полностью, а превратился в «глупый» и не смог отработать по расписанию, прогрев дом перед пробуждением. 

Разумеется, глупые термостаты тоже могут ломаться. Но вот что получается: теперь простое желание согреться может натыкаться на баги в апдейтах и серверные перебои, а раньше о таком просто никогда не приходилось беспокоиться. 

И вот что ещё важно: если с поломкой «глупой» техники можно пытаться разобраться самому или с мастером, то фиксить апдейт за производителя люди не станут.

Баг с отображением чужих камер (2020)

Обычно люди боятся того, что кто-то целенаправленно получит доступ к их камерам. Но, как оказывается, камеры даже без всяких хакеров и спецслужб могут просто взять и сами предоставить несанкционированный доступ к себе.

1 января 2020-го пользователь Reddit выложил видео, демонстрирующее непонятную ситуацию с его устройством «умного дома» Google Nest Hub. Он хотел увидеть видеопоток со своей камеры Xiaomi, и Nest Hub выводил на экран кадры с камер…, но чьих-то чужих. Пользователь невольно подсматривал в дома случайных незнакомцев, установивших умные камеры. 

Поскольку тут не было возможности выбрать какой-то конкретный дом, этот баг вроде бы не использовать для целенаправленной слежки за кем-то. Но, разумеется, ситуация «покупаешь домой умную камеру, а она показывает всё кому-то постороннему» людям всё равно очень не понравилась. Причём поначалу было непонятно, на чьей стороне тут проблема и насколько она масштабная: пользовательские видеопотоки путают в Google, в Xiaomi или ещё где-то? Что вообще происходит?

По итогам двухдневных разбирательств в Google сообщили, что проблема возникает только с устройствами Xiaomi, поэтому до исправления ситуации решено вообще отключить интеграцию Xiaomi с Google Home. И после тщательного тестирования сначала вернуть «всё, кроме видеопотоков с камер», а затем отдельно камеры.

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

Последствия серверных падений

image-loader.svg

Мы привыкли, что сейчас и интернет доступен постоянно, и крупные интернет-сервисы тоже. Вроде бы знаем, что даже Facebook иногда может прилечь, но это же не суперкритично, можно пару часов и без соцсети прожить, да?

Вот только при этом от соединения с сервером начинает зависеть всё больше вещей, ранее этого не требовавших. Скажем, если привыкнуть делать всё голосом через гугловскую колонку, при первом же перебое у провайдера можно неожиданно обнаружить, что временно лишился этой возможности. А когда проблемы возникали у самого Google, тут пользователям не помогло бы даже переключение на мобильный интернет.

И когда у вроде бы надёжного AWS отказывал какой-то регион, пользователи тоже совершали много удивительных открытий. Например, что от этого зависит привычная работа их умных пылесосов и дверных звонков. И вроде как все производители устройств заранее учитывают возможность такого, так что не завязывают только на сервер критическую функциональность вроде «открыть дверь» и оставляют возможность сделать то же другим способом. Вот только на практике, если пользователь уже привык к удобству сервера, он может и разучиться пользоваться другими способами:

Нечто схожее произошло и с Tesla. Там в ноябре 2021-го возник сбой в работе официального мобильного приложения. И оно не является единственным способом открыть свой автомобиль, но только есть водители, привыкшие использовать его как единственный. То есть формально критичного бага нет, а в реальности люди оказывались в ситуации «не могу попасть в собственную машину».

Отдельная история — с каршерингами. Там связь требуется не только при посадке в автомобиль, но и во время поездки, иначе машина может отказаться ехать дальше. И совсем недавно на Хабре обсуждали одну такую ситуацию, когда из-за потери соединения люди застряли между населёнными пунктами зимой без соответствующей одежды. Но вопрос не ограничивается одной историей с конкретным российским каршерингом, люди в мире сталкивались с подобным и раньше:

Дополнительная сложность тут в том, что места без сотовой связи — это обычно глушь, поэтому так можно встрять в очень неудачном месте, где некого позвать на помощь. Например, в местах вроде тех, о которых речь в следующем пункте.

Смерть от GPS

Тут спорный вопрос, называть ли это «багом» —, но это ситуация, когда жизнь человека зависит от качества программного обеспечения. Причём, в отличие от Therac-25, в этом случае печальные истории продолжают происходить, и способа прекратить это не видно.

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

В результате случаются ситуации, когда следование указаниям навигатора приводит к плохим последствиям вплоть до смертельных исходов. В американском национальном парке «Долина смерти» это происходило так систематически, что на его сайте уже написано капслоком «DO NOT DEPEND ONLY ON YOUR VEHICLE GPS NAVIGATION SYSTEM». А зимой 2020-го в России двое молодых людей на дороге из Якутска в Магадан доверились маршруту от Google Maps, оказались на давно заброшенной дороге при минус сорока градусах — и в итоге выжил только один из них. Подобные случаи получили название «death by GPS».

Разумеется, это не значит, что GPS-навигация — плохая технология (наверняка в мире гораздо больше людей, которых она спасла от смерти). Но это подчёркивает, что от качества работы софта мы зависим не только когда хотим запустить сериальчик за едой, но и в моменты с самой высокой ценой ошибки. И возникает много вопросов: например, должны ли производители навигационного софта нести в связи с такими ошибками какую-то ответственность?

Выводы

Есть и ситуации, которые не назвать багами, но там тоже сложности связаны с «поумнением» вещей: например, когда фермеры вынужденно становятся хакерами, чтобы починить собственный трактор. И если почитать много такого подряд (например, твиттер-аккаунт Internet of Shit), сразу хочется сбежать в лес, где ещё нет всего этого безумия. 

Поэтому мой текст может показаться луддитским: мол, мы как человечество свернули не туда, нам надо срочно выкинуть всё «умное» и больше не прикасаться ни к чему сложнее молотка. 

Но на самом деле я не хочу запугать — только заставить задуматься. Думаю, что тут (как и во всём остальном) надо не бросаться в крайности, а взвешивать трейд-оффы: чем мы готовы поступиться ради чего. Где-то лучше без умных устройств, а где-то их плюсы многократно перевешивают, решение надо принимать в каждом конкретном случае.

И да, мы всё сильнее зависимы от облака, которое может падать, что печально. Но мы уже давно от электричества зависим, а оно тоже может пропадать. Мы ведь не делаем из этого вывод «давайте вернёмся в каменный век», а делаем другие выводы: например, «в загородном доме не помешает бензиновый генератор». 

Вот и в случае с IoT тоже можно пользоваться благами прогресса, но в то же время располагать «запасным планом» на случай отказа этих благ.

Напоследок — минутка рекламы по косвенно связанному поводу. Мы много лет проводим конференцию по тестированию Heisenbug, в числе прочего там был и доклад о тестировании IoT-проекта. Но вообще, если борьба с багами присутствует в вашей жизни в любом виде, то там почти наверняка найдёте что-то актуальное для себя. Ближайший Heisenbug пройдёт 12–14 апреля, подробности и билеты — на сайте, программа позже появится там же.

© Habrahabr.ru