Friday, August 10, 2007

Virtualization Technology

Virtualization has gotten mainstream these days and, as it often happens, we have just started to realize security implications of the technology. There are both positive and negative effects that we currently see.
On the positive side:

  • Easier means of systems isolation - with virtualization it's easier than ever to use dedicated (virtual) server for different services, which may be good for security.
  • Better disaster recovery capabilities - it is extremely easy to make a full backup of a virtual machine and move it to another host.
  • Ideal environment for malicious code analysis.
On the negative side:
  • There will certainly be vulnerabilities in virtualization software. Results would most probably be code context escalation (malicious code being able to escape virtual machine and run on the host) and management interface weaknesses (remote console access protocol vulnerabilities, management web interface vulnerabilities, etc.) Here are some examples:
  • Lack of appropriate control and policies would pose a risk as always - consider situation of having internal and external virtual machines on the same host (keep in mind previous point).
  • Most likely you already heard of Blue Pill. This is the type of issues that are hardly to imagine or predict before it happens.
  • Modern malware has capabilities to detect virtual machines and does not run (performs self-destruction) then to make its analysis more difficult.
Anything I missed? I'm quite sure more issues to come and there is a lot of research to be done in this field.

================================

В настоящее время технологии виртуализации получили большое распространение. Как это часто случается, мы только начинаем осознавать их влияние на безопасность. Можно выделить как положительные эффекты, так и отрицательные.
Плюсы:
  • Разделение систем - виртуализация облегчает разделение систем и использование выделенных под конкретную задачу виртуальных серверов, что улучшает уровень защищенности.
  • Упрощенное восстановление после сбоев – легко организовать полную резервную копию виртуальной машины и перенести ее на другой физический сервер.
  • Идеальное окружение для анализа вредоносного кода.
Минусы:
  • С уверенностью можно сказать, что в ПО виртуализации будут уязвимости. Можно ожидать ошибки типа эскалации контекста исполняемого кода (т.е. когда вредоносный код, будучи запущен в виртуальной машине, может перевести свое исполнение на физическую машину) и уязвимости в интерфейсе управления (т.е. в протоколах удаленного доступа к консоли виртуальных машин, в web-интерфейсе конфигурации сервера виртуальных машин и т.д.). Вот примеры уже обнаруженных уязвимостей:
  • Как обычно отсутствие политик и контроля над ИТ средой может нести риски – например в ситуации, когда на одном физическом сервере работают внутренние и внешние (доступные из Интернет) системы (учитывая предыдущий пункт).
  • Скорее всего вы уже слышали про Blue Pill. Трудно предугадать появление такого рода атак до их появления.
  • Современное вредоносное ПО зачастую включает функции определения факта его запуска в виртуальной машине, и при обнаружении этого перестает работать (самоуничтожается) для усложнения процесса его анализа.
Что-то пропустил? Я уверен, что мы увидим гораздо больше проблем в будущем - еще много вопросов, требующих исследования в этой области.

3 comments:

Sergey Soldatov said...

Amiran, brilliant article! But, as you remember, you told me that such articles do not matter if they don’t propose a solution. I think these solutions are known if we’ll think in general. In general the things are that in every system there is something shared that, if attacked, can allow attacker to compromise other components that use shared component together. Here’re some examples:
- two processes that use shared memory can be compromised through this memory;
- two systems even separated by L3 filter can be accessed through L2
- etc...

The main idea as you can see here that is if there are obstructions on higher levels they can be circumvented through lower levels. But how can we struggle with this? As usual:
- fixes on software on higher levels. Here I mean that every possibility to bypass restrictions have to be analyzed and fixed, as usual.
- Special control software that can detect and prevent circumvention. Recently I told you that every programmatic evil can be detected and prevented by programmatic means (but the thing is that detection/prevention system should start first). This detection programs can be either part of VM software or hosted operation system.
- Security by design. I can’t exactly explain what I mean, but it’s when we think about security during the design phase. Here we not just fix mistakes, but think about design that is very difficult to cheat. I know that it’s a beautiful fairy-tail but I believe that it’s possible. For example, it’s impossible to circumvent laws of thermodynamics or conservation laws, so, these physical laws secure by design :-)

Amiran Alavidze said...

A link on the subject from Sergey:
http://taviso.decsystem.org/virtsec.pdf

Amiran Alavidze said...

More links on virtualization vulnerabilities:
http://www.microsoft.com/technet/security/Bulletin/MS07-049.mspx
http://nvd.nist.gov/nvd.cfm?cvename=CVE-2007-4496
http://nvd.nist.gov/nvd.cfm?cvename=CVE-2007-4497

Thanks to:
http://isc.sans.org/diary.html?storyid=3411