Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
qemu-nvme-sgl-bar — QEMU 11.1.2 - उच्च - स्थानीय - UAF - NVMe SGL span into BAR0 अपूर्ण CVE-2021-3929 | Kitploit
उपकरण/GitHubGitHub/abraxas/qemu-nvme-sgl-bar
मेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणसुरक्षा वर्चुअलाइजेशनपेपर और शोधलैब और अभ्यास
GitHubabraxas/qemu-nvme-sgl-bar

qemu-nvme-sgl-bar

QEMU 11.1.2 - उच्च - स्थानीय - UAF - NVMe SGL span into BAR0 अपूर्ण CVE-2021-3929

रिपॉजिटरी देखें
92 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Abraxas Labs - qemu-nvme-sgl-bar

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  qemu-nvme-sgl-bar

qemu-nvme-sgl-bar

QEMU v11.1.2 (4fc49f46dc95d4a27de2509e7fceb2931e91faeb) - NVMe

वर्ग: UAF (अपूर्ण BAR0 deny-list; MMIO में फैलता SGL DMA)। पहुँच: स्थानीय (guest)।

nvme_map_addr CVE-2021-3929 का अवशेष है। iomem जाँच केवल प्रारंभ पर होती है। एक SGL डेटा ब्लॉक जो BAR0 से ठीक पहले शुरू होकर MBAR में चला जाता है, स्वीकार कर लिया जाता है। Identify अभी भी NVME_CTRL_SGLS_SUPPORT_NO_ALIGN रिपोर्ट करता है। PRP पेज-संरेखित BAR में नहीं फैल सकता। SGL फैल सकता है।

उस SGL के साथ एक NVMe READ nvme_blk_read -> dma_blk_read से गुज़रता है। Bounce DMA फिर DMA हेल्पर कॉलबैक से, NVMe mem_reentrancy_guard BH के बाहर, guest डिस्क बाइट्स को address_space_write द्वारा BAR0 पर लिखता है। Guest द्वारा चुने गए शून्य CC पर पहुँच जाते हैं। nvme_ctrl_reset तब चलता है जब लाइव NvmeRequest अभी भी completion पथ में है।

एक guest NVMe ड्राइवर SGL को BAR0 में फैला सकता है, DMA unmap से कंट्रोलर रीसेट कर सकता है, और लाइव रिक्वेस्ट के साथ रेस कर सकता है।

IDअभी तक कोई CVE नहीं
CWECWE-119 / CWE-416
CVSSउच्च: 8.2 CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
उत्पादQEMU
प्रभावितv11.1.2 (4fc49f46)
प्रमाणीकरणNVMe कंट्रोलर (SGL) वाला guest कर्नेल
लाइसेंसGNU Affero GPL v3.0
लैब127.0.0.1:18720 केवल qtest

एक हमलावर क्या कर सकता है

कौन: NVMe PCI डिवाइस वाला अविश्वसनीय guest कर्नेल। Guest-से-host।

अखंडता (लैब-प्रमाणित)

विधिसिंकविशेषाधिकार
NVMe READ SGL addr=0xdfffffec len=0x1000 (BAR0 से 0x14 पहले शुरू होता है, जो 0xe0000000 पर है)nvme_map_addr / nvme_addr_is_iomem केवल प्रारंभ परमैपिंग स्वीकृत। BAR0 में प्रारंभ वाला Control Identify अभी भी 0x4004 (DATA_TRAS_ERROR | DNR) लौटाता है।
Bounce unmap CC पर LBA शून्य लिखता हैDMA bounce का address_space_write BAR0 में, nvme_write_barCSTS.RDY गिर जाता है। लॉग में pci_nvme_mmio_stopped। कंट्रोलर रीसेट DMA हेल्पर से होता है, NVMe BH में guest MMIO स्टोर से नहीं।

अखंडता (अनुमानित)

CC / अन्य BAR0 रजिस्टरों पर guest-नियंत्रित डिस्क बाइट्स। रीसेट इनफ्लाइट AIO को रद्द कर देता है, लेकिन जो रिक्वेस्ट DMA unmap/completion के अंदर है वह अभी भी लाइव NvmeRequest / SQ / CQ के साथ रेस करती है। CVE-2021-3929 के समान वर्ग; deny-list ने कभी फैलते SGL को कवर नहीं किया। DIF bounce (AIO कॉलबैक से nvme_tx) में भी वही छेद है।

उपलब्धता (लैब-प्रमाणित)

कंट्रोलर रुक जाता है (CSTS.RDY=0, mmio-stopped=1)। इस लैब में हाइपरवाइज़र प्रोसेस चालू रहता है (asan=0)। NvmeRequest का नेस्टेड रीसेट UAF अनुमानित अगला कदम है, इस रन में प्रिंट हुआ witness नहीं।

रेकॉन

कोई नहीं। NVMe BAR0 guest को दिखता है।

निकटवर्ती सतह जो बंद रहती है

  • BAR0 के अंदर प्रारंभ पता: अवरुद्ध। यह CVE-2021-3929 है। लैब नियंत्रण SC 0x4004।
  • Admin Identify / Get Log: SGL अस्वीकृत। PRP फैल नहीं सकता।
  • BAR0 में CQ/SQ CQE पोस्ट: nvme_post_cqes BH संरक्षित है, नेस्टेड MMIO MEMTX_ACCESS_ERROR है।
  • CMB/PMR मैपिंग पहले से दोनों सिरों की जाँच करती है।
  • क्रॉस-नेमस्पेस Copy रीसेट UAF / DIF bounce ओवरफ़्लो: सार्वजनिक, इस पिन पर ठीक किया गया।

लैब RIP नियंत्रण या guest-से-host शेल प्रदर्शित नहीं करता। वर्ग है MMIO में फैलता DMA और लाइव रिक्वेस्ट का कंट्रोलर रीसेट।

मैंने इसे कैसे खोजा

CVE-2021-3929 ने ट्री को NVMe मैपिंग प्रारंभ के रूप में iomem को अस्वीकार करना सिखाया। मैंने पूछा कि क्या उस परीक्षण में SGL डेटा ब्लॉक का अंत शामिल था। यह शामिल नहीं है। CMB/PMR पहले से ही दोनों सिरों की जाँच करते हैं। BAR0 नहीं करता। Identify असंरेखित SGL का विज्ञापन करता है।

गलत रास्ते: PRP (पेज-सीमित, पिछले पेज से पेज-संरेखित BAR में घुस नहीं सकता); admin कमांड (SGL अस्वीकृत); यह आशा करना कि ASan पहले READ पर सक्रिय होगा (गवाह CSTS.RDY और pci_nvme_mmio_stopped है, कोई हीप रिपोर्ट नहीं)।

लैब

cd lab
./run.sh

केवल 127.0.0.1:18720 (qtest) को लक्षित करें। Pin को github.com/qemu/QEMU टैग v11.1.2 / 4fc49f46 से क्लोन किया गया है। Loopback। केवल-साक्षी (Witness-only)। डिस्क इमेज 1 MiB शून्यों की है ताकि bounce लिखावट CC.EN=0 करे।

SUCCESS qemu-nvme-sgl-bar control-sc=0x4004 span-addr=0xdfffffec span-end=0xe0000fec csts-rdy-before=1 csts-rdy-after=0 mmio-stopped=1 asan=0 QEMU-NVME-SGL-BAR-WITNESS

रीप्ले: python3 qemu-nvme-sgl-bar-Abraxas-Labs.py.

समाधान

यदि [addr, addr+len) का कोई भी बाइट BAR0 (और MSI-X) में स्थित है, तो मैपिंग को अस्वीकार करें, जो CMB/PMR से मेल खाता है। nvme_addr_is_iomem को प्रारंभ के बजाय एक रेंज लेनी चाहिए। CVE-2021-3929 नियंत्रण के रूप में BAR0 में प्रारंभ-स्थिति को अस्वीकार करने को बनाए रखें।

संदर्भ

  • github.com/qemu/QEMU टैग v11.1.2 कमिट 4fc49f46dc95d4a27de2509e7fceb2931e91faeb
  • nvme_map_addr / nvme_addr_is_iomem
  • निकटवर्ती पैच किया गया (यह स्पैन नहीं): CVE-2021-3929 start-in-BAR0
  • समान पिन: qemu-xhci-complete-uaf · qemu-colo-l4-oob
  • श्रृंखला: QEMU 11.1.2 leftovers
  • CWE-119 · CWE-416

लाइसेंस

GNU Affero GPL v3.0. देखें LICENSE. केवल लूपबैक लैब। कोई वारंटी नहीं।

टूल डाउनलोड करें