CVE-2026-53360
KVM: SEV: Exiger une zone de scratch dans le GHCB si GHCB v2+ est utilisé
- Publié
- 4 juil. 2026
- Mise à jour
- 5 août 2026
- Attribution de CNA
- Linux
- Preuve observée
- 8 août 2026
CVSS primaire
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HFaible · 30 prochains jours
- Percentile
- 15,8 %
- Date du modèle
- 21 sept. 2026
EPSS est une estimation statistique, et non une certitude ou une mesure d'impact. Combinez-le avec CVSS, le statut KEV, l'exposition et votre environnement.
Résumé
Dans le noyau Linux, la vulnérabilité suivante a été corrigée : KVM: SEV: Exiger une zone de scratch dans le GHCB si GHCB v2+ est utilisé Selon la spécification GHCB, lors de l'utilisation de GHCB v2+, la zone de scratch logicielle doit résider dans le buffer partagé du GHCB. Notez que des éléments comme les requêtes Page State Change (PSC) _dépendent_ de ce comportement, car l'invité ne peut pas fournir de longueur lors de la requête, c'est-à-dire que la taille de la charge utile de l'invité est bornée par la taille du buffer partagé. Le fait de ne pas forcer l'utilisation du GHCB, ainsi qu'une multitude d'autres défauts, permet à un invité SNP malveillant de corrompre la mémoire du tas du noyau hôte et de divulguer des informations sur la disposition du tas de l'hôte. setup_vmgexit_scratch() alloue un buffer via kvzalloc(exit_info_2), où exit_info_2 est contrôlé par l'invité. Avec exit_info_2=24, cela donne une allocation de 24 octets dans kmalloc-cg-32 (objets slab de 32 octets). Le buffer contient un psc_hdr de 8 octets suivi de structures psc_entry de 8 octets, donc seuls entries[0] et entries[1] sont dans les limites. snp_begin_psc() valide end_entry par rapport à VMGEXIT_PSC_MAX_COUNT (253) mais PAS par rapport à la taille réelle du 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 L'invité définit end_entry=10+, ce qui amène l'hôte à itérer sur entries[2+] qui sont hors limites dans les objets slab adjacents. Pour chaque entrée hors limites : - L'hôte lit 8 octets (lecture hors limites / oracle de fuite d'informations) - Si les données passent la validation PSC, __snp_complete_one_psc() écrit cur_page = 1 ou 512 dans l'entrée (écriture hors limites, sev.c:3806) - Si la validation échoue, la réponse d'erreur révèle si la mémoire adjacente est nulle ou non nulle (divulgation d'informations à l'invité) L'invité contrôle la taille d'allocation (exit_info_2), la plage d'entrées (cur_entry/end_entry), et peut déclencher un nombre illimité de VMGEXIT pour frapper de manière répétée différentes positions de slab. En exploitant la variété des bogues, un invité SEV-SNP malveillant peut : - Lire hors limites les objets kmalloc-cg-32 adjacents (divulgation de la disposition du tas) - Écrire hors limites les bits de cur_page dans des objets adjacents (corruption du tas) - Déclencher des conditions use-after-free à travers les VMGEXIT Par exemple, avec KASAN activé, un seul insmod du module invité PoC produit 73 rapports 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) Répartition : - 62 slab-out-of-bounds (lectures + écritures au-delà de l'allocation) - 7 slab-use-after-free - 4 use-after-free Tout le crédit à Stan pour la merveilleuse description et le script de reproduction ! [sean : écrire le changelog]
Utilisation responsable
Utilisez les informations de vulnérabilité uniquement sur les systèmes que vous possédez ou que vous êtes autorisé à tester. Kitploit renvoie aux métadonnées de la recherche publique et ne stocke pas de code d'exploitation ni de charges utiles malveillantes.