iXBT.com начинает публикацию переводов аналитических материалов известных англоязычных IT-блоггеров и журналистов. Новые статьи будут выходить в разделе iT-среда три раза в неделю. Если у вас есть пожелания по рубрике, любые соображения или замечания — пишите в комментариях к статье!
Я всегда это знал (и, уверен, большинство из вас тоже), но об этом никогда не говорят. В каждом смартфоне и вообще любом устройстве с коммуникационными функциями (напр. 3G или LTE) работает не одна, а две операционные системы. Помимо операционной системы для конечного пользователя (Android, iOS, PalmOS) есть также маленькая система для управления всем, что касается радиосвязи. Эта функциональность критически зависит от времени, в силу чего требуется операционная система реального времени.
Эта операционная система хранится в прошивке и работает на коммуникационном процессоре. Насколько я знаю, эта RTOS (операционная система реального времени) всегда полностью проприетарна. Так, в коммуникационных процессорах Qualcomm (например, MSM6280) RTOS называется AMSS. Она основана на собственном проприетарном ядре REX и выполняет до 69 одновременных процессов, отвечающих за функционирование модулей от USB до GPS. Система работает на процессоре ARMv5.
Проблема очевидна: данные коммуникационные программы и проприетарное закрытое ПО, которое на них работает, мало изучены, по ним нет экспертных обзоров. И это очень странно, учитывая огромную роль этого софта в функционировании современного коммуникационного устройства. Можно предположить, что коммуникационные RTOS обладают высокой безопасностью и защищенностью, однако это не так. Можно иметь на смартфоне самую безопасную мобильную операционную систему в мире, но при этом там будет еще одна — малоизвестная, плохо задокументированная, проприетарная, в которой мы полностью зависим от Qualcomm, Infineon и др.
Низкий уровень безопасности коммуникационного ПО — это не ошибка, а часть плана. Те стандарты, которые описывают коммуникационные процессоры и работу радиоинтерфейсов, были разработаны в 80-е годы. Между тем, в 90-е для них были написаны большие объемы сложного кода с характерным для 90-х подходом к безопасности. Например, там нет защиты от эксплойтов, и они могут там легко запускаться. Что еще хуже, каждый коммуникационный процессор по определению доверяет любым данным, которые получает с базовой станции (напр. сотовой связи). Никаких проверок, все данные считаются доверенными автоматически. Наконец, коммуникационный процессор обычно является мастером, тогда как прикладной (на котором работает мобильная ОС) — слейвом.
Таким образом, у нас есть законченная операционная система на ARM-процессоре безо всякой (или с очень небольшой) защиты от эксплойтов, которая автоматически доверяет любым инструкциям, любому коду и данным, которые получает от базовой станции, к которой вы подключены. Какие могут возникнуть проблемы?
Специалист по безопасности Ральф-Филипп Вейнман из Люксембургского университета подверг реинжинирингу ПО коммуникационных процессоров Qualcomm и Infineon и нашел огромное количество ошибок, каждая из которых является потенциальной уязвимостью. Написанные для них эксплойты могут привести к сбою в устройстве, а удаленный злоумышленник может даже получить возможность выполнить код. И учтите: все это делается в беспроводном режиме. Одна обнаруженная им уязвимость требовала для выполнения стороннего кода послать всего одно 73-байтовое сообщение. Без подключения проводов.
Такие эксплойты позволяют делать сумасшедшие вещи. Например, с помощью набора команд Hayes можно включить автоответчик. Этот командный язык для модемов был разработан в 1981 году и до сих пор работает на современных коммуникационных процессорах в большинстве смартфонов! Автоответчик можно также сделать бесшумным и невидимым.
Можно подумать, что в базовых станциях крупных операторов мобильной связи все «безопасно», но дело в том, что базовые станции постоянно дешевеют, сейчас их можно купить даже на eBay. Существует открытое ПО для базовых станций. С таких станций можно совершать атаки на телефоны. Ставим «скомпрометированную» базовую станцию в людном месте (или деловом районе, или каком-то другом потенциально интересном месте), и можно удаленно включать микрофоны и камеры, загружать руткиты, звонить и посылать SMS на дорогие номера и т. п. Можно даже полностью выводить телефоны из строя.
Это довольно серьезная проблема, но мы о ней редко слышим. Речь идет о настолько низкоуровневом и сложном ПО, что, я думаю, очень немногие люди в мире хорошо знают, что там происходит.
Эта сложность — одна из причин, почему столь непросто написать собственное коммуникационное ПО. Список стандартов, описывающих один только протокол GSM, невероятно длинный, а это всего лишь GSM. К нему еще нужно добавить UMTS, HSDPA и т. д. и т. п. И естественно, все это окутано абсурдно сложной системой патентов. Ну и наконец, надзорные органы требуют, чтобы коммуникационное ПО было сертифицировано.
Если собрать все это воедино, становится понятно, почему все производители сотовых телефонов используют готовые стандартные коммуникационные процессоры и сопутствующее ПО. Это не значит, что абсолютно в каждом смартфоне какие-то программы постоянно работают (при включенном устройстве), но это практически черный ящик. Если посмотреть, что происходит в коммуникационном ПО, то в нем оказывается масса багов и проблем, что приводит нас к вопросу: сколько еще будет продолжаться эта неопределенная ситуация?
Отрезвляет, когда думаешь, что мобильные коммуникации — краеугольный камень современного мира и в развитых, и в развивающихся странах — основаны на ПО спорного качества, плохо изученном, полностью проприетарном и изначально полностью незащищенном.
OSNews