16.11.13

В каждом мобильном телефоне скрывается вторая операционная система

Мы все это знали, но никогда особенно не говорили об этом: каждый смартфон или другое устройство с возможностями мобильной коммуникации (3G или LTE) на самом деле имеют не одну, а две операционных системы. 

Помимо видимой мобильной ОС, на них работает ещё одна – которая управляет всем, что связано с радио. Поскольку этот функционал сильно зависит от тайминга, ему требуется отдельная операционная система, работающая в реальном времени.

Эта система вшита в корневое ПО и работает на процессоре немодулированной передачи. Насколько известно, эта немодулированная процессорная RTOS всегда полностью проприетарна. К примеру, ОС внутри процессоров Qualcomm (в данном конкретном случае, MSM6280) называется AMSS, построена на собственном проприетарном ядре REX, и состоит из 69 задач, которые управляют всем от USB до GPS. Она работает на процессоре ARMv5.

Проблема здесь очевидна: вы можете иметь самую безопасную мобильную ОС в мире, но при этом на вашем телефоне будет работать вторая скрытая операционная система, которую мало кто понимает, которая плохо задокументирована, полностью проприетарна, и принципы её работы понимают только производители чипов для неё.

Стандарты, по которым работают эти немодулированные процессоры и радио, были созданы в 80-х годах, и в полном соответствии с духом своего времени. К примеру, в них практически не предусмотрено противодействие эксплойтам, так что они могут вести себя так, как им заблагорассудиться. Но что делает вещи ещё хуже – так это то, что каждый процессор немодулированной передачи абсолютно доверяет любой информации, которую он получает от базовой станции (например, от сотовой вышки). Никакие данные не проверяются, всё автоматически считается доверенным. И напоследок – процессор частоты обычно является мастер-процессором, в то время, как процессор мобильной ОС занимает слейв-положение.

Таким образом, мы имеем настоящую операционную систему, работающую на ARM-процессоре, без какой бы то ни было защиты от эксплойтов, которая автоматически доверяет каждой полученной инструкции, куску кода, или данным, переданным от базовой станции, к которой вы подключены. Что только может пойти не так?

С этой мыслью эксперт по безопасности из Университета Люксембурга Ральф-Филипп Вайнманн провёл обратный инжиниринг процессорного ПО от Qualcomm и Infineon, и мгновенно обнаружил огромное количество багов, каждый из которых может привести к эксплойту – завешивая устройство и даже позволяя злоумышленнику удалённо исполнить любой код. Один из найденных им эксплойтов требует не более чем 73-байтного сообщения, чтобы заставить устройство исполнить код злоумышленника. И помните: всё это можно сделать по беспроводному соединению.

Или, к примеру, вы можете включить автоответчик с помощью Хайесовского набора команд. Это командный язык для модемов, созданный в 1981 году, и он до сих пор работает на современных процессорах немодулированной передачи, которые установлены в наших смартфонах. Автоответчик также можно сделать невидимым и беззвучным.

И хотя мы по умолчанию предполагаем, что базовые станции в вышках, которыми управляют крупные сотовые операторы, «безопасны», фактом является то, что базовые станции становятся намного дешевле, и сейчас продаются даже на eBay – и для них есть даже опен-сорсные программные пакеты. Такие станции можно использовать для атаки на телефоны. Поместите подобную станцию в густонаселённой зоне – или даже в финансовом квартале или другой важной области – и вы сможете удалённо включать микрофоны, камеры, размещать руткиты, отправлять вызовы и СМС на дорогие номера, и так далее. И даже превратить все телефоны в радиусе действия в кирпичи.

Это весьма серьёзная угроза, но о ней мало кто слышал. Это настолько низкоуровневое и сложное ПО, что очень немногое число людей в мире действительно понимает, что в нём на самом деле происходит.

Сложность является одной из причин, почему так непросто написать собственные инструкции для этих процессоров. Список стандартов, которые описывают один только GSM, имеет невообразимую длину – и это только GSM. А теперь добавьте к нему UMTS, HSDPA, и так далее и тому подобное. И, разумеется, всё это прикрыто неимоверно запутанным ворохом патентов. А вдобавок ко всему, чиновники по вопросам коммуникаций требуют, чтобы всё подобное ПО было в обязательном порядке сертифицировано.

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

Это весьма неуютная мысль – что мобильные коммуникации, краеугольный камень современного мира как в развитых, так и в развивающихся странах, строятся вокруг ПО, которое имеет очень невысокое качество, которое мало кто понимает, и которое при этом полностью проприетарно и небезопасно просто по своему дизайну.