Uma falha de 16 anos no hipervisor KVM do Linux, batizada de Januscape (CVE-2026-53359), permite que uma máquina virtual convidada escape para o host com privilégios de root. Funciona em Intel e AMD. O PoC já é público. Se você hospeda VMs multi-tenant com nested virtualization, o risco é imediato.

Bug dormiu no kernel desde 2010

A vulnerabilidade existe no código de shadow MMU do KVM, o subsistema responsável por traduzir endereços de memória de máquinas virtuais para a memória física do host. O código defeituoso foi introduzido em agosto de 2010 (kernel 2.6.36, commit 2032a93d66fa) e só recebeu correção definitiva em 19 de junho de 2026, via commit 81ccda30b4e8 assinado pelo maintainer Paolo Bonzini.

O problema é um use-after-free na função kvm_mmu_get_child_sp(). Quando o KVM precisa reutilizar uma página de shadow para mapear a memória de um convidado, ele compara apenas o endereço de memória (gfn) e ignora o tipo da página (role). Duas páginas de funções diferentes podem compartilhar o mesmo endereço, mas executam tarefas completamente distintas — uma faz shadowing direto de uma tabela de páginas, outra faz split de uma large page. Ao reutilizar a página errada, o KVM corrompe seus registros internos de propriedade e ciclo de vida daquela estrutura.

A correção é uma única linha adicionada à função de reutilização: agora o KVM verifica role.word além do gfn, garantindo que a página só seja reaproveitada quando tanto o endereço quanto o tipo coincidem. Simples, mas o impacto de não ter essa verificação durante 16 anos é monumental.

Do pânico à execução no host

O PoC publicado pelo pesquisador Hyunwoo Kim demonstra que um convidado com root e acesso a nested virtualization consegue derrubar o host com kernel panic. Todas as VMs na mesma máquina física caem juntas. É um denial-of-service determinístico: o atacante carrega um módulo de kernel no convidado e em segundos provoca o crash. Não é necessário interação com QEMU ou qualquer processo em userspace — o bug é puramente in-kernel.

O cenário mais grave — ainda não liberado publicamente — é a conversão do bug em execução remota de código no host. Kim afirma possuir um exploit funcional que transforma a mesma vulnerabilidade em root completo no host. O mecanismo: a página de shadow liberada é realocada para outro propósito no kernel, e a rotina de limpeza do KVM escreve um valor fixo em memória que já não lhe pertence. O atacante controla o offset onde a escrita acontece, o que pode ser trabalhado até virar execução de código arbitrário. Embora o atacante não controle o valor escrito, o controle sobre a posição já é foothold suficiente para escalonamento.

É o mesmo padrão de exploração visto em Dirty Pipe e Dirty Cow — vulnerabilidades de escrita limitada que foram transformadas em root completo por pesquisadores. A diferença é que Januscape cruza a barreira da VM, algo muito mais grave em ambientes de cloud.

Funciona em Intel e AMD

Januscape é notável por ser o primeiro guest-to-host escape divulgado publicamente que funciona em ambas as arquiteturas x86. O bug reside no código independente de arquitetura do shadow MMU, na camada compartilhada entre Intel e AMD. No Intel, o atacante usa vmxon e vmlaunch para entrar em modo de operação de VM; no AMD, vmrun. O PoC de Kim inclui uma camada de abstração que seleciona o backend correto para cada arquitetura — ambos geram a mesma corrupção de memória no host.

Para que o ataque funcione, o host precisa ter nested virtualization habilitada. Esse é o detalhe central. Mesmo em hosts com EPT (Extended Page Tables, Intel) ou NPT (Nested Page Tables, AMD) ativados por padrão, a nested virtualization força o KVM a voltar para o caminho legado de shadow MMU — exatamente onde o bug vive. Sem nested virtualization, hosts modernos usam hardening por hardware e não tocam no código vulnerável.

Em distribuições como RHEL, onde /dev/kvm tem permissões 0666 (escrita global), a falha também serve como escalação local de privilégios para root, sem necessidade de VMs. Qualquer usuário local do sistema pode criar uma VM, ativar nested virtualization dentro dela e explotar o bug — ou, dependendo da configuração, escalar diretamente sem passar por uma VM convidada.

Quem está no alvo

Ameaças diretas de Januscape para o ecossistema brasileiro e global:

  • Provedores de cloud e VPS: qualquer host KVM x86 que aceita convidados não confiáveis com nested virtualization habilitada. Um atacante que aluga uma única instância de R$ 50 pode crashar o host inteiro, levando dezenas de clientes offline. Com o exploit não liberado publicamente, pode comprometer todas as VMs vizinhas e roubar dados de outros tenants.
  • Clusters Kubernetes e hosts de containers: ambientes multi-tenant onde namespaces não confiáveis podem acessar /dev/kvm. Plataformas de hospedagem de containers que expõem virtualização aninhada são alvos primários.
  • CI/CD runners: pipelines que executam builds dentro de VMs convidadas com nested virtualization. Um código malicioso submetido por um contribuinte externo pode comprometer o runner e toda a infraestrutura de CI.
  • Distribuições com /dev/kvm world-writable: RHEL e variantes onde qualquer usuário local pode criar VMs e escalar para root sem nested virtualization. Servidores universitários, laboratórios e ambientes compartilhados são especialmente expostos.

Como se proteger agora

  1. Atualize o kernel imediatamente. Versões corrigidas no upstream: 7.1.3, 6.18.38, 6.12.95, 6.6.144, 6.1.177, 5.15.211 e 5.10.260, todas com patch datado de 4 de julho de 2026. Debian publicou DSA-6381-1 em 5 de julho. Verifique o changelog da sua distribuição, não confie apenas no output de uname -r.
  2. Desabilite nested virtualization. Se não há necessidade dessa funcionalidade, configure kvm_intel.nested=0 ou kvm_amd.nested=0 como parâmetro do kernel. Isso remove completamente o vetor de ataque para convidados não confiáveis.
  3. Restrinja /dev/kvm. Em ambientes multi-tenant, limite acesso ao device para grupos específicos via udev rules. Nunca deixe permissões 0666 em produção.
  4. Monitore panics de KVM. Kernel panics inesperados em hosts com convidados ativos são indicativo de exploração ativa. Configure alertas em dmesg e journalctl para eventos de KVM.

O pesquisador por trás da descoberta

Hyunwoo Kim (@v4bel) é o mesmo pesquisador que divulgou DirtyFrag (CVE-2026-43284), ITScape (CVE-2026-46316) e Copy Fail (CVE-2026-31431) nos últimos meses. Januscape foi submetido como zero-day ao kvmCTF do Google, programa de recompensas que paga até US$ 250 mil por escapes completos de convidado para host. É o terceiro escape de KVM divulgado por Kim em dois meses — e o segundo na mesma família de bugs de shadow MMU, após o Copy Fail.

Em maio de 2026, um use-after-free distinto no mesmo código de shadow MMU (CVE-2026-46113) também recebeu correção. São dois bugs do tipo na mesma via de código legado em menos de dois meses — o que sugere que o shadow paging do KVM precisa de uma revisão de segurança mais profunda, não apenas patches isolados.

Leia também

Bad Epoll: falha no kernel Linux concede root via exploit

Copy Fail: exploit de 732 bytes dá root em todo Linux

DirtyClone: nova falha do kernel Linux dá root total

Referências