CVE-2026-53360
KVM: SEV: Exigir área de rascunho no GHCB se GHCB v2+ estiver em uso
- Publicado
- 4 de jul. de 2026
- Atualizado
- 5 de ago. de 2026
- Atribuindo CNA
- Linux
- Evidência observada
- 8 de ago. de 2026
CVSS primário
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HBaixo · próximos 30 dias
- Percentil
- 15,8%
- Data do modelo
- 21 de set. de 2026
EPSS é uma estimativa estatística, não uma certeza ou uma medida de impacto. Combine-o com CVSS, status KEV, exposição e seu ambiente.
Resumo
No kernel Linux, a seguinte vulnerabilidade foi resolvida: KVM: SEV: Exigir área de scratch in-GHCB se GHCB v2+ estiver em uso De acordo com a especificação GHCB, ao usar GHCB v2+, exige-se que a área de scratch do software resida no buffer compartilhado do GHCB. Observe que coisas como solicitações de Page State Change (PSC) _dependem_ desse comportamento, pois o convidado não pode fornecer um comprimento ao fazer a solicitação, ou seja, o tamanho da carga útil do convidado é limitado pelo tamanho do buffer compartilhado. A falha em forçar o uso do GHCB, juntamente com uma série de outros defeitos, permite que um convidado SNP mal-intencionado corrompa a memória do heap do kernel do host e vaze informações sobre o layout do heap do host. setup_vmgexit_scratch() aloca um buffer via kvzalloc(exit_info_2), onde exit_info_2 é controlado pelo convidado. Com exit_info_2=24, isso gera uma alocação de 24 bytes em kmalloc-cg-32 (objetos de slab de 32 bytes). O buffer contém um psc_hdr de 8 bytes seguido por structs psc_entry de 8 bytes, portanto apenas entries[0] e entries[1] estão dentro dos limites. snp_begin_psc() valida end_entry contra VMGEXIT_PSC_MAX_COUNT (253), mas NÃO contra o tamanho real do buffer: idx_end = hdr->end_entry; if (idx_end >= VMGEXIT_PSC_MAX_COUNT) { // checks 253, not buffer snp_complete_psc(svm, ...); return 1; } for (idx = idx_start; idx <= idx_end; idx++) { entry_start = entries[idx]; // OOB when idx >= 2 O convidado define end_entry=10+, fazendo o host iterar por entries[2+], que estão OOB em objetos de slab adjacentes. Para cada entrada OOB: - O host lê 8 bytes (OOB READ / oráculo de vazamento de informações) - Se os dados passarem na validação PSC, __snp_complete_one_psc() escreve cur_page = 1 ou 512 na entrada (OOB WRITE, sev.c:3806) - Se a validação falhar, a resposta de erro revela se a memória adjacente é zero ou não zero (divulgação de informações para o convidado) O convidado controla o tamanho da alocação (exit_info_2), o intervalo de entradas (cur_entry/end_entry) e pode disparar VMGEXITs ilimitados para atingir repetidamente diferentes posições do slab. Ao explorar a variedade de bugs, um convidado SEV-SNP mal-intencionado pode: - Fazer leitura OOB de objetos adjacentes kmalloc-cg-32 (divulgação do layout do heap) - Escrever OOB bits de cur_page em objetos adjacentes (corrupção do heap) - Disparar condições de use-after-free entre VMGEXITs Por exemplo, com KASAN habilitado, um único insmod do módulo convidado PoC produz 73 relatórios KASAN: BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x126/0x890 Read of size 8 at addr ffff888219ffb5e0 by task qemu-system-x86/2199 BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x468/0x890 Write of size 8 at addr ffff888351566648 by task qemu-system-x86/2199 O endereço defeituoso pertence ao objeto em ffff888XXXXXXXXX, que pertence ao cache kmalloc-cg-32 de tamanho 32 O endereço defeituoso está localizado N bytes à direita da região alocada de 32 bytes [ffff888XXXXXXXXX, ffff888XXXXXXXXX) Detalhamento: 62 slab-out-of-bounds (leituras + escritas além da alocação) 7 slab-use-after-free 4 use-after-free Todo o crédito a Stan pela descrição e reprodutor maravilhosos! [sean: escrever changelog]
Uso responsável
Use informações de vulnerabilidade apenas em sistemas que você possui ou está autorizado a testar. O Kitploit vincula-se a metadados de pesquisa pública e não armazena código de exploração ou cargas maliciosas.