Duas vulnerabilidades de escape de VM no Linux: PwnEscape e Vghost — além do KVM

Foram divulgadas duas vulnerabilidades no kernel do Linux que podem violar o isolamento de VMs: CVE-2026-99999 (PwnEscape) e CVE-2026-74580 (Vghost). A primeira envolve o cálculo adiado de checksum de rede, enquanto a segunda envolve um cache de tradução de endereços obsoleto no subsistema vhost.
CVE-2026-99999 — PwnEscape: modificação do cabeçalho IPv4 após a validação
Pesquisadores da pwn.ai descobriram que metadados CHECKSUM_PARTIAL controlados pelo convidado — skb->csum_start e skb->csum_offset — podem fazer com que skb_checksum_help() grave um checksum em um cabeçalho IPv4 já validado. Na cadeia de exploração demonstrada, o kernel inicialmente processa um pacote com IHL=5 (20 bytes), mas a gravação adiada o altera para IHL=15 (60 bytes). ip_do_fragment() então usa o comprimento de cabeçalho modificado e inclui 32 bytes de memória do host além dos dados lógicos de sk_buff nos fragmentos de saída. O vazamento resulta de uma incompatibilidade entre o comprimento lógico do pacote e o tamanho do cabeçalho copiado.
Em seu próprio ambiente de teste KVM, os pesquisadores transformaram o vazamento em uma gravação controlada de 64 bytes na memória do kernel e executaram um comando com privilégios de root no host. A cadeia teve sucesso em quatro testes independentes de inicialização a frio, mas os autores reservaram os detalhes de como progrediram do vazamento para a gravação para uma publicação subsequente.
O commit 6785011f8b16, mesclado na linha principal do Linux em 14 de outubro de 2026, adiciona ip_check_csum_start() antes da conclusão do checksum em cinco caminhos de código IPv4. A correção impede gravações em um cabeçalho IPv4 já processado, mas não constitui validação abrangente dos metadados de checksum virtio recebidos.
CVE-2026-74580 — Vghost: cache IOTLB obsoleto e escape de VM
A Equipe de Segurança do TencentOS descobriu que o vhost do Linux não invalida o cache vq->meta_iotlb[] após alterações na configuração da virtqueue por meio de VHOST_SET_VRING_ADDR e VHOST_SET_VRING_NUM. Como resultado, a nova configuração pode reutilizar uma tradução IOTLB obsoleta sem revalidar o intervalo de endereços. O ponteiro resultante é passado para raw_copy_to_user() ou raw_copy_from_user(), permitindo primitivas de leitura e gravação de memória.
Os pesquisadores demonstraram dois cenários de ataque: • Escalonamento local de privilégios. Um usuário com acesso a /dev/vhost- vaza endereços do kernel, determina o deslocamento do KASLR, sobrescreve modprobe_path e executa código como root. A cadeia completa foi reproduzida no Ubuntu 26.04, RHEL 9.8, Amazon Linux 2023, Azure Linux 3.0 e Oracle Linux 10.2. Nos quatro últimos sistemas, /dev/vhost-vsock tinha permissões 0666, tornando o ataque acessível a um usuário local sem privilégios. No sistema Ubuntu testado, era necessária a participação no grupo kvm. • Escape de convidado para host. Uma VM convidada com vIOMMU, iommu_platform e VIRTIO_F_RING_RESET pode reinicializar uma virtqueue enquanto retém uma entrada de cache obsoleta. Isso causa uma gravação fora dos limites no heap do QEMU, fora da região de memória do convidado. Os pesquisadores demonstraram corrupção de estruturas QOM e controle sobre o ponteiro de instrução (RIP) do processo QEMU, mas não afirmaram ter concluído uma cadeia de exploração que execute um comando de nível root no host a partir do convidado.
O commit de845981da67 invalida o cache de metadados quando a configuração da virtqueue muda. As primeiras versões corrigidas dos ramos estáveis correspondentes do kernel são 5.10.265, 5.15.216, 6.1.183, 6.6.152, 6.12.104, 6.18.45, 7.1.9 e 7.2. Para kernels de distribuição, correções retroportadas também devem ser consideradas.
Artigo (CVE-2026-99999): https://pwn.ai/blog/pwnescape
Vulnerabilidades
Fornecedor
Produto
Mais