CVE-2026-53360
KVM: SEV: Requerir área de scratch en GHCB si se usa GHCB v2+
- Publicado
- 4 jul 2026
- Actualizado
- 5 ago 2026
- Asignación de CNA
- Linux
- Evidencia observada
- 8 ago 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HBajo · próximos 30 días
- Percentil
- 15,8 %
- Fecha del modelo
- 21 sept 2026
EPSS es una estimación estadística, no una certeza o una medida de impacto. Combínelo con CVSS, estado KEV, exposición y su entorno.
Resumen
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: KVM: SEV: Requiere área de scratch dentro de GHCB si se usa GHCB v2+ Según la especificación GHCB, al usar GHCB v2+ se requiere que el área de scratch del software resida en el búfer compartido del GHCB. Nótese que cosas como las solicitudes de cambio de estado de página (PSC) _dependen_ de este comportamiento, ya que el invitado no puede proporcionar una longitud al realizar la solicitud, es decir, el tamaño de la carga útil del invitado está limitado por el tamaño del búfer compartido. No forzar el uso del GHCB, junto con una gran cantidad de otros fallos, permite que un invitado SNP malicioso corrompa la memoria del heap del kernel del host y filtre información del diseño del heap del host. `setup_vmgexit_scratch()` asigna un búfer mediante `kvzalloc(exit_info_2)`, donde `exit_info_2` está controlado por el invitado. Con `exit_info_2=24`, esto produce una asignación de 24 bytes en `kmalloc-cg-32` (objetos slab de 32 bytes). El búfer contiene un `psc_hdr` de 8 bytes seguido de estructuras `psc_entry` de 8 bytes, por lo que solo `entries[0]` y `entries[1]` están dentro de los límites. `snp_begin_psc()` valida `end_entry` contra `VMGEXIT_PSC_MAX_COUNT` (253) pero NO contra el tamaño real del búfer: ``` 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 ``` El invitado establece `end_entry=10+`, lo que hace que el host itere sobre `entries[2+]`, que están fuera de los límites hacia objetos slab adyacentes. Para cada entrada fuera de los límites: - El host lee 8 bytes (lectura fuera de los límites / oráculo de fuga de información) - Si los datos pasan la validación de PSC, `__snp_complete_one_psc()` escribe `cur_page = 1` o `512` en la entrada (escritura fuera de los límites, sev.c:3806) - Si la validación falla, la respuesta de error revela si la memoria adyacente es cero o distinta de cero (divulgación de información al invitado) El invitado controla el tamaño de la asignación (`exit_info_2`), el rango de entradas (`cur_entry`/`end_entry`) y puede disparar VMGEXITs ilimitados para golpear repetidamente diferentes posiciones del slab. Al explotar la variedad de fallos, un invitado SEV-SNP malicioso puede: - Leer fuera de los límites objetos `kmalloc-cg-32` adyacentes (divulgación del diseño del heap) - Escribir fuera de los límites bits de `cur_page` en objetos adyacentes (corrupción del heap) - Provocar condiciones de use-after-free entre VMGEXITs Por ejemplo, con KASAN habilitado, un solo `insmod` del módulo invitado de PoC produce 73 informes de 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 The buggy address belongs to the object at ffff888XXXXXXXXX which belongs to the cache kmalloc-cg-32 of size 32 The buggy address is located N bytes to the right of allocated 32-byte region [ffff888XXXXXXXXX, ffff888XXXXXXXXX) ``` Desglose: - 62 slab-out-of-bounds (lecturas + escrituras más allá de la asignación) - 7 slab-use-after-free - 4 use-after-free ¡Todo el crédito para Stan por la maravillosa descripción y el reproductor! [sean: escribe el changelog]
Uso responsable
Utilice información sobre vulnerabilidades solo en sistemas de su propiedad o que esté autorizado a probar. Kitploit enlaza con metadatos de investigación pública y no almacena código de explotación ni cargas útiles maliciosas.