Ghost in the Virtual Machine Iván Arce Core Security Technologies Histórico da Virtualização • Time-sharing system (1960) – Otimizar o uso dos recursos computacionais (caros) • Computador dedicado e interativo por usuário • IBM System/370 (1970) • Deram origem ao conceito de “Máquina Virtual”: – Monitor de Máquina Virtual (VMM) • Controle e alocação de recursos • Gerenciamento de recursos das múltiplas máquinas virtuais – Sistema operacional convidado (Guest OS) • Computador virtual usado pelo usuário Histórico da Virtualização • Década de 80 – Pouco interesse em máquinas virtuais • Crescimento de PCs e sistemas UNIX • Meados da década de 90 – Nova onda de virtualização • Questões de segurança voltam à tona • Requisitos para virtualização [Popek e Goldberg, 1974] – Eficiência – Controle de recursos – Equivalência Requisitos para virtualização [Popek e Goldberg, 1974] • Requisito 1: Eficiência – VMM não pode impor queda de desempenho perceptível – Maioria das instruções deve ser executada sem mediação do VMM • Requisito 2: Controle de recursos – VMM deve ter controle completo dos recursos virtualizados • Gerenciamento e alocação de recursos • Máquina virtual não pode interferir nos recursos de outras máquinas virtuais ou da VMM Requisitos para virtualização [Popek e Goldberg, 1974] • Requisito 3: Equivalência – Ambiente virtual provido pelo VMM deve ser idêntico ao real • Programa rodando na máquina virtual deve ter comportamento idêntico se estivesse rodando sobre o hardware real – Exceções: • Diferenças de tempo de execução • Indisponibilidade de recurso compartilhado Requisitos para virtualização [Popek e Goldberg, 1974] • Como determinar se uma ISA é virtualizável ou não? • Classificação das instruções (privilegiadas ou sensíveis) – De acordo com o efeito causado no estado do sistema Classificação das Instruções • Instruções privilegiadas – Só podem ser executadas em um modo de execução específico – Geram exceções • Instruções sensíveis – Sensíveis de controle • Alteram a alocação de recursos do sistema – Sensíveis comportamentais • Comportamento depende do estado do sistema Instruções sensíveis devem ser privilegiadas Análise de Segurança • Ideia de usar máquinas virtuais para segurança não é nova – Madnick e Donovan (MIT, 1973) • Usar máquinas virtuais para enclausurar ameaças de segurança • Porém, não consideraram a presença de máquinas virtuais maliciosas • Isolamento é uma importante propriedade para segurança – Principal problema são as exceções do 3º requisito de Popek e Goldberg • “Canais clandestinos” (covert channels) baseado em tempo – Solução: “tempo virtual” (Lampson e Lipner, 1975) Análise de Segurança • Robin e Cynthia (Usenix 2000) – Verificaram a possibilidade de se implementar um VMM seguro usando um processador Intel Pentium – Identificaram 17 (dentre 250 analisadas) instruções que são sensíveis, mas não privilegiadas • Ausência de um modelo de segurança para VMM – Show de Truman Análise de Segurança • Carpenter et al. (IEEE Security and Privacy 2007) – Técnicas para detectar a presença de um VMM • Exploram instrução sensíveis não-privilegiadas ou de I/O – Contramedidas a uma fonte maliciosa (o Truman) • Autores definem possíveis ataques: 1. Escapar do ambiente virtual e ganhar controle sobre recursos da máquina real 2. Interferir no comportamento ou recursos de outras máquinas virtuais 3. Confinar um sistema não-virtualizado em uma máquina virtual e permanecer não-detectado Análise de Segurança • King et al. (IEEE Security and Privacy 2006) – Malwares usam virtualização para evitar detecção – Realização do 3º tipo de ataque • Ormandy (Google, 2007) – Ferramentas de virtualização populares possuem falhas de segurança Conclusão • Virtualização – Propriedade de isolamento interessante para segurança – Problemas • Não há VMM robusto a falhas e ataques