Gartner "reinventa" o conceito de Snapshot-Based Security

Acabei de receber um email do Lincoln dando conta que Neil McDonald do Gartner propôs uma idéia semelhante à que eu já tinha dado para usar o recurso de "snapshots" de sistemas de virtualização para incrementar a segurança de sistemas computacionais contra invasão, batizando-a com o pomposo nome de "systematic workload reprovisioning".

Na realidade, não fui nem eu nem o Neil que inventamos o conceito. Nem sei quem foi o primeiro a propô-lo; ele já circula há algum tempo no meio acadêmico e há um monte de gente trabalhando nisso. O esquema que eu descrevi já é usado por um monte de gente da Tempest e fora dela.

Há vários esforços para embutir esses recursos direto no sistema operacional. A turma do Quebes.OS, por exemplo, está fazendo isso usando Xen.

Aqui na Tempest, temos uma versão do Ubuntu que batizamos de "ResilientUbuntu", onde usamos VServers para prover isolamento e snapshots ultra-leves com rollback super rápido (da ordem de segundos) para implementar um conceito que chamamos de "hipercompartimentalização": cada aplicação roda em uma máquina virtual separada. A sacada é como fazer isso sem ferrar o desempenho nem consumir memória demais.

Exemplo: toda vez que eu clico em um ícone no meu desktop, o sistema operacional clona uma máquina virtual que roda o meu navegador. Visualmente, ele aparece na tela como uma janela quase idêntica às demais, salvo por uma barra de título (identificado o nome da máquina virtual) e algumas decorações diferentes. Se por caso eu visitar um site infectado com algum "malware", o dano fica limitado a essa máquina virtual, sem afetar o restante do sistema. O malware tem a impressão de que tem domínio total da máquina, mas na realidade só enxerga um subconjunto dela. Além disso, quando eu fechar o navegador, a máquina virtual é destruída. Quando eu abrir o navegador de novo, ela será reclonada a partir da cópia-mestra, que não tinha o "malware".

Há quem descreva esse esquema usando analogia meio forçada: é como se a máquina se "auto-desinfectasse" sozinha. Mas talvez uma analogia melhor seria dizer que a máquina virtual é como uma luva descartável: a gente joga fora depois de usar e pega uma nova da próxima vez.

Eu pretendia apresentar esse nosso esquema no FISL12, mas minha palestra não foi escolhida pelo torneio suíço. Mas quando eu terminar uns outros projetos, eu prometo que documento esse lance aqui.

De qualquer forma, é sempre bom constatar nós temos idéias semelhantes às de gente do peso do pessoal do Gartner. Sobretudo quando nós a pensamos e praticamos primeiro. :)

Comentários
Aceita-se formatação à la TWiki. HTML e scripts são filtrados. Máximo 15KiB.

 
Enviando... por favor aguarde...
Comentário enviado com suceso -- obrigado.
Ele aparecerá quando os moderadores o aprovarem.
Houve uma falha no envio do formulário!
Deixei uma nota para os admins verificarem o problema.
Perdoe-nos o transtorno. Por favor tente novamente mais tarde.
Marco Carnut | 2012-06-19 10:45:17 | permalink | topo

Demorei, mas finalmente escrevi o artigo completo sobre o esquema de "snapshot security" com virtualização ultra-leve que esbocei no comentário anterior:

Marco Carnut | 2011-06-24 16:28:18 | permalink | topo

Magf,

Vou tentar explicar melhor: no setup que eu fiz, a graça é que podemos usar um recurso chamado "unificação" oferecido pelos VServers que permite criar várias máquinas virtuais consumindo pouquíssima memória e disco. Isso torna viável ter 40 ou 50 máquinas virtuais em uma mesma máquina real sem ficar pesado.

Então, como as máquinas virtuais são muito leves, a gente "esbanja": eu instalei quase cada aplicação individual em um VServer diferente, mas apontei o $DISPLAY de todos eles para o X da máquina real.

Para os navegadores, eu tenho quatro máquinas virtuais: uma chamada ffox_misc para navegação geral, outra chamada ffox_bank com um navegador que eu uso exclusivamente para acessar meu banco via Internet, outro chamado ffox_tsi exclusivamente para os sites da Tempest e outro, que eu chamo de ffox_dirty, ainda para sites "perigosos". Imagine agora que eu, usando o navegador instalado a máquina virtual ffox_dirty, visito um site malicioso que infectou meu navegador. Duas coisas acontecem:

  • A "infecção" fica limitada à máquina virtual ffox_dirty.
  • Quando eu fechar a máquina virtual ffox_dirty, a infecção desaparece, porque eu deleto o snapshot e o recrio a partir da cópia-mestra na próxima vez que der partida nela de novo. Ou seja, eu tenho sempre certeza que o ffox_dirty começa exatamente do jeito que eu o deixei preparado da primeira vez, e não o jeito que estava desde a última vez que eu o usei.

Ou seja, você está certo: é um sandbox. Mas é um sandbox muito mais abrangente, seguro, poderoso e conveniente do que qualquer outro que eu conheça, e com baixíssimo footprint de disco, memória e desempenho. De fato, o desempenho é subjetivamente idêntico à de uma aplicação nativa rodando na máquina hospedeira.

Mas, como você pode imaginar, eu omiti uma penca de detalhes técnicos aqui, por brevidade. Tenciono fazer uma série de artigos detalhando timtim por timtim todos os aspectos técnicos dessa solução. Como eu disse, eu pretendia apresentar isso no FISL, mas, a palestra não foi aprovada.

No artigo "Vivendo Livre de Vírus Sem Anti-Vírus", eu descrevo uma maneira de fazer algo parecido no Windows usando o VMWare, muito embora no Linux com VServers fique muuuuuuito mais leve.

Magf | 2011-06-23 23:14:39 | permalink | topo

Não é por mal, mas esse esquema do ícone no Desktop (que poderia ser um navegador, por exemplo) não é só um Sandbox não? Pra Windows acho até que tinha um aplicativo que se chamava Sandbox mesmo, e que fazia mais ou menos isso. Não cheguei a usar, mas lembro de Aldo falando. E já faz tempo. Certamente é muito menos "pesado" que usar um clone de uma VM toda vez. Mas além da óbvia diferença, o que se ganha a mais com uma VM e não um "chroot"/Sandbox?

Marco Carnut | 2011-06-22 14:27:31 | permalink | topo

Wagner,

Bom ter aqui conosco alguém como você, que, entre tantas outras virtudes, aprecia o bom humor com o qual tentamos "ir levando" – do qual o "Tímido Visitante Anônimo" é apenas um exemplo.

Por favor nos brinde com mais frequência com seus comentários e opiniões.

-K.

Wagner Elias | 2011-06-22 14:02:00 | permalink | topo

O Gartner vive de tentar promover novas tecnologias/conceitos usando nomes pomposos (não posso deixar de lembrar disto [1] ) e fazendo projeções com números mágicos para promover o mercado de interesse deles.

Kiko, por favor compartilhe estas experiências sempre, estou sempre aprendendo algo diferente por aqui.

[1] - "Este padrão é baseado na idéia de que quanto mais simples o projeto, melhor. O termo foi inventado por Martin Fowler, Rebecca Parsons e Josh MacKenzie em Setembro de 2000. "Nós queríamos saber porque as pessoas eram contra o uso de objetos regulares em seus sistemas e concluímos que era devido a falta de um nome extravagante para eles. Assim nós demos-lhes um, e funcionou muito bem.". O termo segue o padrão de atribuir um nome para tecnologias que não possuem nenhuma característica nova, como POTS (Plain Old Telephone Service)."

http://pt.wikipedia.org/wiki/Plain_Old_Java_Objects

Obs.: O timido visitante anônimo é tão engraçado que eu quase não preenchi meu nome. ;-)

Abs.