К 2030 году в мире ожидается уже 24 млрд подключенных устройств. Эта статистика учитывает многие бытовые системы и аксессуары: умные часы, фитнес-браслеты, колонки с интеллектуальными голосовыми помощниками и устройства, которыми они управляют. А еще в нее входят умные банкоматы, POS-терминалы, камеры видеонаблюдения. Все это устройства, которым пользователь регулярно доверяет чувствительные данные, но безопасностью которых не может полностью управлять.
При этом число атак на устройства Интернета вещей (IoT) увеличивается как в России, так и в мире. И несмотря на то что вендоры стараются это не акцентировать, проблема безопасности IoT становится все существеннее, особенно когда речь идет об экосистемах из нескольких связанных устройств.
Например, исследователи Check Point в 2020 году провели эксперимент, суть которого сводилась к атаке на сеть через умную лампочку. В результате им удалось загрузить собственную прошивку на отдельную умную лампочку, с ее помощью установить вредоносное ПО на контролирующее сети лампочек устройство, а затем и проникнуть в локальную сеть. Найденную уязвимость быстро закрыли, но где гарантии, что подобное нельзя повторить через другие дыры в безопасности IoT?
Еще хуже дело обстоит с уязвимостью, найденной в корейских умных замках KeyWe. Исследователи обнаружили не только недочеты в процессе генерации ключей, но и фундаментальные проблемы в самом дизайне устройств. Это позволяло атакующему достаточно легко перехватывать и расшифровывать пароли от замков. При этом обновление ПО устройства при помощи патча безопасности оказалось невозможно ― закрыть уязвимость можно только в новых замках с исправленным конструктивным изъяном.
Последний пример хорошо показывает, что пробелы в безопасности IoT могут существовать еще на уровне проектирования системы. Для того чтобы избежать таких проблем, сразу несколько вендоров в последние годы обратились к микроядерным ОС ― операционным системам, которые построены на базе микроядра. C такой архитектурой ядро системы содержит в несколько раз меньше кода, выполняет только самый необходимый набор функций и потому становится более надежным и отказоустойчивым.
Как микроядерные ОС стали популярнее, чем привычные Windows и Android
Если вы попросите пользователей ПК назвать самую распространенную операционную систему, то наверняка услышите: Windows. Действительно, ее доля составляет 72% мирового рынка ― если считать по числу компьютеров с этой ОС на борту. Но мало кто из пользователей задумывается, что происходит чуть глубже: в прошивках чипов и микроконтроллеров. На этом уровне самая распространенная операционная система — микроядерная MINIX. Именно она используется в составе прошивки Intel ME 11. Сегодня эта ОС есть во всех ПК и ноутбуках с процессорами Intel, а это две трети рынка процессоров с архитектурой х86.
Аналогично выглядит картина и на рынке мобильных, носимых и встраиваемых устройств. Здесь другой признанный фаворит ― Android. Но если копнуть глубже, то и на этом рынке микроядерные ОС встречаются не менее часто, хоть и остаются в тени. Одной из старейших реализаций микроядерной архитектуры, которая отметилась на мобильном рынке, является QNX. Эта ОС начинала свой путь еще в 1980-е в критически важных промышленных машинах, нашла применение в морских радиолокационных станциях. Более современная версия QNX Neutrino успешно работала в планшетах и смартфонах BlackBerry, в маршрутизаторах Cisco, а сегодня используется в прошивках сотен миллионов авто.
Не стоит забывать и другие устройства с микроядерными прошивками: например, системы на базе семейства ядер L4, такие как модемы Qualcomm и автосистемы на базе OKL4, пик популярности которых пришелся на 2012 год.
Да, MINIX с L4 — это, несомненно, не самые актуальные разработки. Кто-то, возможно, даже назовет их «винтажными». Но эволюция микроядерных ОС на этом не остановилась: их продолжают развивать сразу несколько создателей современных умных экосистем:
- Микроядерная ОС под кодовым названием Horizon лежит в основе прошивок игровых консолей Nintendo Switch. Причем информация о самой ОС доступна публике лишь ограниченно ― Horizon является закрытой проприетарной разработкой, поэтому мы знаем о ней не всё.
- В январе 2023 года журналисты 9to5google также выяснили, что новая колонка Google Nest скорее всего будет поставляться уже с установленной Fuchsia ― системой с микроядром Zircon в основе.
- В ноябре 2022 года Huawei отчитался о 320 миллионах устройств с HarmonyOS ― операционной системой, которая имеет микроядерную реализацию c ядром HongMeng для носимых девайсов и IoT.
К концу 2022 года доля устройств на HarmonyOS достигла 2% от всех мировых продаж смартфонов. А уже в апреле 2023-го пользователей ждет новая версия HarmonyOS 3.1. Разработчики HongMeng 3.1 анонсировали, что к апрельскому релизу проделан большой путь по оптимизации работы системы.
Причина активности вендоров в этом направлении, с одной стороны — развитие рынка Интернета вещей. А с другой ― кризис доверия к традиционной наложенной защите, которая неэффективна в мире IoT.
Что помогает создателям микроядерных прошивок защищать системы IoT
Как мы уже видели на примере взлома умных лампочек, в основе систем Интернета вещей нередко лежит множество связанных между собой микроконтроллеров и датчиков. Мишенью для атак часто становятся именно незащищенные конечные устройства: злоумышленники пытаются использовать их как точку входа, чтобы затем завладеть всей системой за счет эскалации привилегий. Оснащать каждое маленькое устройство навороченными защитными механизмами экономически нецелесообразно. В такой ситуации возникает две фундаментальные проблемы:
- Доверие (trustworthiness). Все мы хотим доверять защите, которая встроена в систему. В случае с IoT мы имеем множество мелких элементов, которым мы не можем доверять. Есть два варианта решения этой проблемы: попытаться максимально защитить каждый из них ― или сразу признать их ограничения и выстроить систему так, чтобы даже наличие таких элементов не влияло на безопасность в целом.
- Контроль взаимодействий. В большой системе все элементы, как правило, не находятся в вакууме, а «общаются» между собой и даже нередко обладают привилегиями на совершение каких-то действий друг с другом. В системе, где мы не можем доверять всем элементам, эти взаимодействия и привилегии нужно ограничивать и отслеживать с помощью каких-то средств контроля.
Вот как эти проблемы решают микроядерные ОС:
- Позволяют определить доверенные и недоверенные компоненты. В микроядерных операционных системах архитектура строится вокруг множества коммуницирующих между собой изолированных компонентов, которые условно можно разделить на недоверенные и доверенные. К доверенным компонентам можно отнести микроядро ― оно выполняет только самые необходимые функции и содержит в себе как можно меньше строк кода, а все драйверы, файловые системы и так далее ― вынесены в отдельные компоненты за пределы ядра. Это позволяет ограничить необходимый и достаточный минимум элементов системы, коду которых мы вынуждены доверять.
- Изолируют и выносят большинство привилегированных компонентов в режим пользователя. Ядро в микроядерных ОС отвечает за изоляцию компонентов: каждый из них находится в своем адресном пространстве. Микроядро предоставляет механизм передачи сообщений между изолированными компонентами, планирует потоки, управляет памятью, таймерами и прерываниями.
При этом доверенные и недоверенные компоненты, которые выполняются в режиме пользователя, имеют ровно столько привилегий, сколько нужно для выполнения их задач. - Имеют дополнительные возможности и средства контроля взаимодействий. В микроядерной операционной системе любое действие приравнивается к посылке сообщения (коммуникации). Как мы уже говорили, ключевым механизмом передачи сообщений управляет микроядро. Помимо этого, в микроядерных ОС часто используется механизм object capabilities, который позволяет в том числе контролировать установление новых каналов связи.
Чем меньше строк доверенного кода в системе, тем лучше ― этот код проще и быстрее проверить на отсутствие ошибок. Именно поэтому производители таких ОС стремятся сделать микроядро как можно меньше ― так проще подтвердить доверие к нему (к этому еще вернемся чуть ниже).
Единственное, чего порой не хватает во всех этих механизмах, ― так это способов проверки доверия. Да, части компонентов мы вынуждены доверять, но как насчет «доверяй, но проверяй»? Как нам перейти от понятия trusted (доверенного по умолчанию) к trustworthy (заслуживающему доверия)?
Убедиться в том, что элемент заслуживает доверия, можно разными способами: тестами, различными методами анализа, формальной спецификации и верификации. Все эти методы позволяют реализовать проверяемую безопасность, при которой наша уверенность основана не на авторитете разработчика, а на результатах воспроизводимой проверки. На этом строятся многие признанные модели безопасности, например MILS, или стандарты оценки и критерии безопасности наподобие common criteria. По нашим прогнозам, применение таких методов и моделей будет только расширяться.
В ближайшем будущем микроядерные ОС новых поколений обеспечат проверяемую безопасность и кибериммунитет
Благодаря длительному исследованию лучших практик защиты мы заложили методы проверяемой безопасности в основу нашей собственной кибериммунной методологии ― подхода к созданию IT-систем, безопасных по умолчанию. Кибериммунитет является реализацией подхода Secure by Design ― конструктивной безопасности, ― где задачам ИБ уделяют внимание на каждом этапе разработки.
В кибериммунных системах типизированы и проверены все взаимодействия: в частности, в качестве средства контроля коммуникаций выступает специальный монитор обращений. Этот модуль обладает возможностью интроспекции всех данных, передаваемых между процессами, и может использовать их при принятии решений, касающихся безопасности. Для подтверждения доверия применяется тестирование, статический и динамический анализ, фаззинг, пентесты и формальные методы.
Микроядерная операционная система KasperskyOS ― первая ОС, которая поддерживает такой подход и выступает платформой для создания кибериммунных продуктов. Но в целом эта методология объединяет в себе лучшие принципы безопасности и мало зависит от инструментов реализации. Так что мы ожидаем, что подобные подходы станут шире применяться и в других микроядерных прошивках устройств.