CVE-2026-53360
KVM: SEV: GHCB-interne Scratch-Area erforderlich, wenn GHCB v2+ verwendet wird
- Veröffentlicht
- 04.07.2026
- Aktualisiert
- 05.08.2026
- CNA zuweisen
- Linux
- Beweise beobachtet
- 08.08.2026
Primäres CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HNiedrig · nächste 30 Tage
- Perzentil
- 15,8 %
- Modelldatum
- 21.09.2026
EPSS ist eine statistische Schätzung, keine Gewissheit oder ein Maß für die Auswirkung. Kombinieren Sie es mit CVSS, KEV-Status, Belichtung und Ihrer Umgebung.
Zusammenfassung
Im Linux-Kernel wurde die folgende Schwachstelle behoben: KVM: SEV: In-GHCB-Scratch-Bereich erforderlich, wenn GHCB v2+ verwendet wird Gemäß der GHCB-Spezifikation muss bei Verwendung von GHCB v2+ der Software-Scratch-Bereich im gemeinsamen Puffer des GHCB liegen. Beachte: Dinge wie Page-State-Change- (PSC-) Anforderungen *verlassen* sich auf dieses Verhalten, da der Gast bei der Anforderung keine Länge angeben kann, d. h. die Größe der Gast-Nutzlast ist durch die Größe des gemeinsamen Puffers begrenzt. Wenn die Nutzung des GHCB nicht erzwungen wird, kann ein bösartiger SNP-Gast – zusammen mit einer Reihe weiterer Fehler – den Heap-Speicher des Host-Kerns beschädigen und Informationen über das Heap-Layout des Hosts preisgeben. `setup_vmgexit_scratch()` weist einen Puffer über `kvzalloc(exit_info_2)` zu, wobei `exit_info_2` vom Gast gesteuert wird. Mit `exit_info_2=24` ergibt dies eine 24-Byte-Zuweisung in `kmalloc-cg-32` (32-Byte-Slab-Objekte). Der Puffer enthält einen 8-Byte-`psc_hdr`, gefolgt von 8-Byte-`psc_entry`-Strukturen, sodass nur `entries[0]` und `entries[1]` innerhalb der Grenzen liegen. `snp_begin_psc()` validiert `end_entry` gegen `VMGEXIT_PSC_MAX_COUNT` (253), aber NICHT gegen die tatsächliche Puffergröße: idx_end = hdr->end_entry; if (idx_end >= VMGEXIT_PSC_MAX_COUNT) { // prüft 253, nicht den Puffer snp_complete_psc(svm, ...); return 1; } for (idx = idx_start; idx <= idx_end; idx++) { entry_start = entries[idx]; // OOB, wenn idx >= 2 Der Gast setzt `end_entry=10+`, wodurch der Host über `entries[2+]` iteriert, die außerhalb der Grenzen in benachbarte Slab-Objekte liegen. Für jeden OOB-Eintrag: - Der Host liest 8 Bytes (OOB-READ / Info-Leak-Orakel) - Wenn die Daten die PSC-Validierung bestehen, schreibt `__snp_complete_one_psc()` `cur_page = 1` oder `512` in den Eintrag (OOB-WRITE, `sev.c:3806`) - Wenn die Validierung fehlschlägt, zeigt die Fehlerantwort, ob der angrenzende Speicher Null oder Nicht-Null ist (Informationsoffenlegung an den Gast) Der Gast steuert die Zuweisungsgröße (`exit_info_2`), den Eintragsbereich (`cur_entry`/`end_entry`) und kann unbegrenzt viele VMGEXITs auslösen, um wiederholt verschiedene Slab-Positionen zu treffen. Durch die Ausnutzung der Vielzahl von Fehlern kann ein bösartiger SEV-SNP-Gast: - Benachbarte `kmalloc-cg-32`-Objekte außerhalb der Grenzen lesen (Offenlegung des Heap-Layouts) - `cur_page`-Bits in benachbarte Objekte außerhalb der Grenzen schreiben (Heap-Korruption) - Use-after-Free-Bedingungen über VMGEXITs hinweg auslösen Z. B. erzeugt bei aktiviertem KASAN ein einziges `insmod` des PoC-Gastmoduls 73 KASAN-Berichte: 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) Aufschlüsselung: 62 slab-out-of-bounds (Lese- und Schreibzugriffe über die Zuweisung hinaus) 7 slab-use-after-free 4 use-after-free Aller Dank gebührt Stan für die wunderbare Beschreibung und den Reproduzer! [sean: Changelog schreiben]
Verantwortungsvoller Umgang
Verwenden Sie Schwachstelleninformationen nur auf Systemen, die Sie besitzen oder zu deren Testen Sie berechtigt sind. Kitploit verlinkt auf öffentliche Forschungsmetadaten und speichert keinen Exploit-Code oder bösartige Payloads.