Шлемы Oculus Rift почти сутки не работали из-за просроченного сертификата подписи кода

7 марта 2018 года владельцы шлемов виртуальной реальности Oculus Rift попали в крайне неприятную ситуацию. В один день их гаджеты внезапно перестали работать, выдав ошибку «Can’t Reach Oculus Runtime Service».

Как выяснилось, проблема возникла из-за истечения срок действия сертификата подписи кода для динамической библиотеки OculusAppFramework.dll, которая входит в состав Oculus Runtime Service. Она просто не загружалась. В файле указан срок истечения сертификата:

Valid to: ‎Wednesday, ‎March ‎7, ‎2018 01:00:00 PM

В данном случае сотрудники Oculus проявили полную некомпетентность. Дело даже не в том, что они забыли продлить сертификат, а в том, что файл был подписан некорректно. Они пренебрегли контрольной подписью от сервера штампов времени (timestamping server). Если бы они поставили эту подпись, то файлы были бы подписаны навсегда, потому что подпись от сервера штампов времени подтверждает валидность сертификата в момент подписи файла, так что в дальнейшем дату на сертификате можно не проверять. Но поскольку в Oculus пренебрегли этой подписью, то библиотека перестала загружаться в тот момент, когда истёк сертификат, то есть 07.03.2018 в 01:00:00 PM.

Подпись драйверов стала обязательной с версии Windows 10 build 1607. Драйверы без подписи просто не загружаются, за некоторыми исключениями (например, при отключенной опции Secure Boot или если файл подписан кросс-сертификатом, выданным до 29 июля 2015 года).

Как показало расследование, подпись от сервера штампов времени исчезла после апгрейда Oculus с версии 1.22 на 1.23, который состоялся чуть больше месяца назад. Причина произошедшего пока не ясна. Высказываются версии, что подпись могла не поставиться при автоматической сборке, если в этот момент времени сервер штампов времени был в дауне.

Компания в течение суток выпустила патч, заменяющий файл OculusAppFramework.dll в системе. Для запуска патча в операционной системе Windows нужно отключить антивирус (в Windows Defender достаточно перейти по ссылке More info и нажать кнопку Run Anyway). После установки патча Oculus Runtime Service обновляется с сервера — и шлем работает снова.

Патч появился утром 8 марта. То есть из-за этого, без преуменьшения, разгильдяйства сотрудников компании все шлемы Oculus Rift в мире вышли из строя почти на сутки. Таковы последствия одного неправильного сертификата подписи кода.

Сооснователь компании Нейт Митчелл принёс публичные извинения и пообещал раздать всем пострадавшим кредиты в Oculus Store на сумму 15 долларов.

Поначалу кредиты раздавали только тем, кто специально обратится за ними. Дело в том, что шлемы VR по-прежнему загружались в режиме Oculus Home, где можно совершать некоторые действия. Так что пострадавшими формально стали не все пользователи. Но позже появилось сообщение, что в течение семи суток кредиты должны начислить всем, кто установил обновление.

Какие выводы можно сделать из этой истории?

Пострадали тысячи пользователей. Из-за собственной оплошности и сама компания понесла ущерб, если она действительно начислила по $15 кредита значительной части пользователей Oculus Rift. Компании повезло, что она не получила судебные иски от крупных клиентов — ведь системы VR от Oculus используются и в корпоративном секторе: например, для проведения презентаций, промоакций и т. д. Один из клиентов сказал, что 6 марта их компания проводила большую презентацию для крупного бренда. Если бы проблема с сертификатом случилась на день раньше, то мероприятие пришлось бы отменить.

Другой пострадавший говорит, что их стартап уже несколько месяцев разрабатывал программное обеспечение для обучения хирургов в среде VR. На прошлой неделе они готовились провести презентацию на большой медицинской конференции, но шлемы Oculus Rift вышли из строя утром в день конференции. К счастью, один программист компании быстро разобрался в проблеме — и выяснил, что можно запустить программу, если откатить системные часы Windows на пару дней назад.

Единственный истёкший сертификат мог вылиться в более серьёзные финансовые убытки для Oculus, чем по 15 долларов кредита для всех пострадавших пользователей. Можно представить, что шлемы VR и другие устройства Интернета вещей распространятся повсеместно. Например, будут использовать в реальных хирургических операциях — и тут внезапно все одновременно выйдут из строя в один момент из-за подобной программной ошибки.

Невнимательность со сроком действия сертификата подписи кода — целиком вина Oculus, и никого иного. Если забыть прикрепить подпись от сервера штампов времени, то подписанные файлы фактически превращаются в «бомбу замедленного действия», которая взорвётся как только истечёт срок действия сертификата. Например, GlobalSign выдаёт сертификаты подписи кода сроком на 1, 2 и 3 года

Кто-то может спросить, зачем вообще устанавливать эту «бомбу замедленного действия» в своё программное обеспечение, то есть зачем подписывать код. Но иного выхода нет: таково требование Microsoft для определённых категорий файлов. Если исполняемый код под Windows подписан, то практически в любой момент можно «запретить» его выполнение на всех компьютерах. Это компромисс между свободой и безопасностью. В данном случае выбор сделан в пользу безопасности. Так что вина за подобные инциденты в каком-то смысле лежит и на корпорации Microsoft, которая создала «единую точку отказа» для защиты от инъекций кода.

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

Oculus не распространяется через Windows Store и не платит Microsoft 30% отчислений (по крайней мере, пока). Но для системных драйверов она обязана внедрить подпись кода для защиты от инъекции и гарантии сохранности оригинальных файлов. Хотя в конце концов Microsoft наверняка рассчитывает привлечь и Oculus, и всех остальных разработчиков в свой Windows Store.

Так или иначе, но у разработчиков практически не остаётся выхода. Приходится использовать сертификаты. Но в то же время нужно быть осмотрительным, чтобы избежать таких инцидентов, как у Oculus.

FavoriteLoadingДобавить в избранное
Posted in Без рубрики

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *