Blog Agility

Vulnerabilidade Venom

Vulnerabilidade Venom

Por Leon Volkoff Filho / Mauro Risonho:

VENOM é uma sigla para “Virtualized Environment Neglected Operations Manipulation” (Manipulação de Operações Negligenciadas em Ambiente Virtualizado) de uma área “negligenciada” do sistema, no caso o “floppy drive”.Atacantes podem explorar a vulnerabilidade mirando o ataque no controlador de disquete (geralmente ignorado) do datacenter. Utilizando um código específico, pode-se gerar uma pane e comprometer todo o servidor, suas máquinas virtuais e as redes de comunicação.

ID Mitre da Vulnerabilidade:

CVE-2015-3456 – http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3456

O Ambiente Vulnerável

O erro está no Controlador de disquete virtual do QEMU (FDC, Floppy Disk Controller, em inglês). Este código FDC vulnerável é usado em inúmeras plataformas de virtualização e equipamentos, como Xen, KVM, VirtualBox, e o cliente nativo QEMU;

A vulnerabilidade VENOM existe na base de código do hypervisor, sendo independente de sistema operacional do host (hospedeiro) (Linux, Windows, Mac OS, etc.);

Embora a vulnerabilidade VENOM também seja independente de sistema operacional do guest (convidado), um atacante (ou malware de um atacante) deveria ter privilégios administrativos ou de root no sistema operacional guest (convidado) para explorar.

Esta vulnerabilidade é determinada como BufferOverFlow¹.

¹ BufferOverFlow = uma anomalia na qual um programa, ao escrever dados em um buffer, ultrapassa os limites do buffer e sobrescreve a memória adjacente. Esse é um caso especial de violação de segurança de memória.
Ataques do tipo BufferOverFlow podem ser disparados por entradas que são projetadas para executar código, ou alterar o modo como o programa funciona. Isso pode resultar em comportamentos errados do programa, incluindo erros de acesso à memória, resultados incorretos, parada total do sistema, ou uma brecha num sistema de segurança, para ganhar acesso irrestrito em alguns cenários. Portanto, eles são a base de muitas vulnerabilidades de software e podem ser explorados maliciosamente, remotamente ou localmente, conforme o caso.

Como é o ataque?

Techtip - 2015_Junho_Leon_Volkoff__Mauro_Risonho_VENON v5-01
Imagem adaptada de: http://blog.4partner.com.br/licenca-oracle-com-vmware-oracle-vm-aws

Techtip - 2015_Junho_Leon_Volkoff__Mauro_Risonho_VENON v5-02
Imagem adaptada de: http://www.guinux.com.br/guinux/?p=520


Quais riscos envolvidos com esta vulnerabilidade no ambiente?

  • Acesso ao próprio host físico;
  • Controle de acesso da máquina comprometida;
  • Acesso lateral às VMs dentro do Host físico;
  • Paralisação dos serviços envolvidos (DoS local);
  • Vazamento de informações;
  • Alteração das informações.

Quais fabricantes estão vulneráveis?

Abaixo segue uma lista atualizada no dia 28/05/2015 com os fabricantes vulneráveis e as respectivas URL´s com as informações sobre cada fabricante.

Quais fabricantes não estão vulneráveis?

  • VMware
  • Microsoft Hyper-V
  • Bochs Hypervisors


Conheça mais detalhes do VENOM:

Características do VENOM:

  1. Versões das implementações ou próprio código-fonte, sendo baseado nas séries XenProject 4.2.x e XenProject 4.3.x
  2. O usuário deve ter uma máquina virtual (guest) em contato com a máquina física (host).
  3. O usuário deve ter uma máquina virtual (guest) e seu usuário com perfil administrativo local, no caso de Linux (root), Windows (administrador ou administrator, conforme versão de idioma), Mac Apple (root).
  4. A máquina virtual (guest) deve ter as opções setadas na máquina física(host):
    1. Conter QEMU na implementação do Xen x86(32bits)
    2. Conter feature habilitada com HVM (Hardware Virtual Machine) e/ou flags extensions habilitadas (ambas ou apenas uma), Intel VT/AMD-V.

Observação:

  • Independentemente da máquina física (host), ter ou não a unidade de floppy drive (drive de disquete), habilitada ou não, na BIOS (Base Input Output System) ou emular o floppy drive; não resulta em mitigar o ataque, pois a vulnerabilidade está na implementação do hypervisor (virtual machine monitor (VMM), que faz o monitoramento e gerenciamento, entre máquina virtual (guest) e máquina física(host), sendo necessário correções via patches.

Conhecendo por baixo do Iceberg do VENOM

Descrição técnica

  • Durante o processamento de certos comandos, como FD_CMD_READ_ID e FD_CMD_DRIVE_SPECIFICATION_COMMAND o acesso à memória fifo (first input e first output) poderia sair dos limites e conduzir à corrupção de memória (ex: Buffer OverFlow) com valores da máquina virtual (guest), na máquina física (host), ganhando acesso, não autorizado e irrestrito entre máquina virtual (guest) e máquina física (host) e também lateralmente, entre máquinas virtuais (guest), da mesma forma.
  • O patch é utilizado, para se certificar que o índice é sempre limitado, por meio da memória fifo (first input e first output), alocada.

Detalhando o código-fonte dos projetos QEMU e ZEN Project

Localizando a vulnerabilidade:

Para efetuar o processo de análise do código-fonte, neste caso será necessário fazer um clone do código-fonte, do projeto Xen Project, versão do clone do dia 15-05-2015-01:41:23 PM BRT xen-4.3-qemu-xenbits.xen.org-xen-4.3-testing.git.

Passo 1

  • Executar clone do código fonte da versão vulnerável, para análise:

Comando:

git clone git://xenbits.xen.org/qemu-xen-4.3-testing.git

Techtip - 2015_Junho_Leon_Volkoff__Mauro_Risonho_VENON v5-03
Imagem 3 – Clone do código-fonte

Passo 2

Abrir o código-fonte, para análise:

Localização 1 da vulnerabilidade:

<pasta-codigo-fonte>/src/xen-4.3.0/tools/qemu-xen/hw/fd.c

Comando:

vim <pasta-codigo-fonte>/src/xen-4.3.0/tools/qemu-xen/hw/fd.c

Techtip - 2015_Junho_Leon_Volkoff__Mauro_Risonho_VENON v5-04
Imagem 4 – Ponto exato da vulnerabilidade VENOM no código-fonte do XenProject, usando implementação do código-fonte do QEMU, na pasta “qemu-xen”. 

Observações

Arquivo analisado totalmente:                 fd.c

Quantidade de Linhas Analisadas:          2284 linhas

Linguagem de Programação:                   C

Número da linha vulnerável:                   381

Instrução:                                                 FD_CMD_READ_ID = 0x0a,

 

Passo 3

  • Abrir o código-fonte, para análise:

Localização 2 da vulnerabilidade:

<pasta-codigo-fonte>/src/xen-4.3.0/tools/qemu-xen-traditional/hw/fd.c

 

Comando:

vim <pasta-codigo-fonte>/src/xen-4.3.0/tools/qemu-xen-traditional/hw/fd.c

Techtip - 2015_Junho_Leon_Volkoff__Mauro_Risonho_VENON v5-05
imagem 5 – Ponto exato da vulnerabilidade VENOM no código-fonte do XenProject, usando implementação do código-fonte do QEMU, na pasta “qemu-xen-traditional”.

 

Observações

Arquivo analisado totalmente:                   /src/xen-4.3.0/tools/qemu-xen-traditional/hw/fd.c

Quantidade de Linhas Analisadas:            2284 linhas

Linguagem de Programação:                   C

Número da linha vulnerável:                   1937

Instrução:                                                 FD_CMD_READ_ID = 0x0a,

 

Indicadores da análise do código-fonte:

 

Techtip - 2015_Junho_Leon_Volkoff__Mauro_Risonho_VENON v5-06


Conforme já visto com os fabricantes, a melhor forma de se prevenir contra esta vulnerabilidade em seu ambiente virtual é a aplicação do patch de correção disponibilizado por cada fabricante.   Agradecimentos:
– José Manuel Louro de Castro Valente – Agility Networks, DATA CENTER – PROJETOS – https://br.linkedin.com/in/josemanuelvalente/pt

– Jose Urias de Sousa – Agility Networks, DATA CENTER – PROJETOS – https://br.linkedin.com/pub/urias-sousa/0/bb3/135