
VirtualBox 7.2.20 - गंभीर - स्थानीय - प्रकार भ्रम / मनमाना पढ़ना/लिखना - SAS1068 CONFIG SCSI-SPI ओवरले
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · vbox-lsilogic-sas-config
वर्ग: टाइप कन्फ्यूज़न / मनमाना R/W पहुँच: स्थानीय (गेस्ट)
Oracle VM VirtualBox OSS 7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
SAS1068 MPT CONFIG, SCSI-SPI पोर्ट 0 को 12-बाइट पेज के रूप में मानता है। SAS पर वह पेज एक यूनियन का दूसरा आधा हिस्सा है: pManufacturingPage7 और cbManufacturingPage7। गेस्ट CONFIG READ, हीप पॉइंटर को DMA के ज़रिए लीक कर देता है। CONFIG WRITE, पॉइंटर और साइज़ को स्थापित कर देता है। इसके बाद मैन्युफैक्चरिंग पेज 7, स्थापित पॉइंटर के ज़रिए कॉपी करता है।
संलग्न SAS1068 (PDM LsiLogicSas, PCI 1000:0054) पर गेस्ट ring3 को VM प्रोसेस में मनमाना पढ़ने/लिखने की सुविधा मिलती है। यह VirtualBoxVM / VBoxHeadless हीप है, होस्ट-कर्नेल एस्केप नहीं।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | टाइप कन्फ्यूज़न / मनमाना R/W |
| पहुँच | स्थानीय (गेस्ट) |
| CWE | CWE-843, CWE-822 |
| CVSS | गंभीर: 8.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| उत्पाद | VirtualBox OSS |
| प्रभावित | 7.2.20 (f2792cf44) |
| आवश्यक | संलग्न SAS1068 (PDM LsiLogicSas, PCI 1000:0054) |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | लूपबैक सोर्स हार्नेस |
विधि: गेस्ट ring3, SAS1068 MMIO डोरबेल या रिक्वेस्ट FIFO को MPT_MESSAGE_HDR_FUNCTION_CONFIG (0x04), पेज टाइप SCSI-SPI पोर्ट 0 (0x03) के साथ प्रोग्राम करता है। डिस्पैच हमेशा SPI गेटर को कॉल करता है। केवल EXTENDED ही SAS-गेटेड है। पेज-एट्रिब्यूट गेटर टिप्पणी-बद्ध (commented out) है, इसलिए Readonly पोर्ट 0 पेज अभी भी लिखने योग्य है। SPI पोर्ट 0, 12 बाइट में पैक है और SasPages.pManufacturingPage7 (8) तथा cbManufacturingPage7 (4) को ओवरले करता है।
| विशेषाधिकार | प्रकार | स्थिति | यह क्या प्रदान करता है |
|---|---|---|---|
| CONFIG SCSI-SPI पोर्ट 0 READ | रेकॉन | लैब-प्रमाणित | VM-प्रोसेस हीप पॉइंटर pManufacturingPage7 और उसके साइज़ का गेस्ट RAM में DMA। ASLR इनपुट। |
| CONFIG SCSI-SPI पोर्ट 0 WRITE | अखंडता | लैब-प्रमाणित | उन SAS फ़ील्ड्स पर गेस्ट-चयनित पॉइंटर + साइज़ स्थापित करना |
| मैन्युफैक्चरिंग पेज 7 CONFIG READ | अखंडता | लैब-प्रमाणित | स्थापित पते से होस्ट बाइट्स को गेस्ट GPA में कॉपी करना (VBOX-LSILOGIC-SAS-CONFIG-WITNESS) |
| मैन्युफैक्चरिंग पेज 7 CONFIG WRITE | अखंडता | उसी गेटर से अनुमानित | गेस्ट बाइट्स को स्थापित पते पर कॉपी करना (VirtualBoxVM में मनमाना लेखन) |
| पोर्ट 1 / डिवाइस 0 SPI पेज | रेकॉन / अखंडता | अनुमानित ओवरले | पोर्ट 1, pSASIOUnitPage0 को लीक/स्थापित करता है; डिवाइस 0 पेज 0, paPHYs को हिट करता है; डिवाइस 0 पेज 1, pSASDeviceHead को हिट करता है |
| मनमाना स्थापित पॉइंटर | उपलब्धता | अनुमानित | अगली SAS पेज एक्सेस पर या lsilogicR3ConfigurationPagesFree पर VM प्रोसेस को क्रैश करना |
निकटवर्ती बंद:
SpiPages वास्तविक लेआउट है; इस टाइप-कन्फ्यूज़न के लिए SAS1068 आवश्यक है)VERR_NOT_FOUND)यह VM-प्रोसेस मनमाना R/W है, होस्ट-कर्नेल एस्केप नहीं। पूर्ण होस्ट-यूज़र के लिए अभी भी एक हार्डनिंग अवशेष की आवश्यकता है। मैंने इसे किसी शेष 3D राइट के साथ नहीं जोड़ा: VMSVGA DX11 UAF (d691aa68) इस पिन पर बंद है।
कोई Guest Additions नहीं। कोई 3D नहीं। कोई VRDP नहीं। PUEL नहीं। शत्रुतापूर्ण गेस्ट ring3 पर्याप्त है; इन-बॉक्स mpt/mptsas ड्राइवर आवश्यक नहीं है।
मैं सितंबर 2026 CPU के बाद OSS 7.2.20 पर बैठा और LsiLogic MPT CONFIG को देखा। साइलेंट 2026 reply-stack leak पहले ही बंद हो चुका है: SCSI I/O त्रुटि पर 122c6880 MptReplyUnion को RT_ZERO करता है। मैं उसी श्रेणी के किसी अवशेष की तलाश में था, उस sink की नहीं।
अवशेष एक union है, stack reply नहीं:
union {
MptConfigurationPagesSpi SpiPages;
MptConfigurationPagesSas SasPages;
} u; /* DevLsiLogicSCSI.h:3323 */
SAS alloc SasPages host pointers को भरता है और कभी भी SPI page init नहीं चलाता। DevLsiLogicSCSI.cpp:2795 पर SPI Port getter में कोई enmCtrlType जाँच नहीं है। CONFIG dispatch SPI cases ungated हैं। page-attribute getter cpp:3159 पर टिप्पणी की गई है। cpp:2701 पर Manufacturing page 7 SAS-gated है, जो कि इच्छित पथ है, और pManufacturingPage7 को बिना किसी NULL जाँच के dereference करता है। इसी तरह एक SPI-typed Port 0 READ/WRITE एक SAS pointer leak और plant बन जाता है।
पहले से दर्ज गलत मोड़: 122c6880 को फिर से दायर करना; default LSI53C1030 को इस बग के रूप में मानना; एक wild-pointer crash को host-kernel escape तक बढ़ा-चढ़ाकर पेश करना; packed overlay पर्याप्त होने पर एक live VM का उपयोग करना। नाटक: एक reverse shell। oracle CONTROL dummy page data है, फिर VBOX-LSILOGIC-SAS-CONFIG-WITNESS का leak/plant/arb-read।
cd lab
./run.sh
या python3 vbox-lsilogic-sas-config-Abraxas-Labs.py। pin structs का स्रोत harness। VirtualBox बूट नहीं किया गया है। Compose प्रोजेक्ट vbox-lsilogic-sas-config, network_mode: none। कुछ भी बाइंड न करें।
CONTROL: SPI-typed Port 0 overlay-read dummy पेज डेटा है, manufacturing-page-7 heap pointer नहीं।
SAS भ्रमित: Port 0 READ pManufacturingPage7 लीक करता है जो calloc से मेल खाता है। Port 0 WRITE एक दूसरा witness buffer pointer+size रखता है। Manufacturing page 7 getter और CONFIG READ witness को guest GPA array में कॉपी करते हैं।
SUCCESS vbox-lsilogic-sas-config leak=yes plant=yes arb-read=yes VBOX-LSILOGIC-SAS-CONFIG-WITNESS
SCSI-SPI पेज प्रकारों को enmCtrlType == LSILOGICCTRLTYPE_SCSI_SPI पर गेट करें। पेज-विशेषता जाँच को पुनर्स्थापित करें ताकि Readonly Port 0 केवल-पठनीय बना रहे। डीरेफ़रेंस से पहले pManufacturingPage7 (और अन्य SAS पॉइंटर्स) की NULL-जाँच करें। एक ही union में SpiPages और SasPages को ओवरले करना बंद करें।
f2792cf44f663989818507e36d3db5f978523c5e)DevLsiLogicSCSI.h में 3323 पर union; 2251 पर SPI Port 0 का आकार 12DevLsiLogicSCSI.cpp में SAS alloc 619; manufacturing getter 2701; SPI Port getter 2795; पेज-विशेषता 3159 पर टिप्पणी की गई; CONFIG READ/WRITE 3293122c6880 (MptReplyUnion SCSI I/O error स्टैक)