СПОСОБЫ, СИСТЕМЫ И МАШИНОЧИТАЕМЫЙ НОСИТЕЛЬ ДЛЯ АКТИВНОГО КОНТРОЛЯ, ЗАЩИТЫ ПАМЯТИ И ПРОВЕРКИ ЦЕЛОСТНОСТИ ЦЕЛЕВЫХ УСТРОЙСТВ
METHODS, SYSTEMS AND COMPUTER-READABLE MEDIUM FOR TARGET DEVICES ACTIVE CONTROL, MEMORY PROTECTION AND INTEGRITY CHECKING

Притязание на приоритет
Эта заявки испрашивает приоритет предварительной патентной заявки США №61/679305, поданной 3 августа 2012, раскрытие которой включено здесь по ссылке в полном объеме.
Государственный интерес
Это изобретение было сделано при поддержке грантов №0910767, выданного Национальным научным фондом, W911NF-08-1-0105 и 528787, выданных Исследовательским управлением армии США. Правительство имеет определенные права на это изобретение.
Область техники, к которой относится изобретение
Объект изобретения, описанный здесь, относится к безопасности компьютерных систем. В частности, объект изобретения, описанный здесь, относится к способам, системам, и машиночитаемому носителю для активного контроля, защиты памяти и проверки целостности целевых устройств.
Уровень техники
Ущерб и потери, вызванные атаками и нарушениями защиты, привлекли внимание к разработке безопасных и надежных систем для вычислительных платформ, в том числе мобильных и встроенных систем.
Компьютерные атаки и нарушения защиты могут серьезно влиять на целевые устройства путем выполнения несанкционированной модификации ядра или критических программ операционной системы (OS), таких как пользовательские процессы или демоны управления системой, которые выполняются в целевой системе. В частности, модификация ядра OS может позволить злоумышленникам иметь неограниченный доступ ко всей системе.
Эти проблемы порождают необходимость в разработке нестандартных решений, которые хорошо изолированы от выполняющейся OS, но тем не менее способны активно контролировать целевую систему, в том числе ядро, и обеспечивать необходимую защиту памяти, чтобы гарантировать ее целостность.
Сущность изобретения
Раскрыты способы, системы и машиночитаемые носители для активного контроля, защиты памяти и проверки целостности программного обеспечения, которое исполняется на целевом устройстве. В соответствии с одним способом виртуальный процессор нормального мира и виртуальный процессор безопасного мира инстанцируются на целевом устройстве. Целевая операционная система исполняется на виртуальном процессоре нормального мира. Агент проверки целостности исполняется на виртуальном процессоре безопасного мира. Заранее определенные операции, которые пытаются исполнить на виртуальном процессоре нормального мира, перехватываются виртуальным процессором безопасного мира. Агент проверки целостности используется для определения эффекта выполнения захваченных операций на целевом устройстве.
Способ, в котором использование агента проверки целостности для определения эффекта выполнения перехваченной операции целевого устройства включает в себя выполнение действия по недопущению негативных последствий. Способ, в котором действие по недопущению негативных последствий включает в себя отказ исполнения перехваченной операции, выдачу предупреждения безопасности или выключение целевого устройства.
Способ, в котором агент проверки целостности использует политику безопасности, и в котором выполнение действия по недопущению негативных последствий происходит в ответ на перехваченную операцию, выполняемую для нарушения политики безопасности.
Способ, в котором целевое устройство включает в себя вычислительную платформу, смартфон, PDA, планшетный компьютер, или встроенную систему.
В соответствии с одной системой, система включает в себя виртуальный процессор нормального мира и виртуальный процессор безопасного мира, выполненные с возможностью исполнения на целевом устройстве. Система также включает в себя агент проверки целостности, выполненный с возможностью исполнения на виртуальном процессоре безопасного мира. Система дополнительно включает в себя целевую операционную систему, которая исполняется на виртуальном процессоре нормального мира. Виртуальный процессор нормального мира выполнен с возможностью перехватывать одну или более заданных операций, которые пытаются исполнить на виртуальном процессоре нормального мира. Виртуальный процессор безопасного мира выполнен с возможностью использовать агент проверки целостности для определения эффекта выполнения захваченных операций на целевом устройстве.
Система, в которой захваченные одна или более заданных операций включают в себя критическую по безопасности операцию, привилегированную инструкцию, инструкцию, исполняемую для отключения или модификации защиты доступа к виртуальной памяти, обеспеченной блоком управления памятью (MMU) виртуального процессора нормального мира, инструкцию, исполняемую для модификации одного или более заданных регистров, связанных с процессором или сопроцессором целевого устройства, инструкцию, исполняемую для модификации кода или критических данных только для чтения, связанных с целевым устройством, инструкцию, исполняемую для модификации контроллера прямого доступа к памяти (DMA), связанного с целевой системой, исключение отказа обычных данных или вызов привилегированного режима, используемый для системных вызовов.
Система, в которой перехваченные одна или более заданных операций включают в себя инструкцию, исполняемую для отключения, модификации или подавления агента проверки целостности целевой операционной системы.
Система, в которой виртуальный процессор безопасного мира изолирован и защищен от виртуального процессора нормального мира.
Система, в которой код и данные виртуального процессора безопасного мира не доступны для виртуального процессора нормального мира.
Система, в которой код и данные виртуального процессора нормального мира доступны для виртуального процессора безопасного мира.
Система, в которой целевая операционная система выполнена с возможностью создавать карту виртуальной памяти виртуального процессора нормального мира, которая определяет защиту доступа к памяти привилегированных кодовых страниц как "не перезаписываемые". Система, в которой привилегированная кодовая страница включает в себя вектор обработки прерываний или вектор обработки исключений. Система, в которой карта виртуальной памяти виртуального процессора нормального мира выполнена с возможностью определять защиту доступа к памяти непривилегированных кодовых страниц как "никогда не исполнять привилегированно (PXN)", так что одной или нескольким непривилегированным кодовым страницам запрещено выполнять привилегированную инструкцию или критическую по безопасности операцию, исполняемую привилегированной кодовой страницей.
Система, в которой целевая операционная система выполнена с возможностью перехватывать одну или более заданных операций виртуальным процессором безопасного мира путем переключения контекста исполнения с виртуального процессора нормального мира на виртуальный процессор безопасного мира, так что операция исполняется агентом проверки целостности, выполняющимся в безопасном мире, а не целевой операционной системой, выполняющейся в нормальном мире.
Система, в которой целевая операционная система модифицирована так, чтобы одна или более заданных операций были заменены вызовами, которые перехватывают виртуальным процессором безопасного мира, и при этом перехват критических по безопасности операций включает в себя перехват попыток записи в привилегированную кодовую страницу. Система, в которой целевая операционная система модифицирована путем модификации ее исходного кода, модификации ее исполняемого двоичного кода или двоичной трансляции.
Система, выполняющая статическую проверку целостности целевой операционной система, дополнительно содержит.
Система, в которой агент проверки целостности выполнен с возможностью выполнять действие по недопущению негативных последствий. Система, в которой действие по недопущению негативных последствий включает в себя отказ исполнения перехваченной операции, выдачу предупреждения безопасности или выключение целевого устройства. Система, в которой агент проверки целостности использует политику безопасности, и в которой выполнение действия по недопущению негативных последствий происходит в ответ на перехваченную операцию, выполняемую для нарушения политики безопасности.
Система, в которой целевое устройство включает в себя вычислительную платформу, смартфон, PDA, планшетный компьютер, или встроенную систему.
В соответствии с долговременный машиночитаемым носителем, носитель хранит на нем исполнимые команды, которые при исполнении процессором компьютера управляют компьютером для выполнения этапов, на которых: инстанцируют виртуальный процессор нормального мира и виртуальный процессор безопасного мира на целевом устройстве; исполняют целевую операционную системы на виртуальном процессоре нормального мира; исполняют агент проверки целостности на виртуальном процессоре безопасного мира; перехватывают виртуальным процессором безопасного мира одну или более заданных операций, которые пытаются исполнить на виртуальном процессоре нормального мира; и используют агент проверки целостности для определения эффекта выполнения перехваченной операции целевого устройства.
Объект изобретения, описанный здесь, для активного контроля, защиты памяти и проверки целостности целевых устройств может быть реализован в аппаратных средствах, программном обеспечении, встроенном микропрограммном обеспечении или любой их комбинации. Также, термины «функция» или «модуль», как они используются здесь, относятся к аппаратным средствам, программному обеспечению и/или встроенному микропрограммному обеспечению для реализации описываемой функциональной возможности. В одном иллюстративном варианте осуществления объект изобретения, описанный здесь, может быть реализован с использованием машиночитаемого носителя, хранящего на нем компьютерные исполнимые команды, которые при исполнении процессором компьютера управляют компьютером для выполнения этапов. Иллюстративные машиночитаемые носители, подходящие для реализации объекта изобретения, описанного здесь, включают в себя постоянные машиночитаемые носители, такие как устройства памяти на дисках, запоминающие устройства на интегральных схемах, программируемые логические устройства и специализированные интегральные схемы. Кроме того, машиночитаемый носитель, который реализует объект изобретения, описанный здесь, может быть расположен на одном устройстве или вычислительной платформе или может быть распределен по нескольким устройствам или вычислительным платформам.
Краткое описание чертежей
Теперь объект изобретения, описанный здесь, будет объяснен со ссылкой на прилагаемые чертежи, на которых:
фигура 1 является блок-схемой типового кодирования инструкции MCR; и
фигура 2 является блок-схемой системы для активного контроля и обработки памяти целевого устройства в соответствии с вариантом осуществления объекта изобретения, описанного здесь.
Осуществление изобретения
У нас есть новые методики и механизмы, которые могут решить эти проблемы. Аспекты объекта изобретения, описанного здесь, могут обеспечить основанную на аппаратных средствах изоляцию между виртуальным процессором нормального мира и нормальным процессором безопасного мира. Некоторые процессорные архитектуры, например, архитектура ARM, обеспеченная компанией ARM Holdings plc, обеспечивает такую изоляцию. В ARM эта функциональная возможность известна как технология ARM TrustZone. Технология ARM TrustZone позволяет основанной на аппаратных средствах изоляции разделять исполнение кода на одном физическом ядре процессора на два мира, «безопасный мир» и «нормальный мир» (или «небезопасный мир»). Безопасный мир предназначен для операций, требующих особых мер обеспечения безопасности, в то время как нормальный мир предназначен для других операций.
В некоторых вариантах осуществления мы размещаем целевую операционную систему, которая должна быть защищена, в нормальном мире, а наши проверенные компоненты в безопасном мире. Это размещение может быть реализовано на множестве архитектур. Хотя некоторые аспекты объекта изобретения, описанного здесь, используют архитектуру ARM TrustZone, следует иметь в виду, что способы и методики, описанные здесь, могут быть реализованы на других процессорных архитектурах, известных сейчас или тех, которые могут быть разработаны в будущем.
Целевая операционная система в принципе может быть любой операционной системой, такой как Android, встроенный Linux, NetBSD или любой другой OS, известной сейчас или той, которая может быть разработана в будущем. В некоторых вариантах осуществления целевая операционная система может включать в себя ядро, которое ответственно за управление ресурсами устройства. В некоторых вариантах осуществления код ядра ОС может исполняться в «привилегированном режиме», и ему может быть позволено исполнять привилегированные инструкции и критические по безопасности операции.
В некоторых вариантах осуществления целевое устройство может иметь несколько пользовательских процессов и/или демонов, которые исполняются в непривилегированном «пользовательском режиме», и им может быть не позволено исполнять привилегированные инструкции и критические по безопасности операции.
В некоторых вариантах осуществления одна или более заданных операций, таких как критические по безопасности операции и привилегированные инструкции, которые пытаются исполнить на виртуальном процессоре нормального мира, перехватываются виртуальным процессором безопасного мира. Например, перехват критической по безопасности операции или привилегированной инструкции может включать в себя переключение контекста исполнения с виртуального процессора нормального мира на виртуальный процессор безопасного мира. В этом примере критическая по безопасности операция или привилегированная инструкция могут быть исполнены агентом проверки целостности, выполняющимся в безопасном мире, а не целевой операционной системой, выполняющейся в нормальном мире.
В некоторых вариантах осуществления агент проверки целостности может использоваться для определения эффекта исполнения перехваченных операций на целевом устройстве.
В некоторых вариантах осуществления целевая ОС, выполняющаяся на виртуальном процессоре нормального мира, может быть модифицирована так, чтобы она не могла выполнять заранее определенные критические по безопасности операции или привилегированные инструкции без перехвата заданных операций или инструкций агентом проверки целостности, выполняющимся на виртуальном процессоре безопасного мира. Например, ядро целевой операционной системы может быть модифицировано так, чтобы все привилегированные инструкции были удалены из его исполняемого двоичного кода. Например, инструкции с привилегиями по безопасности включают в себя, но не ограничиваются только этим, инструкции, которые управляют блоком управления памятью (MMU) целевого устройства.
В некоторых вариантах осуществления модифицированный исполняемый двоичный код может быть отмечен как код только для чтения, чтобы избежать потенциально вредоносных модификаций, например, несанкционированной инструкции добавить привилегированные инструкции обратно в двоичных код.
В некоторых вариантах осуществления способ в соответствии с аспектами объекта изобретения, описанного здесь, может включать в себя то, что непривилегированные программы (например, пользовательские процессы) целевой операционной системы отображаются в памяти как «никогда не исполнять привилегированно», таким образом, им не позволено исполнять привилегированные инструкции, даже если они злонамеренно модифицированы.
В некоторых вариантах осуществления модифицирование OS нормального мира может быть выполнено путем использования любой из известных методик прямой модификации ее исходного кода, модификации ее исполняемого двоичного кода или использования двоичной трансляции.
В некоторых вариантах осуществления способ в соответствии с аспектами объекта изобретения, описанного здесь, может дополнительно включать в себя использование защиты доступа к памяти для предотвращения получения требуемого доступа к памяти целевой операционной системы для исполнения критических по безопасности операций. Например, критические по безопасности операции могут включать в себя, но не ограничиваются только этим, модификацию таблиц страниц, которые определяют распределение памяти системы, или модификацию контроллера прямого доступа к памяти (DMA). Контроллер DMA может определять, какая память доступна для периферийных устройств. Атаки могут попытаться использовать контроллер DMA, чтобы использовать периферийные устройства для модификации кода или данных виртуального процессора нормального мира.
В некоторых вариантах осуществления способ в соответствии с аспектами объекта изобретения, описанного здесь, может включать в себя обнаружение нарушения целостности целевого устройства, когда агент проверки целостности обнаруживает попытку исполнить привилегированную инструкцию или критические по безопасности операции, которые нарушают заранее определенную политику. Например, политика может включать в себя, но не ограничивается только этим, запрет модификации исполняемых двоичных кодов OS нормального мира, отключения защиты доступа к памяти OS нормального мира или модификации структур критических данных только для чтения OS нормального мира.
Технические возможности
Наша основная цель состоит в том, чтобы предотвратить попытки нарушения защиты, в которых пытаются модифицировать целевое устройство или часть в нем, например, операционную систему нормального мира.
В некоторых вариантах осуществления аспекты объекта изобретения, описанного здесь, могут содержать методики и/или способы для обнаружения вредоносных атак путем генерации актуального отчета о статусе целостности операционных систем нормального мира.
В некоторых вариантах осуществления аспекты объекта изобретения, описанного здесь, могут содержать методики и/или способы, которые могут содержать предотвращающие инструкции и/или операции, которые могут приводить к нарушению целостности операционной системы нормального мира до того, как они будут исполнены.
В некоторых вариантах осуществления аспекты объекта изобретения, описанного здесь, могут содержать методики и/или способы для обнаружения или предотвращения вредоносных атак или комбинацию обоих.
Для достижения этих целей аспекты объекта изобретения, описанного здесь, могут обеспечить способы, модули и/или устройства, которые включают в себя одну или более следующих возможностей:
1) Активный контроль критических событий нормального мира, включая критические по безопасности операции и привилегированные инструкции, и распознавание их воздействия на состояние операционных систем нормального мира.
2) Полный контроль над схемой распределения памяти нормального мира так, чтобы безопасный мир мог подтвердить, что проверенными программами нормального мира нельзя манипулировать после их загрузки, и что непроверенные программы нормального мира не могут исполнять привилегированные инструкции или критические по безопасности операции. Мы обозначаем эту возможность как «защиту памяти».
3) Проверка целостности, которая может быть основана на заранее определенной политике безопасности. Входные события, используемые для проверки, нарушена ли одна или более политик безопасности, могут следовать из (упомянутого выше) активного контроля и/или защиты памяти.
Предположения
В некоторых вариантах осуществления агент проверки (измерения) целостности может исполняться как часть безопасного мира, в то время как целевая операционная система работает или исполняется в нормальном мире.
В некоторых вариантах осуществления безопасный мир может делать проверку во время загрузки ядра нормального мира посредством вычисления контрольной суммы загруженного двоичного кода (этот процесс широко известен как статическая проверка).
В некоторых вариантах осуществления проверка во время загрузки может также распространяться на проверку того, что ядро нормального мира должным образом модифицировано для нашей планируемой защиты путем удаления всех привилегированных инструкций из его двоичных кодов.
Идея использовать изолированный или защищенный компонент для проверки системы общего назначения описана в Графинкел и др., «Terra: Основанная на виртуальной машине платформа для доверительных вычислений», SOSP (2003) (Grafinkel et al., «Terra: A Virtual Machine-Based Platform for Trusted Computing,» SOSP (2003)), раскрытие которой включено здесь по ссылке в полном объеме. Интуитивно понятно, что статическая проверка гарантирует только целостность ядра нормального мира во время процесса начальной загрузки, но оно не может гарантировать целостность ядра после того, как система загружается и начинает взаимодействовать с потенциальными злоумышленниками.
В некоторых вариантах осуществления ядро ОС является единственным программным обеспечением, исполняющим привилегированные инструкции на виртуальном процессоре нормального мира. Кроме того, ядро не может полагаться на смешанные перезаписываемые и исполняемые страницы. Посредством нашей экспериментальной оценки мы обнаружили, что многие из свежих версий ядер ОС (например, Android и Linux) следуют этому предположению, отделяя исполняемый код от перезаписываемых данных.
Модель угрозы:
В некоторых вариантах осуществления способ в соответствии с аспектами объекта изобретения, описанного здесь, рассматривает все атаки, которые стремятся незаметно исполнить код в операционной системе нормального мира. В этом контексте «незаметно» означает, что код будет исполняться без обновления агента проверки целостности, который выполняется в безопасном мире. Такие атаки могут выполняться или путем загрузки новых непроверенных двоичных кодов или путем модификации двоичных кодов, которые были ранее отображены и уже существуют в памяти. Мы проектируем нашу систему так, чтобы справляться с обоими случаями.
В некоторых вариантах осуществления способ в соответствии с аспектами объекта изобретения, описанного здесь, может дополнительно рассматривать все атаки, которые имеют целью модификацию критических по безопасности данных в операционной системе нормального мира. В этом контексте критические по безопасности данные должны быть заранее заданными, чтобы агент проверки целостности контролировал их модификацию.
Злоумышленники могут использовать любую существующую уязвимость системы для взлома операционной системы нормального мира, в том числе уязвимости ядра, которые позволят им управлять ядром нормального мира. Мы гарантируем, что наша система должна обнаружить и/или предотвратить любую из этих уязвимостей, при условии, что они включают в себя загрузку нового кода или изменение существующего кода.
Тем не менее есть специальный тип атак, который не требует изменения или загрузки кода, который является ориентированной на возврат атакой. Хотя наша система не может обнаружить ориентированные на возврат атаки, потому что они полагаются исключительно на уязвимости данных, мы гарантируем, что эти атаки не будут подрывать наш активных контроль и защиту памяти путем загрузки новых программ (например, вредоносных приложений), не будучи обнаруженными агентом отслеживания целостности в безопасном мире.
Технические проблемы активного контроля и защиты памяти в системах на основе TrustZone
В некоторых вариантах осуществления одна иллюстративная конструкция нашей системы основана на ARM TrustZone. Несмотря на то, что это дает более сильную основанную на аппаратных средствах защиту, это ограничивает возможности тесного управления отслеживаемой целью (операционной системой нормального мира). Далее мы обсуждаем основные проблемы и ограничения, которые возникают при реализации активного контроля и защиты памяти в вариантах осуществления, которые используют контроль целостности на основе ARM TrustZone.
1. Защита памяти, обеспеченная TrustZone: Основной целью технологии TrustZone является создание аппаратно-изолированной среды, которая предотвращает доступ нормального мира к критическим по безопасности ресурсам (памяти безопасного мира и периферийным устройствам). Однако такая изоляция, в принципе, дает любому из этих двух миров полный контроль над его собственными ресурсами. Таким образом, ядро нормального мира имеет полный контроль над назначенной ему физической памятью, что включает в себя полностью конфигурирование блока управления памятью (MMU) и присвоение прав доступа (например, только для чтения, перезаписываемый, исполнимый) его страницам отображаемой памяти. Интуитивно понятно, что такая архитектура порождает проблемы для компонентов безопасного мира при контроле и защите критических областей памяти, которые принадлежат нормальному миру.
2. Прерывания и обработка исключений в TrustZone: Хотя TrustZone позволяет безопасному миру выбрать ряд событий, которые будут обрабатываться безопасным миром. Эти события ограничены внешними прерываниями (IRQ или FIQ) и определенными типами исключений (например, отказ внешних данных). Однако, другие типы исключений и критических событий (например, исключений отказа обычных данных или вызовов привилегированного режима, используемых для системных вызовов) не могут быть сконфигурированы для перехвата безопасным миром и обрабатываются непосредственно нормальным миром. Интуитивно понятно, что такие события могут влиять на статус целостности нормального мира. Если эти события не перехватываются безопасным миром, такое влияние на целостность может остаться незамеченным агентом контроля целостности.
Предложенная методика
Аспекты объекта изобретения, описанного здесь, позволяют осуществлять активный контроль нормального мира путем перехвата критических событий безопасным миром. Кроме того, мы используем эту методику активного контроля для обладания контролем над распределением виртуальной памяти нормального мира, так что она может обеспечить полную защиту памяти нормального мира, используя флаги разрешения доступа к виртуальной памяти.
Прежде чем мы представим нашу методику, мы кратко описываем уровень техники для трех архитектурных принципов процессоров ARM v7, которые относятся к вариантам осуществления, которые реализуют аспекты объекта изобретения, описанного здесь, на архитектуре ARM v7. Как упоминалось выше, следует иметь в виду, что способы и методики настоящего описания могут быть реализованы на любой, отличной от ARM v7, которая используется в этой иллюстративной конструкции, архитектуре процессора, известной сейчас или той, которая может быть разработана в будущем.
Поддержка сопроцессора ARM: Архитектура ARM v7 поддерживает сопроцессоры для расширения функциональности процессора ARM v7. Инструкции сопроцессора обеспечивают доступ к шестнадцати сопроцессорам (от 0 до 15). Сопроцессор 15 (CP15) обеспечивает системные управляющие регистры, которые управляют большинством системных функциональных возможностей процессора и памяти (например, MMU, обработчиком вектора прерываний, кэширование, моделью выполнения).
Управляемый доступ к сопроцессору CP15: Доступ к CP15 ARM v7 для чтения и записи может быть выполнен посредством специальных команд (например, MCR и LDC). Он ограничен, так что его имеет только привилегированное программное обеспечение (то есть, код ядра). Кроме того, архитектура системы виртуальной памяти ARM v7 может указать, что только определенный набор страниц памяти может исполняться в привилегированном режиме, используя разрешение доступа «Привилегированный не исполняемый» (PXN).
Выровненный собственный код: Набор команд ARM (thumb или arm) состоит из собственного кода, который состоит из последовательности 32-разрядных или 16-разрядных выровненных отдельных двоичных инструкций. Каждая двоичная инструкция включает в себя код операции и операнды в одном 32-разрядном или 16-разрядном двоичном слове.
Наш активный контроль можно обобщить в следующих основных принципах:
Нормальный мир инициализируется так, что он позволяет только некоторым диапазонам памяти (определенным с помощью управления доступом к виртуальной памяти) исполнять привилегированный код.
В некоторых вариантах осуществления это может быть сделано путем загрузки проверенного предварительно сконфигурированного начального образа нормального мира.
В некоторых вариантах осуществления эти привилегированные страницы памяти отмечены как не перезаписываемые и тщательно проверяются так, чтобы они не содержали ни одной инструкции, которая выполняет некоторые привилегированные операции (например, инструкций, которые модифицируют критические регистры в CP15 архитектуры ARM v7), для нормального мира будет невозможно выполнить эти инструкции. Следовательно, ядро нормального мира будет не в состоянии модифицировать функциональности процессора, которыми управляют эти инструкции (например, функциональности, которыми управляют конкретные критические регистры CP15 архитектуры ARM v7).
В некоторых вариантах осуществления эти критические инструкции все вместе могут быть единственным способом для управления управлением доступом к виртуальной памяти виртуального процесса нормального мира.
Иллюстративный вариант осуществления среды с активным контролем и защитой памяти будет реализован с использованием одного или более следующих этапов:
1. После инициализации целевого устройства может конфигурироваться карта виртуальной памяти нормального мира (нормальным или безопасным миром) так, чтобы страницы привилегированного кода, которые включают в себя прерывания и векторы обработки исключений, были отмечены как не перезаписываемые.
2. Все другие отображаемые страницы нормального мира, которые принадлежат ядру или пользовательским процессам, могут быть помечены как PXN страницы, так что даже если они модифицируются позже, им никогда не позволено исполнять привилегированные инструкции (например, те, которые осуществляют доступ к конкретным критическим по безопасности регистрам CP15 ARM v7), которые модифицируют статус нормального мира.
3. Все таблицы страниц, которые используются для определения схемы распределения памяти нормального мира и управления доступом, могут быть помечены как не перезаписываемые. Таким образом, любые модификации таблиц страниц вызовут исключение отказа данных. В некоторых вариантах осуществления на эти таблицы страниц могут указывать базовые регистры адресной таблицы (TTBR) CP15 ARM v7 или любой другой регистр с подобной функциональностью в другой архитектуре.
4. Не перезаписываемые страницы ядра могут модифицироваться так, что вызов к виртуальному процессору безопасного мира (например, инструкция безопасного вызова монитора (SMC)) заменяет критические по безопасности операции и привилегированные инструкции (например, обработчик исключений отказа данных, обработчик отказа инструкции, запись в таблицы страниц и запись в регистр CP15). Следовательно, все эти критические по безопасности операции и привилегированные инструкции будут обрабатываться безопасным миром.
5. Безопасный мир может проверять критические события и отправлять их агенту отслеживания целостности для оценки их влияния на статус целостности системы. В случае, когда перехваченное событие является записью в таблицу страниц, безопасный мир выполнит требуемую модификацию таблицы страниц от имени ядра нормального мира после подтверждения, что это не нарушает заранее определенную политику безопасности или вернет любую из операций, определенных этапами 1-4 (В некоторых вариантах осуществления заранее определенная политика безопасности может включать в себя запрет доступа для записи к исходным страницам ядра или любым таблицам страниц. Она может также предотвращать отображения привилегированных исполняемых страниц).
6. В некоторых вариантах осуществления агент проверки целостности может использовать машиночитаемый носитель (например, энергозависимую или энергонезависимую память) для хранения информации о статусе карты памяти нормального мира и/или любой требуемой политике безопасности. В иллюстративном варианте осуществления агент проверки целостности может хранить битовый массив, который помечает статус каждой страницы нормального мира так, что он может обнаружить, если запись в эту страницу (или изменение ее распределения памяти в соответствующих элементах таблицы страниц) нарушит или нет какую-либо политику безопасности.
Эти этапы могут позволить предложенной системе достичь и активного контроля ядра нормального мира, и защиты памяти нормального ядра. Этапы 1 и 2 предотвращают выполнение привилегированной инструкции путем отображения инструкции в памяти или модификации любой из привилегированных уже отображенных инструкций любым потенциально вредоносным программным обеспечением, выполняющимся в нормальном мире. Тот факт, что собственный код ARM состоит только из 32-разрядных или 16-разрядных инструкций, делает возможным сканирование исполнимых привилегированных страниц пословно и подтверждение, что ни одна из инструкций не получит доступ к критическому регистру.
В некоторых вариантах осуществления, которые используют архитектуру ARM v7, фигура 1 показывает типовое кодирование инструкций MCR, которые используются для записи в регистр CP. Регистры CP определяются номером CP и четырьмя другими параметрами: CRn, CRm, opd и opc2. Если все 32-разрядные (выровненные) значения привилегированных исполняемых страниц будут проверены так, чтобы никакая инструкция не соответствовала MCR в этот конкретный регистр, то мы можем гарантировать, что этот регистр никогда не будет модифицирован нормальным миром. Критическими регистрами, которые являются нашей целью, являются в частности те, которые отключают MMU, перемещают обработчик вектора прерываний или перемещают базовый адрес адресных таблиц виртуальной адресации.
Этап 3 гарантирует защиту памяти. В некоторых вариантах осуществления, которые используют архитектуру ARM v7, TTBR, которые указывают на базу данных таблиц страниц, являются частью CP15. TTBR будут помечены среди тех регистров, модифицировать которые ядру нормального мира запрещено (как упомянуто в этапе 2). Таким образом, нормальный мир будет ограничен в использовании конкретной физической памяти, такой как таблицы страниц. Код инициализации будет отображать эту физическую память (таблицы страниц) как не перезаписываемую. Следовательно, любые обновления таблицы страниц вызовут отказ данных. Так как все исключения отказа данных будут перехвачены безопасным миром (как обсуждается в этапе 4), все модификации таблицы страниц будут проверяться безопасным миром перед тем, как вступить в силу на самом деле в нормальном мире.
Этап 4 гарантирует требуемый активный контроль. В некоторых вариантах осуществления, которые используют архитектуру ARM v7, критические события, такие как изменение значения TTBR для переключения контекста между пользовательскими процессами, будет невозможно исполнить в нормальном мире. Таким образом, единственным способом для ядра нормального мира правильно исполнить эту функциональность будет вызов инструкции «SMC» и разрешение безопасному миру обработать критическую операцию. Безопасность этой операции поддерживается тем фактом, что и запись в регистр CP и вызовы «SMC» являются атомарные операциями, которые состоят из одной инструкции. В то же время все проверки целостности (например, проверка, что новые таблицы страниц не имеют перезаписываемых привилегированных страниц) выполняются безопасным миром, который вне досягаемости нормального мира. Даже ядро, скомпрометированное ориентированной на возврат атакой, не сможет модифицировать критический статус путем перехода через середину составного кода и пропуска потенциальной проверки целостности нормального мира.
Наконец, реализация этапа 5 означает, что безопасный мир будет единственной точкой проверки целостности, которая гарантирует, что возможности активного контроля останутся в силе в течение срока службы системы. Путем реализации надлежащих проверок целостности для привилегированных операций, таких как проверка таблиц страниц вновь отображенных процессоров и проверка, что MMU или защиты управления доступом к виртуальным страницам не отключены, безопасный мир гарантирует, что и защита памяти, и активный контроль присутствуют для нормального мира.
Фигура 2 является блок-схемой, иллюстрирующей систему для активного контроля и защиты памяти целевого устройства в соответствии с вариантом осуществления объекта изобретения, описанного здесь. На фигуре 2 система включает в себя виртуальный процессор 100 нормального мира и виртуальный процессор 102 безопасного мира в целевом устройстве 104. И виртуальный процессор 102 нормального мира, и виртуальные процессоры безопасного мира могут быть виртуальными процессорами ARM TrustZone, как описано в «Технология безопасности ARM, создание безопасной системы с использованием технологии TrustZone», Техническая документация ARM, ARM Limited (2009) («ARM Security Technology, Building a Secure System using TrustZone Technology», ARM Whitepaper, ARM Limited (2009)), раскрытие которой включено здесь по ссылке в полном объеме. Целевое устройство 104 может быть любой вычислительной платформой, на которой может быть достигнута изоляция с использованием виртуальных процессоров нормального и безопасного миров. Примеры таких вычислительных платформ включают в себя серверы, настольные компьютеры, мобильные устройства, такие как смартфоны, PDA, или планшетные компьютеры, или встроенные системы, которые могут включать в себя процессор и связанную с ним память, встроенную в прибор или промышленное устройство, такое как счетчик электроэнергии или воды.
Как указано выше, целевая операционная система 106 исполняется на виртуальном процессоре 100 нормального мира, а агент 108 проверки целостности исполняется на виртуальном процессоре 102 безопасного мира. Выполнение некоторых критических операций перехватывается виртуальным процессором 102 безопасного мира. Примеры перехватываемых операций включают в себя исключения отказа обычных данных или вызовы привилегированного режима, используемые для системных вызовов. Перехваченные операции исполняются на виртуальном процессоре 102 безопасного мира. Агент 108 проверки целостности контролирует выполнение перехваченных операций на виртуальном процессоре 102 безопасного мира для оценки влияния выполнения перехваченных операций на целостность целевого устройства 104.
Например, целевое устройство 104 может быть смартфоном, и пользователь может переключиться между голосовым вызовом и почтовой программой. В такой ситуации целевая OS 106 может записать новое значение в управляющий регистр процессора, CP15, чтобы переключиться между процессами. Как было указано выше, попытки записи в CP15 перехватываются и передаются агенту 108 проверки целостности для проверки. Агент 108 проверки целостности может исследовать значение, записываемое в CP15. В этом случае значение может быть ID процесса или адресом ячейки памяти для почтовой программы. Для проверки ID процесса агент 108 проверки целостности может просмотреть список разрешенных процессов, чтобы проверить, разрешено ли почтовой программе исполняться. В этом случае предполагается, что почтовой программе разрешено исполняться, и виртуальный процессор 102 безопасного мира может позволить почтовой программе исполняться.
В другом примере адрес ячейки памяти или ID процесса, который пытаются записать в CP15, может соответствовать вредоносной программе, которое будет отсутствовать в списке разрешенных приложений. В такой ситуации виртуальный процессор 102 безопасного мира может предотвратить выполнение вредоносной программы. Следует также отметить, что агент 108 проверки целостности может консультироваться с внешней системой для проверки приложения или процесса, например, используя криптографическую подпись приложения.
Следует понимать, что различные детали раскрытого здесь объекта изобретения могут быть изменены, не отступая от объема раскрытого здесь объекта изобретения. Кроме того, предшествующее описание приведено лишь для иллюстрации, а не для ограничения.