CVE-2026-53360
KVM: SEV: GHCB v2+ के उपयोग में होने पर in-GHCB स्क्रैच क्षेत्र आवश्यक करें
- प्रकाशित
- 4 जुल॰ 2026
- अद्यतन
- 5 अग॰ 2026
- सीएनए असाइन करना
- Linux
- साक्ष्य देखे गए
- 8 अग॰ 2026
प्राथमिक सीवीएसएस
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:Hकम · अगले 30 दिन
- प्रतिशत
- 15.8%
- मॉडल दिनांक
- 21 सित॰ 2026
ईपीएसएस एक सांख्यिकीय अनुमान है, कोई निश्चितता या प्रभाव का माप नहीं। इसे सीवीएसएस, केईवी स्थिति, एक्सपोज़र और अपने वातावरण के साथ मिलाएं।
सारांश
Linux कर्नेल में, निम्नलिखित भेद्यता का समाधान किया गया है: KVM: SEV: GHCB v2+ उपयोग में होने पर GHCB के भीतर स्क्रैच क्षेत्र आवश्यक करें। GHCB विनिर्देश के अनुसार, GHCB v2+ का उपयोग करते समय सॉफ़्टवेयर स्क्रैच क्षेत्र को GHCB के साझा बफर में स्थित होना अनिवार्य करें। ध्यान दें, Page State Change (PSC) अनुरोध जैसी चीज़ें इस व्यवहार पर _निर्भर_ करती हैं, क्योंकि गेस्ट अनुरोध करते समय लंबाई प्रदान नहीं कर सकता, यानी गेस्ट पेलोड का आकार साझा बफर के आकार से सीमित होता है। GHCB के उपयोग को बाध्य करने में विफलता, और अन्य कई दोष, एक दुर्भावनापूर्ण SNP गेस्ट को होस्ट कर्नेल हीप मेमोरी को दूषित करने और होस्ट हीप लेआउट जानकारी लीक करने की अनुमति देते हैं। setup_vmgexit_scratch() kvzalloc(exit_info_2) के माध्यम से एक बफर आवंटित करता है, जहाँ exit_info_2 गेस्ट-नियंत्रित है। exit_info_2=24 के साथ, यह kmalloc-cg-32 (32-बाइट स्लैब ऑब्जेक्ट) में 24-बाइट आवंटन उत्पन्न करता है। बफर में 8-बाइट psc_hdr और उसके बाद 8-बाइट psc_entry संरचनाएँ होती हैं, इसलिए केवल entries[0] और entries[1] सीमा के भीतर हैं। snp_begin_psc() end_entry को VMGEXIT_PSC_MAX_COUNT (253) के विरुद्ध मान्य करता है, लेकिन वास्तविक बफर आकार के विरुद्ध नहीं: 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 गेस्ट end_entry=10+ सेट करता है, जिससे होस्ट entries[2+] को पुनरावृत्त करता है, जो निकटवर्ती स्लैब ऑब्जेक्ट्स में OOB हैं। प्रत्येक OOB प्रविष्टि के लिए: - होस्ट 8 बाइट्स पढ़ता है (OOB READ / सूचना लीक ओरेकल) - यदि डेटा PSC सत्यापन पास करता है, तो __snp_complete_one_psc() प्रविष्टि में cur_page = 1 या 512 लिखता है (OOB WRITE, sev.c:3806) - यदि सत्यापन विफल होता है, तो त्रुटि प्रतिक्रिया प्रकट करती है कि निकटवर्ती मेमोरी शून्य है या गैर-शून्य (गेस्ट को सूचना प्रकटीकरण) गेस्ट आवंटन आकार (exit_info_2), प्रविष्टि सीमा (cur_entry/end_entry) को नियंत्रित करता है, और बार-बार विभिन्न स्लैब स्थितियों को हिट करने के लिए असीमित VMGEXIT ट्रिगर कर सकता है। विभिन्न बगों का शोषण करके, एक दुर्भावनापूर्ण SEV-SNP गेस्ट यह कर सकता है: - निकटवर्ती kmalloc-cg-32 ऑब्जेक्ट्स को OOB पढ़ना (हीप लेआउट प्रकटीकरण) - निकटवर्ती ऑब्जेक्ट्स में cur_page बिट्स को OOB लिखना (हीप भ्रष्टाचार) - VMGEXITs में use-after-free स्थितियों को ट्रिगर करना उदाहरण के लिए, KASAN सक्षम होने पर, PoC गेस्ट मॉड्यूल का एक insmod 73 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) विवरण: 62 slab-out-of-bounds (आवंटन से आगे पढ़ना + लिखना) 7 slab-use-after-free 4 use-after-free अद्भुत विवरण और रिप्रोड्यूसर के लिए सारा श्रेय Stan को! [sean: चेंजलॉग लिखें]
जिम्मेदारीपूर्ण उपयोग
भेद्यता जानकारी का उपयोग केवल उन प्रणालियों पर करें जिनके मालिक आप हैं या परीक्षण के लिए अधिकृत हैं। किटप्लॉइट सार्वजनिक अनुसंधान मेटाडेटा से लिंक करता है और शोषण कोड या दुर्भावनापूर्ण पेलोड को संग्रहीत नहीं करता है।