Hypervisor: Segurança em ambientes virtualizados
Veja nesse artigo como melhorar a segurança em ambientes virtualizados com o confronto entre vulnerabilidades e mecanismos de defesa usando o Hypervisor.
Autores: Arthur dos Santos Macedo e Christian Conceição Guerreiro Santos
Virtualização é a simulação de um hardware/software que roda sobre outro software. Este conceito de ambiente simulado é chamando de máquina virtual (VM – Virtual Machine).
Basicamente, a virtualização permite que as organizações possam trabalhar com diversas plataformas de software (sistemas operacionais), não havendo necessidade de aumento no número de máquinas físicas. Ou seja, a virtualização permite um alto nível de flexibilidade e portabilidade. Com isso desmitificou-se a ideia de que para um novo serviço de TI a ser implantado em um ambiente era necessário uma máquina física nova.
Outra característica deste tipo de tecnologia é o compartilhamento dos recursos de hardware (processador, memória, interface de rede, disco, etc.) do host físico com todas as máquinas virtuais ali presentes. Por exemplo, caso um host possua quatro processadores, ele pode compartilhar um processador com cada uma das quatro máquinas virtuais.
Todo o gerenciamento e alocação de recursos de hardware de uma máquina virtual é feito pelo Hypervisor ou Monitor de Máquina Virtual (VMM – Virtual Machine Monitor). O Hypervisor é uma camada de software localizada entre a camada de hardware e o sistema operacional. É, também, responsável por controlar o acesso do sistema operacional visitante (máquina virtual) aos dispositivos de hardware. Ele também deve prover recursos que garantam a segurança das máquinas virtuais através de mecanismos como isolamento, particionamento e encapsulamento.
A virtualização é dividida basicamente em paravirtualização e virtualização completa. Na completa, o hypervisor simula todo o hardware da máquina física, fazendo com que as máquinas virtuais executem de forma isolada. Em outras palavras, o hypervisor emula todo o hardware para as VMs, fazendo com que o sistema operacional execute como se não estivesse em um ambiente virtual. Sua vantagem é a larga aceitação por parte de diversos tipos de sistemas operacionais.
Já a paravirtualização entrega para as VMs um hardware igual ao real, com isso o sistema a ser virtualizado pode sofrer alterações no decorrer do tempo. Funcionalidade esta que a virtualização completa não permite, já que nela o hardware é entregue de forma virtual. A principal característica da paravirtualização é o desempenho, ou seja, sua facilidade em se adaptar às modificações do sistema operacional devido a sua similaridade com o hardware real.
A virtualização contribuiu para o desenvolvimento e aprimoramento de outras tecnologias já existentes, fazendo com que elas se aperfeiçoassem, tais como: sistemas operacionais, componentes de hardware, storage e rede.
Com os avanços desta tecnologia, as técnicas e melhorias em segurança em ambientes deste tipo também tiveram que ser aperfeiçoadas e recriadas para garantir a integridade e segurança de dados e hardware.
O objetivodestetrabalho éanalisarambientes virtualizadosquanto à segurança, trazendo à tona assuntos às vezes incomuns quando se fala de virtualização.Este trabalho pretende verificar o quantoo hypervisor é seguro. Para isso, identificará possíveis brechas paraataques, descreverá quais são estes ataques e as contramedidas oferecidas pelas soluções disponíveis no mercado.
Em complemento, vamos estabelecer um contraponto entre as tecnologias existentes, mostrando como algumas tratam a temática da segurança e como asorganizaçõespodem se precaver de incidentes e ameaças.
Visão Geral do Hypervisor
O Hypervisor é uma camada de software localizada entre o hardware e as máquinas virtuais, sendo responsável por fornecer recursos (storage, CPU, memória, rede, etc.) da máquina física para a máquina virtual. Ele permite que vários sistemas operacionais possam ser executados em um mesmo host.
A virtualização do tipo completa fornece dois tipos de hypervisor. O tipo 1, chamado de bare-metal e o tipo 2, chamado de hosted. O hypervisor do tipo bare-metal interage diretamente com o hardware da máquina física. Ele é completamente independente do sistema operacional do host. Já no tipo hosted, o hypervisor roda sobre o sistema operacional do host, sendo isto possível em qualquer tipo de SO.
Como mostra a Figura 1 o tipo hosted possui uma camada a mais de aplicação junto com a camada do hypervisor, e ambas sobre o sistema operacional do host. Esta camada de aplicação permite, por exemplo, a troca de arquivos entre o SO do host com o ambiente virtual e também permite que os usuários possam executar aplicações tais como web browsers e clientes de e-mail paralelamente ao ambiente virtualizado. Isto não é possível no tipo bare-metal.
Figura 1. Ilustração do hypervisor tipo hosted e bare-metal
Os servidores são frequentemente virtualizados no modo bare-metal. Já o hosted é comumente utilizado em soluções voltadas para uso em desktops, como o VirtualBox. A maioria dos hypervisors oferecem recursos adicionais de hardware, que vão desde controladores USB até direct memory access (DMA), visando com o DMA melhorar o desempenho de controladores de storage (no que diz respeito a acesso a disco) e placas de rede.
Visto isso, a decisão de usar hypervisor bare-metal ou hosted vai além de “ter ou não ter sistema operacional no host”. A primeira opção, por exemplo, por estar situada diretamente sobre o hardware, consegue prover um número maior de opções de acesso de entrada e saída (I/O access), disponibilizando mais desempenho para aqueles que optam por essa arquitetura.
Já a segunda opção consegue prover maior compatibilidade de hardware, o que permite executar o software de virtualização em uma gama mais ampla de configurações de hardware, diferentemente do modo bare-metal.
Como já informado, o hypervisor utiliza os recursos oferecidos pelo sistema operacional nativo para oferecer recursos virtuais ao sistema operacional convidado que executa sobre ele.
É importante frisar que medidas operacionais e de segurança também devem ser levadas em consideração na escolha da arquitetura utilizada, como será apresentado nas próximas seções.
Segurança em Ambientes Virtualizados
Uma pesquisa da Associação Brasileira de e-business (e-business Brasil) realizada em 2012 constatou que os investimentos em virtualização nos ambientes de TI aumentaram cerca de 80% em relação aos últimos três anos. A pesquisa, que durou cerca de um ano e entrevistou mais de 500 investidores, constatou um aumento gradativo a partir de 2009, principalmente com o surgimento e aprimoramento da técnica de computação em nuvem.
Outra pesquisa, também em 2012, constatou que 85% das organizações de todo o mundo planeja ou já possui virtualização em seus ambientes de TI. E 52% de todos os ambientes, com servidores x86, são virtualizados, sendo esperado um aumento para 75% em dois anos.
Tais pesquisas indicam a importância que a virtualização vem conquistando nos ambientes de tecnologia da informação. Ainda assim, existe certa resistência em seu uso. De um lado existem benefícios como: redução de custos com energia elétrica (com a redução de equipamentos de hardware), redução de investimento em hardware (tanto em compra de equipamento, como em manutenção), flexibilidade, disponibilidade, etc.
Do outro, a segurança neste tipo de ambiente ainda provoca dúvidas nos profissionais de TI. Fazendo uma análise hipotética, supondo que um ambiente totalmente virtualizado sofra qualquer tipo de ataque à integridade física (hardware) ou lógica (software) do host e o mesmo venha a parar, as máquinas virtuais ali presentes também irão parar, causando sérios danos à empresa/organização.
Por mais que existam técnicas de replicação, backup e cluster, ainda há o risco de um ataque que, a depender da intensidade, acabe afetando a disponibilidade das máquinas virtuais. Até porque, se algum invasor conseguir penetrar em uma VM, ele provavelmente vai conseguir acesso a alguma outra. E acessando qualquer máquina virtual ele pode apagar dados de backup, dados do storage, apagar as máquinas virtuais do host, etc.
Em fevereiro de 2011, uma companhia farmacêutica japonesa chamada Shionogi foi invadida por um administrador de TI, chamado de Jason Cornish. Jason utilizou uma conta de serviço para acessar a rede da companhia. Estando dentro do ambiente da empresa, Jason, através de uma instalação do VMware vSphere deletou 88 máquinas virtuais. Sendo que dentro dessa contagem de VMs excluídas há servidores de e-mail, BlackBerry Server, servidores de aplicações financeiras, etc.
A Shionogi passou alguns dias para conseguir se reestabelecer, perdendo vendas, comunicação por e-mail, entre outros prejuízos. A partir deste exemplo, é notório os prejuízos que qualquer tipo de indisponibilidade em um ambiente de TI pode causar, principalmente quando se trata de ambiente virtualizado, já que o host físico acomoda diversas VMs com funcionalidades distintas.
Vale ressaltar que este exemplo não é caracterizado como um ataque, mas sim como uma falha humana, já que a credencial de acesso do funcionário deveria ter sido desativada uma vez que ele havia sido demitido. Contudo, falhas humanas também podem acarretar em brechas que possam facilitar a vida de um invasor.
Técnicas de Segurança em Ambientes Virtualizados
O simples fato de migrar um ambiente de TI para um ambiente virtual não traz praticamente nenhuma ameaça à segurança ou um aumento ou diminuição das ameaças e vulnerabilidades. Independente se um ambiente é virtual ou não, quando ocorre a migração, as mesmas ameaças, vírus e vulnerabilidades continuam presentes. O que pode ocorrer é uma forma diferente de ataque e defesa devido ao acréscimo de uma funcionalidade ou uma camada de software.
Este tópico foca justamente nesta discussão, mostrando alguns recursos da virtualização e como eles se relacionam com a segurança.
Anéis de Proteção (Protection Rings)
A família de CPUs x86 fornece quatro modos de operação para o processador em sua arquitetura, que são comumente chamados de anéis de proteção (protection rings) que são identificados de 0 a 3. Esses anéis funcionam como mecanismos de proteção de dados e funcionalidades contra falhas e ações maliciosas. Esses níveis de proteção são níveis de hierarquia de privilégio dentro de uma arquitetura de computação.
Como mostra a Figura 2, eles são organizados na hierarquia do mais privilegiado (0 é considerado o de maior nível hierárquico) ao menos privilegiado (os de maior número). O anel 0 interage mais especificamente com o hardware físico (CPU e memória) e é utilizado pelo sistema operacional. Ele pode executar qualquer tipo de instrução de CPU ou endereçamento de memória. Falhas neste nível do anel são catastróficas, tendo como consequência uma possível parada da máquina.
Já o anel 3 é empregado para os processos do usuário. Caso um processo do usuário tente acessar alguma instrução privilegiada do anel 0, uma exceção (trap) é gerada. Este nível não permite o acesso aos níveis mais baixos e privilegiados. Por conta deste isolamento, falhas no modo usuário são, na maioria dos casos, passíveis de recuperação.
Figura 2. Anéis de Proteção
Isolamento da Máquina Virtual (Guest OS Isolation)
O hypervisor é responsável por gerenciar o acesso ao hardware pelos sistemas operacionais das VMs. Ele faz com que a máquina virtual enxergue o hardware como sendo apenas para seu uso, porém o hardware pode ser compartilhado com diversas outras, como geralmente ocorre. No entanto, esse compartilhamento não é visto pela máquina virtual. Assim, a VM assume que aquele hardware é dedicado unicamente para ela. Isso possibilita que uma VM funcione de forma separada uma da outra, não havendo possibilidade de uma acessar o recurso da outra. Por esta razão o recurso foi batizado de “isolamento da máquina virtual” e, por exemplo, está presente em ferramentas como Hyper-V e VMware ESXi.
Os recursos são divididos em duas categorias: lógica e física. A divisão lógica significa que o hypervisor entrega recursos para uma máquina virtual ou para várias máquinas virtuais. Isso quer dizer que os recursos (memória e processador, por exemplo) podem ou não ser compartilhados com várias VMs, como se fosse um pool de recursos com o hypervisor intermediando o acesso a eles. A divisão física propõe limitações à alocação de recursos para uma determinada VM, pois não compartilha com as outras máquinas virtuais. O hypervisor aloca um recurso fixo para uma determinada VM, o que significa que se determinada máquina virtual utilizar apenas uma parte do seu recurso disponível, o que não é utilizado por ela acaba ficando ocioso.
Essas características impostas pelo hypervisor possibilitam que caso uma VM seja infectada por algum malware, por exemplo, ele potencialmente não atinja a outra máquina virtual ou algum arquivo infectado de uma acabe passando para outra. Porém, foi emitido um alerta sobre este risco em meados de 2010 pela IBM, através de um de seus relatórios de segurança que medem a ocorrência de vulnerabilidades em ambientes virtualizados. Este relatório apontava a ocorrência de um novo tipo de vulnerabilidade, chamado de “escape-to-hypervisor”, onde um invasor, a partir de uma máquina virtual, podia acessar qualquer outro recurso de uma VM qualquer.
A vulnerabilidade foi confirmada dois anos depois pela U.S Computer Emergency Readiness Team (US-CERT), que afirmava que alguns sistemas operacionais x64 rodando em hardware Intel eram vulneráveis a ataques do tipo “escape-to-hypervisor”. A partir daí diversos outros fabricantes de hypervisor passaram a buscar correções para o “bug”.
A partir do exemplo de vulnerabilidade supracitado, percebe-se que o hypervisor ainda não pode ser classificado como um componente intransponível, como muitos o classificam. Ainda existem falhas e a cada dia são descobertas novas, fazendo com que seja necessário um cuidado especial na hora de levar algum serviço específico e de pouca possibilidade de paradas para um ambiente virtual.
Monitoramento da Máquina Virtual (Guest OS Monitoring)
O hypervisor possui recurso de auditoria em tudo o que é feito sob seu domínio, tendo plena capacidade de monitorar cada sistema operacional que executa sobre ele, sendo esta técnica conhecida como introspecção. A introspecção pode prover um monitoramento completo, que pode incluir tráfego de rede, memória, processos e diversos outras funcionalidades de um S.O., mesmo quando a segurança deste já foi comprometida.
Muitos produtos de virtualização incorporam a isso algumas outras funcionalidades, muitas vezes adicionando outras ferramentas para auxiliar, como por exemplo, a VMware, através do vSphere. Isto, em conjunto com a auditoria de introspecção, pode fornecer uma variedade extensa de parâmetros que controlam e monitoram os acessos à VM.
Imagem e Gerenciamento de Snapshot
Diversas ferramentas de virtualização disponibilizam para seus usuários a funcionalidade de snapshot, que permite que o sistema grave o estado atual da VM para que a mesma possa ser restaurada para algum ponto anteriormente capturado a qualquer momento. Pode-se citar o Hyper-V da Microsoft como um dos exemplos de ferramentas que possuem a funcionalidade de snapshot.
Oferecem também outra funcionalidade que é a imagem ou clone, que permite ao usuário criar uma cópia de VM e utilizá-la como sendo outra VM. Em outras palavras, supondo a necessidade de se criar uma VM nova no ambiente, o usuário pode recorrer a uma imagem/clone de uma VM, uma máquina virtual base, e a partir dela criar uma nova acrescentando apenas as funcionalidades necessárias.
Nota-se que o maior problema no uso dessas técnicas é o fato delas possuírem dados sensíveis (senhas, dados pessoais de usuários e etc.), similarmente como um disco rígido (HD) de um computador, podendo assim implicar em um vazamento de informações sigilosas. Tal comparação fica evidenciada na facilidade de manuseio das imagens e snapshots, por isso o contraste com o HD e por isso, também, a necessidade de cuidados especiais.
Um snapshot pode prover mais riscos de segurança do que as imagens, pois o mesmo, além dos dados sensíveis, traz também conteúdo da memória e isso pode incluir informações confidenciais que nem sequer foram armazenadas na unidade.
Uma aplicação e sistemas operacionais podem ser configurados, testados e instalados em uma imagem e ser distribuída para diversos hosts. Tal prática proporciona ganho de tempo considerável, especialmente ao se imaginar a criação de muitas máquinas virtuais novas, operação que normalmente levaria um tempo considerável. Com isso, o controle de acesso a essas imagens é importante, visto que uma imagem em poder de alguém não autorizado se torna vulnerável a modificações indevidas e/ou maliciosas.
Movimentação de Máquinas Virtuais
Outra funcionalidade bastante presente nas ferramentas de virtualização (por exemplo, o vMotion no VMware ESXi) é a movimentação das máquinas virtuais presentes em um host para outro, provendo alta disponibilidade ao ambiente virtual. Por exemplo, caso seja necessário o desligamento ou reinicialização do host físico, é possível mover as máquinas virtuais ali presentes para outro host, sem que as mesmas desliguem, mantendo assim a disponibilidade do ambiente. Esse recurso também pode ser utilizado em casos de ameaças de ataques ao host físico, tentando eliminar a chance da VM também ser infectada.
O hypervisor é capaz de realizar esta movimentação de forma automática a depender das configurações realizadas. Por exemplo, quando a carga de processamento em um dado host estiver muito alta, o hypervisor identifica isso e automaticamente move algumas VMs para outro host. Muitas vezes este host secundário fica em standby justamente para ocasiões desta natureza.
Contudo, não há garantia de sucesso nesse tipo de procedimento, até porque outros fatores estão envolvidos em uma movimentação como aspectos de rede, por exemplo. Se houver falha na rede durante a movimentação, o risco de a movimentação falhar e a VM desligar é grande.
Uma desvantagem em nível de segurança que merece ser destacada é que caso uma máquina virtual esteja infectada ou comprometida, e ela seja movida para outro host físico, isso pode acabar infectando, também, o próximo hospedeiro. O mesmo pode ocorrer em caso de migração de uma máquina física para virtual.
Criptografia de Máquina Virtual
Uma máquina virtual é essencialmente composta por arquivos, por conta disso um possível roubo de uma VM se torna ainda mais fácil. Sair de uma empresa com um pendrive é muito mais discreto do que sair com um servidor nas mãos.
Existem diversas formas de se criptografar os arquivos de uma máquina virtual, independentemente de onde ela esteja, se em um datacenter ou na nuvem, por exemplo. Cada forma de criptografia possui prós e contras, principalmente quando se trata de gerenciamento de chaves de decriptação.
A seguir, alguns exemplos de locais onde as máquinas virtuais e seus dados podem ser criptografados:
· Dentro da própria máquina virtual. Exceto quando estão armazenadas em arquivos VMDK (Formato de arquivo desenvolvido pela VMware);
· Dentro do hypervisor. Porém, ainda não há indícios de criptografia no hypervisor em virtualização de servidores;
· Em um dispositivo de armazenamento NAS – Network-Attached Storage (qualquer dispositivo com quantidade grande de disco e que funcione como armazenador de dados). Com a vantagem de poder escolher qual parte da VM será criptografada caso o protocolo entre o dispositivo e o hypervisor seja o NFS;
· Dentro de storage (dispositivo com grande quantidade de discos para armazenamento, que oferece redundância de fontes de energia, alta disponibilidade, etc.). Geralmente utilizado através da tecnologia FDE (Full Disk Encryption), que criptografa todo o disco em nível de hardware.
Todas as opções citadas podem garantir alguma proteção para uma máquina virtual, porém elas não garantem flexibilidade para acompanhar o fluxo de trabalho de um ambiente de TI, por conta da rapidez do avanço da tecnologia.
Por exemplo, em alguns momentos os administradores de TI podem identificar a necessidade de migrar algum serviço para a nuvem, o que no caso da adoção de alguns desses locais a migração seria mais difícil, já que não é viável levar toda sua massa de dados para a nuvem, por exemplo.
Uma forma de solucionar esta questão seria adotar algum modelo de armazenamento flexível, que englobaria tanto a criptografia como uma gerência melhor das chaves de descriptografia.
Ameaças e ataques mais comuns em ambientes virtuais
Embora a virtualização forneça inúmeras funcionalidades, ainda não é possível afirmar sua contribuição com relação à segurança. Além dos problemas de segurança enfrentados pelos profissionais de TI em ambientes físicos, a virtualização traz um novo risco, associado ao hypervisor.
O principal ponto de falhas e ataques em ambientes virtualizados é o hypervisor, por ser o elemento central de todo o sistema de virtualização e por gerenciar todo o ambiente virtual em um host físico, reunindo as principais funcionalidades e portas de acesso às VMs.
Em alguns sistemas de virtualização existe uma funcionalidade que permite que as máquinas virtuais sejam movidas de um host para o outro. Esta funcionalidade é acionada quando é necessário fazer alguma manutenção no host, quando há falhas e ameaças contra o hypervisor ou sistema operacional. A movimentação pode ocorrer mesmo quando a VM está em execução.
As empresas fornecedoras de hypervisor buscam a todo o momento formas de aumentar a segurança do seu produto e, consequentemente, passar mais credibilidade aos seus usuários. De acordo com Schwartz (2010), um estudo realizado pela IBM em 2010 contabilizou que cerca de 35% dos ataques em ambientes virtualizados são direcionados ao hypervisor. Como consequência, há uma preocupação dos fabricantes em consertar suas vulnerabilidades.
A todo o momento um ambiente de TI está sujeito a sofrer com os diversos tipos de ameaças à segurança, desde erros de algum funcionário até programas maliciosos que roubam dados. Em ambientes virtuais existem outros parâmetros que merecem ser analisados com cautela ao se manter ou projetar um ambiente virtualizado. Dentre os parâmetros existentes, destacam-se o controle de expansão do ambiente virtual, falta ou pouco monitoramento do ambiente, gerenciamento das responsabilidades perante o gerenciamento do ambiente virtual, detalhes de configuração (firewall e networking), entre outros.
As ameaças e ataques que serão expostos a seguir se tratam de visões abrangentes e em muitos casos não houve comprovação de em qual tecnologia de virtualização (VMware, Hyper-V, Xen, etc.) especifica pode ocorrer tal ataque/ameaça. Portanto, na sequência serão analisados alguns tipos de ataques/ameaças, assim como técnicas para mitigá-los.
VM Escape
O assunto mais discutido quando se fala em segurança em virtualização e o mais temido entre os profissionais de TI é o VM Escape (escape to hypervisor, fuga do hypervisor), que se trata de uma brecha de segurança em hypervisors VMware ESXi. Através dessa brecha um invasor consegue executar códigos maliciosos dentro de uma máquina virtual, podendo também executar comandos em outra VM ou até mesmo no hypervisor.
Alguns fabricantes possuem ferramentas que se assemelham ao comportamento do VM Escape, porém não foram classificadas como tal e não têm o mesmo objetivo. As ferramentas se caracterizam por permitir a livre transferência de dados entre uma VM e outra, necessitando que ambos os lados estejam com a ferramenta ativa. O que difere totalmente das características do VM escape, onde não há necessidade de se ter o mesmo código executando na outra VM. O invasor consegue acessar a outra VM se beneficiando de vulnerabilidades do sistema.
Existem outros tipos de ataques dentro dos conceitos de VM Escape que surgiram nos últimos anos. A seguir são apresentados alguns deles:
· Directory Traversal Attack (Ataque de Passagem de Diretório): A maior parte dos ataques VM espace partiram de ataques de passagem de diretório, que consistem em um atacante obter acesso a pastas/diretórios considerados seguros e com controle de acesso. Este tipo de vulnerabilidade esteve presente no VMware Workstation, permitindo a um atacante salvar, alterar, excluir ou mover arquivos entre diretórios até então restritos.
Em uma das conferências realizadas na SANSFIRE 2007, em Washington, DC, Tom Liston e Ed Skoudis apresentaram uma noção muito real de VM escape. Eles apresentaram ferramentas que exemplificavam como era possível ataques de VM escape. Dentre elas, destacam-se duas: VMchat e VM Drag-n-Sploit. A VMchat utilizava o canal de comunicação do hypervisor da VMware para passar mensagens entre máquinas virtuais e/ou entre máquina virtual e host. Não requerendo nenhum tipo de código especial e nenhum recurso adicional de redes, ou seja, a aplicação consistia em apenas um mensageiro comum. A VM Drag-n-Sploit utilizava os benefícios fornecidos pelo VMchat e com isso conseguia interceptar os dados que transitavam pelo canal de comunicação, podendo ele alterar os dados que estavam trafegando por ali. Isso era possível através da funcionalidade “drag-n-drop” (função de arrastar e soltar, geralmente utilizada para transferir um dado de uma VM para outra) fornecida pela própria VMware;
· Blue Pill: Criado pela pesquisadora Polonesa Joanna Rutkowska, a Blue Pill causou uma grande comoção na época. O ataque foi caracterizado como do tipo rootkit. Ataques deste tipo têm como princípio passar despercebido por métodos de detecção de intrusão. No caso da Blue Pill, o objetivo era passar despercebido também pela auditoria do hypervisor, o que gerou bastante contestação de diversos outros pesquisadores, já que para eles passar despercebido pelo hypervisor seria muito difícil.
A Blue Pill é um código malicioso que ao ser executado age como um gerenciador de máquinas virtuais (hypervisor), tentando virtualizar todo o sistema operacional, sem que este perceba. Dessa forma, ele consegue controlar e monitorar todo o sistema.
A contestação da comunidade de virtualização veio justamente sobre o encapsulamento invisível citado por Joanna, pois é extremamente difícil fazer com que um sistema virtualizado tenha o mesmo tempo de execução de uma instrução que um sistema não virtualizado, tornando assim improvável a invisibilidade da Blue Pill;
· TXT Hack: Também criado pela pesquisadora Joanna Rutkowska e outros pesquisadores, o ataque visava invadir a ferramenta Trusted Execution Technology (TXT), presente em chips Intel vPro. O TXT foi desenvolvido como uma extensão de hardware para processadores Intel, tendo como objetivo permitir mais segurança aos usuários e organizações. Segurança no sentido de fornecer mais controle no acesso aos dados, armazenamento de chave secreta e acesso autenticado a dados criptografados, além de proteção ao acesso direto à memória (DMA – Direct Access Memory). Um exemplo de hypervisor que pode ser afetado é o Xen da IBM.
Os pesquisadores tiveram que explorar um bug no software do sistema Intel seguido de um ataque contra uma falha do software TXT. Isso acabou permitindo que eles obtivessem acesso a áreas de memória até então tidas como altamente protegidas. Tal proteção no acesso a memória é considerado ainda mais privilegiado que o anel 0 de proteção (mencionado no tópico “Anéis de Proteção”). O sucesso do ataque se deu também em virtude de alguns erros de implementação de alguns módulos de código de autenticação que estão presentes nos chips TXT, os chamados SINIT (Authenticated Code Module Privilege Escalation).
Em 30 de setembro de 2009, foi enviado à Intel um relatório contendo todo o processo e comprovando a vulnerabilidade. A Intel confirmou a existência da mesma e anunciou posteriormente um novo pacote de atualização para o SINIT, corrigindo assim a falha.
Em meados de 2010, um grupo de pesquisa da North Carolina State University divulgou um documento relatando a criação de um mecanismo baseado em segurança e monitoramento do hypervisor, chamado de HyperSafe. Essa tecnologia garantia que qualquer malware ou outros ataques do tipo VM Escape não pudessem modificar a plataforma de execução do hypervisor. O HyperSafe foi criado com três propostas básicas: a primeira, de não afetar em nada o hypervisor original, mantendo assim sua estrutura padrão de funcionalidades e recursos, não causando impacto algum ao usuário; a segunda, é promover autoproteção do hypervisor, agindo de forma proativa e confiável, até mesmo ao se reportar um bug em endereçamentos de memória, o que poderia causar catástrofes ao sistema; e por fim, a terceira proposta é a compatibilidade com os diversos tipos de hardware existentes, fornecendo assim uma gama de possibilidades de proteção aos mais diversos ambientes virtualizados.
VM-Aware Malware
Uma das preocupações mais recorrentes desde 2006 são os ataques de malwares a ambientes virtualizados, o que compreende uma leva considerável de bots, worms, rootkits, e diversos outros tipos de códigos maliciosos, que são capazes de identificar em que ambientes estão sendo executados (virtuais ou físicos) tendo como base informações de memória, hardware, processos, etc.
A maior preocupação ocorre devido à presença crescente de vírus “inteligentes”, que identificam se estão executando em uma máquina virtual ou não. A partir desta informação ele irá dificultar a análise de seu comportamento. Por exemplo, caso alguém necessite analisar o comportamento de algum vírus, é necessário executá-lo em uma VM e isso dificulta e muito o combate a este tipo de ameaça, pois o mesmo tende a mascarar seu real funcionamento ao identificar que está sendo analisado.
Roubo de Máquina VirtuaUma preocupação recorrente com a segurança das máquinas virtuais é o roubo delas. Tendo em vista que as máquinas virtuais são apenas arquivos, um usuário/funcionário com acesso físico ao local de armazenamento (em geral storages) onde os dados das VMs estão guardados, ou até mesmo acesso a um local do hypervisor, pode copiar todos os arquivos das VMs em uma mídia local, por exemplo, e removê-los posteriormente.
Injeção de Código/Arquivo Malicioso
Pelo fato das máquinas virtuais serem, a grosso modo, apenas arquivos armazenados, qualquer alteração realizada nesses arquivos pode trazer grandes riscos. Sejam alterações de adição ou alteração de algum dado específico da VM, os ataques de injeção de código malicioso visam fazer com que o código injetado seja executado. Com isso, abre-se precedentes para diversas possibilidades de ataques, dentre elas ataques de negação de serviço (DoS – Denial of Service). Em ataques de injeção de código, uma máquina virtual com um vírus ou qualquer outro código malicioso pode ser inserida dentro de um ambiente virtual através dos seguintes métodos:
· Um invasor pode comprometer uma máquina virtual utilizando o hypervisor para transferir uma VM infectada para outro host via FTP e iniciando-a do outro lado;
· O invasor pode se passar por um “man-in-the-middle” (homem no meio, em tradução livre), que significa que o invasor fica “escutando” a comunicação entre o host físico e a máquina virtual, conseguindo assim modificar a troca de informações ali e fazer com que uma VM infectada se passe como uma VM segura;
· Outra forma de ataque ocorre quando o invasor faz uma busca na rede pelo local onde a máquina virtual está armazenada, e caso não haja controle de acesso lá é possível fazer uma cópia da mesma para outro local. A partir daí o atacante fica em condições de tentar qualquer modificação que lhe convenha.
Ataque de Negação de Serviço (DoS – Denial of Service)
Ataques de negação de serviço são inerentes a qualquer tipo de sistema ou aplicação. O DoS envia um grande número de pacotes (maliciosos ou não) endereçados a algum sistema ou aplicação, acarretando um alto processamento no alvo que está sendo acatado, causando falhas no sistema.
É comum encontrar ataques DoS em ambientes virtuais devido à funcionalidade de compartilhamento de recursos entre as VMs e o host físico. Se várias VMs começarem a consumir muito processamento, memória, disco, banda de rede no host físico, a tendência é esse host não conseguir mais operar de forma correta ou até mesmo seus recursos ficarem inacessíveis, podendo gerar danos às outras máquinas virtuais.
Um exemplo de ocorrência de ataque DoS foi em um ambiente com VMware ESXi, onde uma vulnerabilidade no protocolo NFC (Network File Copy) permitia a modificação do tráfego NFC entre o cliente e o servidor ESXi.
Footprinting
Footprinting é uma técnica de invasão baseada em conseguir informações de um possível alvo sem parecer que aquilo é um ataque. Geralmente a obtenção dessas informações se dá a partir de comandos remotos direcionados a quem se quer atacar. As respostas obtidas vão desde qual sistema operacional que está sendo executado na máquina alvo, quais portas estão abertas, até qual a ferramenta de proteção utilizada na máquina virtual.
O objetivo de quem está tentando invadir é traçar um perfil daquele alvo, identificando padrões anômalos de tráfego pela rede. Por exemplo, para identificar se o sistema alvo é uma VM ou não, os invasores analisam o tempo de sincronização entre um host e seu S.O. e o tempo de sincronização de uma VM com seu S.O. Geralmente o tempo de sincronização e alocação de um processo, por exemplo, em uma VM, é alto, já no host é baixo.
Existem ferramentas open source que auxiliam o invasor na identificação se o alvo é virtual ou não, utilizando diversos outros métodos de detecção. Sendo assim, o simples fato do atacante identificar que ali se trata de uma VM ou não o ajuda bastante no direcionamento das ações de invasão.
Recomendações de Segurança para Ambientes VirtualizadosMediante os ataques e ameaças destacadas na seção anterior, identifica-se que o hypervisor tem um papel primordial no combate ou prevenção desses ataques. Tendo em vista que é o principal componente do sistema, acaba sendo muito visado e por conta disso precisa de uma atenção especial para torná-lo seguro. Para isso, é necessário adotar medidas não apenas específicas ao hypervisor, mas sim a todo o ambiente em que ele está inserido, como storage, máquina física, infraestrutura de rede e desktops.
O foco das próximas seções é destacar algumas formas de tentar fornecer mais segurança tanto ao hypervisor como em boa parte dos componentes que fazem parte de um ambiente de virtualização.
Hypervisor
Quando se fala em segurança do hypervisor é necessário pensar no software de gerenciamento que o controla. É a partir desse software que é estabelecida a comunicação entre o usuário e o hypervisor. Com ele se torna possível usufruir das funcionalidades que o hypervisor proporciona, desde o gerenciamento de imagens até configurações de processador e memória.
Por conta disso, o primeiro parâmetro quando se pensa em formas de manter o hypervisor seguro é garantir ao máximo a segurança do software de gerenciamento. A maioria das ferramentas de gerenciamento utiliza o tradicional controle de acesso por login/senha, o que a depender das normas de segurança da empresa pode ser insuficiente, fazendo com que muitas empresas adotem outras medidas de segurança. Muitos sistemas de gerenciamento fornecem o controle de acesso baseado em permissões, onde apenas um grupo tem acesso irrestrito e outros apenas leitura, por exemplo.
Existem várias maneiras de tentar manter o hypervisor mais seguro, e para isso é imprescindível assegurar um bom gerenciamento da segurança dos diversos componentes (storage, switch, firewall, etc.) que suportam, de alguma forma, a comunicação com o hypervisor. Deste modo, toda e qualquer comunicação com redes externas deve ser criptografada utilizando métodos da própria ferramenta de virtualização ou de terceiros, como uma rede privada com VPN (Virtual Private Network).
A seguir é apresentada uma listagem de mais algumas recomendações de segurança para o hypervisor:
· Instalar todas as atualizações disponíveis sempre que disponibilizadas pelo fabricante;
· Restringir o acesso não autorizado à central de gerenciamento do hypervisor;
· Desconectar componentes de hardware que não estejam em uso. Por exemplo, discos removíveis utilizados para armazenar backups das máquinas virtuais;
· Manter desativado os recursos de compartilhamento e transferência de arquivos entre máquinas virtuais e/ou host físico. Como foi discutido anteriormente, pode haver potenciais ataques a partir dessas funcionalidades através do “escape-to-hypervisor”;
· Analisar continuamente o hypervisor e seu log com o objetivo de identificar ocasionais anormalidades;
· Prover controle ao acesso físico ao host em que o hypervisor se encontra, prevenindo contra reinicialização inesperada ou a inserção de algum componente USB, por exemplo.
É importante que as empresas e os profissionais de TI, ao implantarem um ambiente de virtualização, saibam que não se deve levar em consideração apenas o hypervisor. Muitas vezes um ataque surge em componentes ou recursos que estão fora dele, mas que possuem contato e caminho facilitado para chegar até ele.
Máquina Virtual
O sistema operacional de uma máquina virtual que executa em um ambiente virtual se comporta de forma semelhante a um sistema operacional de uma máquina física. Portanto, todas as considerações de segurança recomendados para sistemas operacionais em máquinas físicas também se aplicam aos virtuais.
A maior preocupação é o fato de uma VM infectada poder contaminar outras no mesmo ambiente. Por conta disso, é necessária uma preocupação que vai além de proteger o host físico. Para isso, medidas preventivas podem ser tomadas para prever alguma eventualidade. A seguir são listadas algumas delas:
· Seguir melhores práticas recomendadas pelos fabricantes de hardware, boas práticas em gerenciamento de log, autenticação e acesso remoto;
· Manter o sistema sempre atualizado de acordo com os updates recomendados pelos fabricantes;
· Manter rotinas de backup das máquinas virtuais;
· Desconectar componentes de hardware não utilizados, evitando assim alguma manobra maliciosa, como o uso de dispositivos USB que podem conter códigos maliciosos para infectar o host;
· Utilizar soluções de autenticação de usuários separadas para cada host, dificultando assim que caso uma senha seja descoberta o invasor consiga acesso a outras máquinas.
Infraestrutura de Virtualização
Prevenir e manter uma infraestrutura de virtualização seguindo as recomendações de segurança significa não apenas olhar para o hypervisor, host físico ou sistema operacional. A virtualização compreende também interfaces de armazenamento e rede. Por conta disso, o acesso a este tipo de dispositivo deve ser bem controlado, limitado apenas aos sistemas operacionais que o utilizam. Por exemplo, caso um disco rígido de um dispositivo de armazenamento seja compartilhado com duas máquinas virtuais, é preciso que haja um controle de acesso para que apenas essas duas venham a acessá-los.
Com relação aos componentes de rede, alguns switches não fornecem formas de monitoramento de tráfego para atividades suspeitas e também não oferecem um gerenciamento qualificado. Por conta disso, é comum adotar tecnologias de segurança adicionais para garantir o monitoramento, controle e inspeção da rede.
Como planejar e manter ambientes virtualizados seguros
A parte mais crítica na implantação de um projeto de virtualização seguro é o planejamento cuidadoso antes da implantação, configuração e instalação. Isso tornará mais fácil seguir as políticas organizacionais e pode garantir maior segurança ao ambiente. Muito dos problemas de segurança e desempenho ocorrem devido a problemas de planejamento de implementação.
Aspectos de segurança devem ser os primeiros a serem levados em consideração no planejamento para melhorar ambientes virtuais e diminuir os custos, até porque é muito mais caro tratar a segurança após a implantação e implementação. Os aspectos tratados nos tópico “Visão Geral do Hypervisor” e “Segurança em Ambientes Virtualizados” deste artigo devem ser levados em consideração para uma melhor estruturação das medidas a serem adotadas no projeto, visando auxiliar a organização no melhor caminho a seguir na implantação de soluções de virtualização.
As próximas seções serão dedicadas à exploração de um ciclo de vida de cinco fases que ajudam as organizações a definir em qual momento na implantação de um ambiente de virtualização uma recomendação de segurança pode ser relevante. O modelo foi adaptado de um ciclo de vida para sistemas pelo NIST (National Institute of Standards and Technology) para ambientes virtualizados. As fases do ciclo são definidas em Iniciação, Planejamento, Implementação, Operação e Manutenção, e Eliminação.
Fase 1: Iniciação
Esta fase compreende as tarefas necessárias que uma organização deve considerar ao projetar uma solução de virtualização para seu ambiente de TI, levando em conta os preceitos de confiabilidade, integridade e disponibilidade. Ou seja, a fase de iniciação envolve muitas ações preparatórias, como a identificação das necessidades atuais e futuras, e especificação de requisitos de desempenho, funcionamento e segurança.
Deve-se pensar como essas soluções serão administradas analisando também a possibilidade de atualização das políticas, tendo em vista a probabilidade de mudanças tecnológicas ou nas políticas de segurança da empresa.
Todos esses aspectos são necessários por se tratarem de pontos chave, já que a depender da escolha de uma política de segurança, isso pode impactar no tipo de virtualização a ser adotada no ambiente.
Fase 2: Planejamento
Passada a fase de iniciação, escolha da política de segurança e definições do que será necessário para a realização do projeto, o próximo passo é planejar a solução a ser implantada. Esta fase de planejamento engloba o detalhamento das características da solução escolhida, como qual método de autenticação será utilizado e mecanismos de criptografia, por exemplo. Tudo isso baseado em três parâmetros: arquitetura, criptografia e autenticação.
A arquitetura constitui na escolha do tipo de virtualização, do software de virtualização, assim como o armazenamento, topologia de rede, entre outros. Já a autenticação fica responsável por definir quais camadas de virtualização vão precisar de políticas de autenticação, tais como: S.O.da máquina virtual, hypervisor, S.O. do host físico, etc. E, por último, a criptografia, que inclui as escolhas do algoritmo de criptografia e proteção da integridade das comunicações de virtualização.
Nessa fase também é definido e documentado o plano de segurança a ser adotado para aquele projeto.
Fase 3: Implementação
A implementação compreende a instalação e validação de todo o ambiente que foi previamente discutido e definido na fase de planejamento da solução. Além disso, trata da validação e teste dos aspectos de segurança especificados. Ou seja, é a fase em que tudo é instalado, configurado e testado, porém ainda não é colocado em produção.
Nessa fase alguns aspectos precisam ser validados, a saber:
· Introspecção: determinar se a solução de virtualização escolhida no planejamento fornece informações necessárias para monitorar eventos de segurança que ocorrem no S.O. das máquinas virtuais;
· Autenticação: garantir que haja autenticação nas diversas camadas de virtualização;
· Conectividade: verificar se os usuários estão acessando o que a eles foi permitido e se acessam o que foi negado. Havendo divergência nesses pontos, é preciso rever a política de acesso;
· Segurança da implementação: mesmo na fase de implementação pode haver riscos do ambiente sofrer algum ataque. Por conta disso, é aconselhável manter atualizado e configurado corretamente todos os componentes que estão envolvidos na implementação do projeto de virtualização.
Fase 4: Operação e Manutenção
Nesta etapa os sistemas estão instalados, em operação, além de melhorias e modificações estarem sendo desenvolvidas e testadas. O sistema como um todo é monitorado para verificar se os requisitos de segurança estão sendo alcançados e como as modificações que estão sendo desenvolvidas e testadas estão agindo dentro do ambiente de virtualização.
Apesar de o sistema estar operacionalizado, caso seja necessário reimplementar ou modificar algo, pode ocorrer do ciclo voltar a alguma fase anterior. Devido à importância da manutenção do sistema/ambiente para a segurança, é importante ficar atento para os seguintes tópicos :
· Administração: ter certeza de que apenas administradores possuem acesso ao ambiente tanto de software como hardware;
· Atualização: verificar constantemente se há atualizações para hypervisor, sistemas operacionais (tanto das VMs como dos hosts), além também da atualização dos componentes que englobam o ambiente virtual;
· Sincronização: garantir que o relógio de sincronização de cada componente de virtualização esteja sincronizado com o relógio dos outros sistemas. Geralmente é utilizado o relógio do sistema operacional como guia;
· Controle: sempre manter as configurações de controle de acesso de acordo com as políticas de segurança, mudanças tecnológicas e constatações da auditoria;
· Logging: documentar anomalias que indicam atividade maliciosa ou suspeita dentro do ambiente virtual.
As organizações devem revisar periodicamente esses tópicos a fim de confirmar se as políticas da organização sobre segurança, procedimentos e processos estão sendo seguidas corretamente.
Fase 5: Eliminação
Após o uso de um dispositivo de virtualização, sendo este destinado à devolução (em caso de aluguel de equipamento) ou descarte, é preciso cuidado especial com a limpeza das informações que permanecem nele. Esta tarefa se torna bastante complicada devido à disposição dos arquivos no dispositivo. Cabe ressaltar que não há um local central onde os dados ficam armazenados e organizados. Por conta disso, essa fase do ciclo precisa ser bem definida por cada organização.
Este artigo foi elaborado seguindo três vertentes. Primeiramente foi feita uma descrição das técnicas de segurança e implantação mais comumente utilizadas em ambientes virtuais, as quais tentam minimizar os prejuízos causados por um ataque ou até mesmo evitar a ocorrência do mesmo.
Posteriormente foi realizada uma análise destacando vulnerabilidades e ataques mais comuns em ambientes virtuais, enfatizando o que pode ocasioná-los e, em alguns casos, como tentar combatê-los. Por fim, foi analisada e adaptada uma metodologia para segurança de sistemas, destacando a aplicação dessa metodologia em ambientes virtualizados.
Diante do que foi exposto neste artigo, pode-se concluir que a maior parte das vulnerabilidades e ataques em ambientes virtuais se dá a partir de falhas de controle de acesso, falha humana e falhas em outros hardwares/componentes que se comunicam com a máquina virtual/host físico. Sendo assim, é possível considerar que algumas das técnicas de segurança abortadas no tópico “Técnicas de Segurança em Ambientes Virtualizados” podem ajudar a melhorar a segurança em ambientes virtualizados. Além disso, é sempre bom destacar a importância de manter o ambiente atualizado.
Entre as técnicas tratadas neste artigo, destacam-se três como possíveis soluções às ameaças e vulnerabilidades. São elas: Anéis de proteção, monitoramento e criptografia de máquina virtual. Os anéis de proteção, por fornecerem um controle de acesso bastante rígido, o que dificulta o acesso não autorizado às camadas tanto de aplicação como do hypervisor, combatendo assim o roubo de máquina virtual e ataques do tipo VM escape, por exemplo.
O monitoramento, por prover a auditoria do ambiente, o que acaba auxiliando na detecção de intrusão no sistema, ajudando a combater ataques, prevenindo ameaças do tipo VM-Aware Malware, negação de serviço (DoS), etc. Por fim, a criptografia da máquina virtual, que camufla as informações ali existentes, permitindo que os dados, caso sejam acessados, não consigam ser interpretados pelo invasor, auxiliando no combate de ataques do tipo Footprinting e inserção de código malicioso. A Tabela 1 confronta as ameaças e suas respectivas defesas com base nas análises realizadas.
Ameaças |
Defesas |
VM Escape |
Anéis de Proteção |
N. Serviço (DoS), VM Escape |
Monitoramento de VM |
Footprinting, Inserção de Código Malicioso |
Criptografia de VM |
Tabela 1. Confronto entre ameaças e ataques .
Contudo, a adoção das técnicas de segurança não pode ser considerada como a principal e única forma de prevenção e proteção do ambiente. Por conta disso, no tópico “Como planejar e manter ambientes virtualizados seguros” foi mostrada uma adaptação de uma metodologia de segurança para sistemas, a ser aplicada em ambientes virtuais. Esta metodologia consistiu em um ciclo de vida de cinco etapas, que tratam desde o planejamento do projeto de virtualização até sua entrega final, sempre levando em consideração os aspectos de segurança em cada etapa. Ou seja, é uma forma de organização e planejamento da implementação de um ambiente, levando em consideração diversos parâmetros que são importantes e que se não forem bem discutidos podem acarretar em uma vulnerabilidade futura.
Por exemplo, ataques provenientes de inserção de código malicioso e roubo de máquina virtual podem ser evitados com um planejamento de como será o acesso às máquinas virtuais e/ou ao host físico, controlando assim o risco de alguém inserir um pendrive no host ou até mesmo ter permissão de acesso, que foi atribuída por engano, e a partir daí conseguir extrair informações que até então não lhe eram permitidas.
Com isso, conclui-se também que a segurança em virtualização não depende única e exclusivamente do combate a falhas em seu software de gerenciamento, hypervisor ou hardware, mas sim de um planejamento, manutenção e gerenciamento rigoroso durante todo seu tempo de vida útil. Qualquer deslize, por menor que seja, pode acabar comprometendo a segurança de todo um ambiente.
Links
Fawzi. M., (2009). Virtualization and
Protection Rings Part 1
http://fawzi.wordpress.com/2009/05/24/virtualization-and-protection
-rings-welcome-to-ring-1-part-i/
Shackleford, D (2013). Virtualization Security: Protecting Virtualized Environments, Indianapolis, Indiana: John Wiley & Sons, Inc. 2013. 253 páginas. ISBN 978-1-118-28812-2.
Caicedo, C., Brooks, T. e Park, J. (2012). Security Vulnerability Analysis in Virtualized Computing Environments. International Journal of Intelligent Computing Research (IJICR), Volume 3, 2012, pp. 280-281.
WMware (2010). vSphere 5.1 Monitoring and Performance. VMware, Inc, 2009-2011.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Revista
-
Artigo