08.04.2016

Виртуальный беспредел

image

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

Автор: R_T_T

Лирический экскурс в недалекое прошлое

Так уж получилось, что автор данной статьи был первым в нашей стране, кто начал писать Гипервизоры на основе аппаратной поддержки виртуализации Интел и АМД. Сразу, как только появились инженерные семплы процессоров с этой аппаратурой, были написаны гипервизоры, еще «вручную» и практически «на ощупь».  Об этом писалось в достаточно известной статье «Виртуальная шпиономания» (мне ее припоминают до сих пор).  Еще не было в компиляторах поддержки аппаратной виртуализации, документация тогда была фрагментарной, а сторонних библиотек и проектов вообще не существовало, все делалось на чистом интересе и голом энтузиазме.

Минуло более 8 лет, теперь компиляторы имеют полную поддержку виртуализации, полно технических описаний и даже книг, так что написание гипервизоров превратилось в рутинную работу, доступную многим. Даже студенты, не зная всей специфики аппаратуры, могут «собрать» собственные гипервизоры на базе общедоступных программных ресурсов из разных ОпенСорсных проектов.

Налицо эйфория, типа, виртуализация может сделать все, а в информационной безопасности, это чуть ли не столбовая дорога…

Придется немного остудить их горячие головы.

Об этом данная статья.

Аппаратная виртуализация была и до появления специальной аппаратуры в составе процессоров. Для этого использовался механизм разграничения привилегий команд, карта ввода/вывода и разделение областей ОП с помощью аппаратуры TLB. Фирма Vmware прекрасно обходилась именно этим набором аппаратных средств для своих  виртуальных машин.

То, что было внедрено производителями процессоров 8лет тому назад правильней назвать,- «специальной аппаратурой поддержки виртуализации».

Производители добавили в процессора с десяток специальных команд, ввели новый тип прерывания и расширили возможности уже существующей аппаратуры изоляции областей оперативной памяти (TLB блоки). И это, по сути, все.

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

Ранее сделать такое было невозможно.

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

С момента появления время аппаратура виртуализации используется для продвинутой поддержки классических систем виртуализации (они могут работать и без нее, но медленней),- это ее прямое назначение. Кроме этого, аппаратура виртуализации используется для специальных программ, называемых «Гипердрайвер», - достаточно простых систем контроля за работой аппаратуры и ОС.

Идея этого типа программ была в том, чтобы запустить основную ОС под контролем аппаратного гипервизора.

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

Технология Гипердрайверов применяется для создания систем ИБ и мониторинга уязвимостей нулевого дня, об этом писалось, это реально делалось лично автором данной статьи, публичного распространения она не имеет, хотя и существует коммерческий продукт с ее использованием.

Помимо этого в России разработано несколько «самописных» классических систем виртуализации, использующих технологию аппаратной поддержки виртуализации, кавычки здесь применены не случайно, объясню это подробно.

Ситуация с разработкой отечественных Гипервизоров полностью аналогична ситуации с разработкой отечественной ОС на базе клонов линукса. Говоря конкретно, гипервизоры собираются из модулей публичных ОпенСорсных проектов. Степень заимствования никогда не опускается ниже 75%, со всеми вытекающими последствиями в виде уязвимостей нулевого дня (по небрежности разработчиков) и БекДоров (по злому умыслу).

Так что в отечественных гипервизорах «самописного» кода не более 25% и он, как правило, низкого качества.

Печально, но это так…

Техническая оценка настоящего

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

Крылатые слова: «я этому Интелу не доверяю», одного из бывших руководителей Центра защиты информации и специальной связи ФСБ России, немного переиначу. Применительно к аппаратной виртуализации, это будет звучать так: «я этой аппаратной виртуализации не доверяю», объясню почему.

- Аппаратура виртуализации имеет множество недокументированных возможностей, часть из них описана в конфиденциальных документах Интел и АМД, а часть не описана и там, так что реальные возможности этих систем нам до конца не известны. Пример, чтоб не быть голословным можно найти в статье «Виртуальная матрешка». Фактически мы используем аппаратуру с НДВ.

- Аппаратура виртуализации не контролирует режим Системного Менеджмента, другими словами, когда выполняется программы SМ вся аппаратура платформы и ПО лишены защиты. Режим «Дуального монитора» для виртуализации программ Системного Менеджмента не доступен, поскольку требует для своей активации доступа к аппаратуре в режиме SM. Но для нас вход в режим SM заблокирован на уровне BOOT блока БИОС. Поэтому, аппаратура виртуализации периодически деактивируется, и виртуальные машины часть времени работают в незащищенной среде.

- Программы и аппаратура АктивногоАдминистрирования (АМТ, Vpro, ВМС системы) принципиально не контролируется системой виртуализации и имеют полный доступ ко всем аппаратным и программным ресурсам платформы в любой момент времени, и даже на выключенной машине. Другими словами, имеются описанные в документации возможности скрытно и удаленно контролировать вычислительную установку со всеми ее виртуальными машинами через сетевые интерфейсы.

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

Так что я, «не доверяю этой аппаратной виртуализации», а вот специалисты Центра защиты информации и специальной связи ФСБ России доверяют…

Видимо они читают, что аппаратура виртуализации физически создает несколько независимых вычислительных систем, типа в одном корпусе собрано несколько разных персоналок…

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

Все это было терпимо, пока речь шла о мелочевке, типа персональных данных и коммерческих секретов. Но вот когда эта тенденция добралась до обеспечения ИБ уровня критической инфраструктуры, и обработки сведений с грифом «С» и два «С», вот тут уже стало «за державу обидно»…

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

Проще говоря, на режимном объекте существуют две группы компьютеров, одна группа работает с внешним подключением к Интернету, другая работает с внутренним подключением к локальной сети объекта.

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

Так было всегда, так есть везде, за исключением «банановых республик» естественно.

И вот, у нас, коммерсанты (а ИБ в России отдано на откуп бизнесу) начали настойчиво лоббировать схему построения защищенного периметра с использованием виртуальных машин…

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

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

Обьясню почему.

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

Допустим, хотя это «лапша» на уши дилетантов…

Но тогда сразу вопрос, Хост гипервизора и Операционная Система самого хоста к какому сегменту относится в их схеме?

Они работают как в публичном, как и защищенном сегменте.

А это принципиально недопустимо, чтобы один и тот же программный ресурс работал одновременно в обоих сегментах.

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

Соответственно атаки по «боковым каналам» через совместно используемое оборудование в защищенном и публичном сегменте становятся реальностью.

Более того, платформа, это не только «железо», но и программные средства, размещаемые во флеш-памяти материнской платы (теперь уже и в самих процессорах). И это все не контролируемые гипервизором программные ресурсы, перечислю главные:

- Программы БИОС (UEFI).

- Программы Системного Менеджмента.

- Программы технологий АМТ, vPro, ВМС.

- Программы сетевых контроллеров.

Все они работают как в публичном сегменте, так и в защищенном сегменте режимного объекта и используют оборудование не контролируемое гипервизором, кроме того, имеют собственный канал доступа в Интернет.

Причем, если еще можно поверить заверениям, что БИОС (1/4 обьема флешпамяти) тщательно проверяется, то все остальные программы, размещенные во флешпамяти платформы, не могут быть подвергнуты проверке. Производитель (Интел) их изолирует специальным оборудованием и шифрует. Ключи шифрования в России никому не известны.

   И напоследок о будущем

Из сказанного выше думаю понятно, что проникнуть за периметр ограниченный виртуальными машинами, вполне посильная задача.  И она становится совсем тривиальной, если владеть информацией скрытой от нас производителем процессоров (Интел, АМД,- без разницы). Понятно,  такое проникновение, это не уровень хакеров, тут должны работать «дядьки» посерьезней.

Но кто сказал, что их нет?

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

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

Буду надеяться, что это поймут и те, кто принимают решение о допуске на режимные объекты таких вот виртуальных поделок.

И может, остановит коммерсантов, их продвигающих.

Хотя, честно говоря, мало верится, против «финансового лома,- нет приема»…

P.S.

 Написанное выше совсем не означает, что аппаратуру виртуализации нельзя применять в области ИБ.

Для многих задач виртуализация предоставляет эффективные средства создания надежных систем безопасности.

Только применять виртуализацию нужно осмысленно…