
Exploit de escape de guest para host KVM/x86 (CVE-2026-53359) explorando um use-after-free na emulação de MMU sombra. Inclui PoC para disparar um pânico do kernel do host e escape completo em arquiteturas Intel/AMD.

Este documento descreve a vulnerabilidade Januscape (CVE-2026-53359) descoberta e reportada por Hyunwoo Kim (@v4bel). É uma vulnerabilidade de escape KVM que permite que um convidado escape para o anfitrião em um ambiente KVM/x86. Até onde se sabe publicamente, esta é a primeira pesquisa de exploração convidado-para-anfitrião acionável tanto na Intel quanto na AMD, em vez de ser limitada a uma única arquitetura.
Januscape é uma vulnerabilidade de use-after-free na emulação shadow MMU do KVM/x86. Pode acionar o bug apenas com ações do lado do convidado para corromper a shadow page do kernel do anfitrião, e pode ameaçar o isolamento convidado-anfitrião de hosts KVM/x86 que aceitam convidados não confiáveis e expõem virtualização aninhada, particularmente nuvens públicas x86 multi-inquilino (GCP, AWS, etc.).
Na verdade, o Januscape foi usado com sucesso como um exploit 0-day no Google kvmCTF.
Para informações técnicas detalhadas, veja aqui.
[!NOTE] Após reportar esta vulnerabilidade para [email protected], o embargo acordado terminou, então o exploit é postado no oss-security e este documento Januscape é publicado. Para a linha do tempo da divulgação, veja o documento de detalhes técnicos.
Executar o PoC dentro de uma VM convidada pode acionar um pânico do kernel do anfitrião. Um exploit de escape completo que funciona em um ambiente controlado também existe, mas não é divulgado neste momento e está planejado para ser divulgado em um futuro muito distante.
Em distribuições como RHEL, /dev/kvm é gravável por todos (0666), então um usuário não privilegiado também poderia transformar esta vulnerabilidade em um LPE confiável para root. Dito isso, fazer isso seria como pagar ouro por lixo, então não vou me preocupar em cobrir isso.
# sudo apt-get install -y build-essential linux-headers-$(uname -r)
# make
[Intel]
# sudo rmmod kvm_intel; sudo insmod poc.ko
[AMD]
# sudo rmmod kvm_amd; sudo insmod poc.ko amd=1
[*] poc step 4/4: race live -- host DoS triggering
...
kernel BUG at arch/x86/kvm/mmu/mmu.c (pte_list_remove)
Comm: qemu-kvm
Este PoC tem a intenção de fornecer informações precisas. Não o utilize em sistemas que você não está autorizado a testar.
Januscape (CVE-2026-53359) cobre o intervalo de 2032a93d66fa (2010-08-01) a 81ccda30b4e8 (2026-06-16).
Em outras palavras, esta vulnerabilidade permaneceu dormente por cerca de "16 anos".
Há dois impactos no total:
/dev/kvm é gravável por todos (0666), então um usuário não privilegiado também pode usar esta vulnerabilidade como um LPE confiável para obter root.Se você opera um host KVM x86 que aceita convidados multi-inquilino e suporta virtualização aninhada, ou usa uma instância em cima de um, verifique se o patch 81ccda30b4e8 está aplicado ao kernel do anfitrião.
Não. A vulnerabilidade é acionada apenas nas arquiteturas Intel e AMD. Dito isso, se você ainda não aplicou o patch do ITScape (CVE-2026-46316) publicado anteriormente, seus hosts arm64 também estão vulneráveis, então aplique o patch prontamente.
Não. Diferente das vulnerabilidades de escape QEMU comumente publicadas, o Januscape ocorre no KVM dentro do kernel, então é acionado independentemente da emulação do QEMU. Por causa disso, também pode ameaçar grandes nuvens públicas que implementam e usam sua própria pilha de virtualização.
Sim. Inserir o módulo requer privilégio de kernel convidado. Quando você recebe uma instância em uma nuvem pública, geralmente tem root na sua própria VM, então isso é satisfeito. Em um cenário sem root no convidado, deve ser encadeado com um LPE como Dirty Frag.