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
- 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. - Desabilite nested virtualization. Se não há necessidade dessa funcionalidade, configure
kvm_intel.nested=0oukvm_amd.nested=0como parâmetro do kernel. Isso remove completamente o vetor de ataque para convidados não confiáveis. - 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.
- Monitore panics de KVM. Kernel panics inesperados em hosts com convidados ativos são indicativo de exploração ativa. Configure alertas em
dmesgejournalctlpara 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