Безопасность

Для предотвращения запуска произвольных вредоносных программ внутри виртуальной машины pVM, платформа виртуализации Android (AVF) использует многоуровневый подход к безопасности, в котором каждый уровень добавляет дополнительные меры защиты. Ниже приведен список уровней безопасности AVF:

  • Android гарантирует, что создавать или проверять pVM-объекты разрешено только тем приложениям, которые имеют соответствующие разрешения.

  • Загрузчик — это компонент, гарантирующий, что загрузка разрешена только для образов pVM, подписанных Google или производителями устройств, и соответствует процедуре Android Verified Boot . Такая архитектура подразумевает, что приложения, работающие на pVM, не могут включать в себя собственные ядра.

  • pVM обеспечивает многоуровневую защиту, например, с помощью SELinux , для полезных нагрузок, запускаемых в pVM. Многоуровневая защита запрещает отображение данных в качестве исполняемых файлов ( neverallow execmem ) и гарантирует, что условие W^X выполняется для всех типов файлов.

модель безопасности

Триада конфиденциальности, целостности и доступности (CIA) представляет собой модель, разработанную для руководства политикой информационной безопасности:

  • Конфиденциальность — это набор правил, ограничивающих доступ к информации.
  • Целостность — это гарантия того, что информация является достоверной и точной.
  • Доступность гарантирует надежный доступ к информации для уполномоченных лиц.

Конфиденциальность и честность

Конфиденциальность обеспечивается свойствами изоляции памяти, реализуемыми гипервизором pKVM. pKVM отслеживает права собственности на отдельные страницы физической памяти и любые запросы владельцев на совместное использование страниц. pKVM гарантирует, что только имеющие на это право pVM (хост и гостевые системы) имеют доступ к данной странице в своих таблицах страниц второго этапа, которые контролируются гипервизором. Эта архитектура обеспечивает сохранение конфиденциальности содержимого памяти, принадлежащей pVM, если владелец явно не предоставит к ней доступ другой pVM.

Ограничения на обеспечение конфиденциальности также распространяются на любые сущности в системе, которые выполняют доступ к памяти от имени pVM, а именно на устройства и службы с поддержкой DMA, работающие на более привилегированных уровнях . Производители систем на кристалле (SoC) должны соответствовать новому набору требований, прежде чем они смогут поддерживать pKVM. В противном случае обеспечение конфиденциальности невозможно.

Целостность данных распространяется как на данные в памяти , так и на данные в вычислительных системах. Виртуальные машины pVM не могут:

  • Изменять воспоминания друг друга без согласия.
  • Влияйте друг на друга на состояние ЦП.

Эти требования обеспечиваются гипервизором. Однако проблемы с целостностью данных также возникают при использовании виртуального хранилища данных, когда необходимо применять другие решения, такие как dm-verity или AuthFS.

Эти принципы ничем не отличаются от изоляции процессов, предлагаемой Linux, где доступ к страницам памяти контролируется с помощью таблиц страниц первого этапа и переключения контекста ядра между процессами. Однако часть pKVM EL2, которая обеспечивает эти свойства, имеет в три порядка меньшую поверхность атаки по сравнению со всем ядром Linux (примерно 10 тысяч против 20 миллионов строк кода) и, следовательно, предлагает более надежную защиту в случаях, которые слишком чувствительны, чтобы полагаться только на изоляцию процессов.

Учитывая размер pKVM, его легко подвергнуть формальной верификации. Мы активно поддерживаем академические исследования, направленные на формальное доказательство этих свойств на реальном исполняемом файле pKVM.

Оставшаяся часть этой страницы посвящена гарантиям конфиденциальности и целостности, которые обеспечивает каждый компонент pKVM.

Гипервизор

pKVM — это гипервизор на основе KVM, который изолирует pVM и Android в средах выполнения, не вызывающих взаимного доверия. Эти свойства сохраняются в случае взлома любой pVM, включая хост. Альтернативные гипервизоры, соответствующие стандарту AVF, должны обеспечивать аналогичные свойства.

  • pVM не может получить доступ к странице, принадлежащей другому объекту, например, pVM или гипервизору, если она не была явно предоставлена ​​владельцем страницы. Это правило распространяется и на хост-систему pVM и применяется как к доступу через ЦП, так и к доступу через DMA.

  • Перед тем как страница, используемая pVM, будет возвращена хосту, например, при уничтожении pVM, она очищается.

  • Перед запуском загрузчика ОС при последующей загрузке устройства память всех pVM-модулей и микропрограммы pVM, использованных при одной загрузке устройства, очищается.

  • При подключении аппаратного отладчика, такого как SJTAG, pVM не может получить доступ к ранее созданным ключам.

  • Прошивка pVM не загрузится, если не сможет проверить исходный образ.

  • Прошивка pVM не загрузится, если целостность файла instance.img будет нарушена.

  • Цепочка сертификатов DICE и составные идентификаторы устройств (CDI), предоставленные экземпляру pVM, могут быть получены только этим конкретным экземпляром.

Гостевая ОС

Microdroid — это пример операционной системы, работающей внутри pVM. Microdroid состоит из загрузчика на основе U-boot, GKI, подмножества пользовательского пространства Android и средства запуска полезной нагрузки. Эти свойства сохраняются в случае взлома любой pVM, включая хост. Альтернативные операционные системы, работающие внутри pVM, должны обладать аналогичными свойствами.

  • Microdroid не загрузится, если не удастся проверить boot.img , super.img , vbmeta.img или vbmeta\_system.img .

  • Microdroid не запустится, если проверка APK-файла не пройдёт.

  • Даже после обновления APK-файла тот же самый экземпляр Microdroid не запускается.

  • Microdroid не запустится, если какой-либо из модулей APEX не пройдет проверку.

  • Microdroid не загрузится (или загрузится с чистым начальным состоянием), если файл instance.img будет изменен вне гостевой виртуальной машины pVM.

  • Microdroid обеспечивает подтверждение наличия загрузочной цепочки.

  • Любые (неподписанные) изменения образов дисков, совместно используемых с гостевой виртуальной машиной pVM, приводят к ошибке ввода-вывода на стороне pVM.

  • Цепочка сертификатов DICE и CDI, предоставленные экземпляру pVM, могут быть получены только этим конкретным экземпляром.

  • Запись в зашифрованный том хранения является конфиденциальной, однако защита от отката на уровне блока шифрования отсутствует. Кроме того, любое произвольное внешнее вмешательство в блок данных приводит к тому, что Microdroid воспринимает этот блок как некорректные данные, а не обнаруживает его явно как ошибку ввода-вывода.

Android

Эти свойства поддерживаются Android как хостом, но теряют свою актуальность в случае компрометации хоста:

  • Гостевая виртуальная машина pVM не может напрямую взаимодействовать с другими гостевыми виртуальными машинами pVM (например, устанавливать соединение vsock ).

  • Только служба VirtualizationService в хост-машине pVM может установить канал связи с pVM.

  • Только приложения, подписанные ключом платформы, могут запрашивать разрешение на создание, владение или взаимодействие с виртуальными машинами pVM.

  • Идентификатор, называемый контекстным идентификатором (CID), используемый при настройке vsock -соединений между хостом и pVM, не используется повторно, когда хост-pVM запущен. Например, вы не можете заменить запущенный pVM другим.

Доступность

В контексте виртуальных машин pVM доступность означает выделение хостом достаточных ресурсов для гостевых систем, чтобы они могли выполнять задачи, для которых они предназначены.

В обязанности хоста входит планирование виртуальных процессоров pVM. KVM, в отличие от обычных гипервизоров типа 1 (таких как Xen), принимает явное проектное решение делегировать планирование рабочих нагрузок ядру хоста. Учитывая размер и сложность современных планировщиков, это проектное решение значительно уменьшает размер доверенной вычислительной базы (TCB) и позволяет хосту принимать более обоснованные решения по планированию для оптимизации производительности. Однако злонамеренный хост может вообще не планировать гостевую систему.

Аналогичным образом, pKVM также делегирует обработку физических прерываний ядру хоста, чтобы уменьшить сложность гипервизора и оставить хост за планирование. Прилагаются усилия для обеспечения того, чтобы пересылка прерываний гостевой системы приводила только к отказу в обслуживании (слишком мало, слишком много или неправильно перенаправленные прерывания).

Наконец, процесс мониторинга виртуальных машин (VMM) хоста отвечает за выделение памяти и предоставление виртуальных устройств, таких как сетевая карта. Вредоносный VMM может блокировать доступ гостевой системы к ресурсам.

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

Безопасная загрузка

Данные привязаны к экземплярам pVM, а безопасная загрузка гарантирует контролируемый доступ к данным экземпляра. При первой загрузке экземпляра происходит его инициализация путем случайной генерации секретной соли для pVM и извлечения из загруженных образов таких данных, как открытые ключи проверки и хеши. Эта информация используется для проверки последующих загрузок экземпляра pVM и обеспечения того, чтобы секреты экземпляра передавались только тем образам, которые прошли проверку. Этот процесс происходит на каждом этапе загрузки в pVM: прошивка pVM, pVM ABL, Microdroid и так далее.

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

На каждом этапе на следующий этап передается детерминированно закодированный объект CBOR . Этот объект содержит секреты и цепочку сертификатов DICE, которая содержит накопленную информацию о состоянии, например, о том, была ли безопасная загрузка на предыдущем этапе.

Разблокированные устройства

При разблокировке устройства с помощью fastboot oem unlock пользовательские данные удаляются. Этот процесс защищает пользовательские данные от несанкционированного доступа. Данные, являющиеся личными для pVM, также аннулируются при разблокировке устройства.

После разблокировки владелец устройства может свободно перепрошивать разделы, обычно защищенные проверкой загрузки, включая разделы, содержащие pvmfw и реализацию pKVM. Следовательно, разблокированное устройство не может гарантировать соблюдение модели безопасности pVM.

Удаленные стороны могут наблюдать это потенциально небезопасное состояние, проверив подтвержденное состояние загрузки устройства в сертификате аттестации ключа.