
CVE-2022-34302 को प्रदर्शित करता है, जो New Horizon Datasys द्वारा हस्ताक्षरित बूटलोडर के माध्यम से Secure Boot बायपास है, जिसका अंतर्निहित कस्टम PE/COFF लोडर अहस्ताक्षरित UEFI एप्लिकेशन निष्पादित करता है।
न्यू होराइज़न डेटासिस रीबूट रिस्टोर बूट लोडर - ब्रिंग योर ओन वल्नरेबल UEFI एप्लिकेशन (BYOVUA) - अहस्ताक्षरित UEFI एप्लिकेशन लोड करने वाले अंतर्निहित कस्टम PE/COFF लोडर के साथ हस्ताक्षरित बूटलोडर के माध्यम से सिक्योर बूट बायपास।
यह रिपॉज़िटरी CVE-2022-34302 का शोषण करके BYOVUA (ब्रिंग योर ओन वल्नरेबल UEFI एप्लिकेशन) तकनीक का प्रदर्शन करती है, जो न्यू होराइज़न डेटासिस बूट लोडर में एक सिक्योर बूट बायपास भेद्यता है।
UEFI Shell-आधारित भेद्यताओं (CVE-2022-34301 और CVE-2022-34303) के विपरीत, यह बूटलोडर UEFI Shell को उजागर नहीं करता है। इसके बजाय, shdloader.efi अपना स्वयं का कस्टम PE/COFF लोडर लागू करता है जो दूसरे चरण की बाइनरी (shdmgr.ef_) को फर्मवेयर के LoadImage() फ़ंक्शन का उपयोग किए बिना और किसी भी हस्ताक्षर सत्यापन को किए बिना लोड करता है। हमलावर को सिक्योर बूट सक्षम होने पर मनमाना कोड निष्पादन प्राप्त करने के लिए केवल shdmgr.ef_ को किसी भी संगत UEFI एप्लिकेशन से बदलना होता है।
यह "One Bootloader to Load Them All" शोध में प्रकट की गई तीन भेद्यताओं में से सबसे खतरनाक है। जैसा कि Eclypsium ने उल्लेख किया: बायपास अंतर्निहित है, पूरी तरह से मौन है, और स्क्रीन पर कोई दृश्य संकेत नहीं छोड़ता है - जिससे यह मॉनिटर वाले सिस्टम पर भी अदृश्य रहता है और सर्वर या औद्योगिक उपकरण जैसे हेडलेस सिस्टम पर अप्राप्य रहता है।
BYOVUA, कर्नेल स्तर पर उपयोग की जाने वाली BYOVD (ब्रिंग योर ओन वल्नरेबल ड्राइवर) तकनीक का UEFI समकक्ष है। एक भेद्यता वाले हस्ताक्षरित कर्नेल ड्राइवर लाने के बजाय, हमलावर एक हस्ताक्षरित UEFI एप्लिकेशन लाता है जिसमें सिक्योर बूट को कमजोर करने में सक्षम कार्यक्षमता होती है।
चूंकि shdloader.efi Microsoft-विश्वसनीय प्रमाणपत्र के साथ हस्ताक्षरित है, इसे सिक्योर बूट द्वारा बिना किसी प्रश्न के स्वीकार किया जाता है, जिससे यह किसी भी सिस्टम पर विश्वसनीय हो जाता है जो इस प्रमाणपत्र को अपने सिक्योर बूट डेटाबेस (db) में शामिल करता है - जो पिछले दशक में भेजे गए लगभग हर UEFI-सक्षम PC में होता है। एक बार चलने पर, इसका अंतर्निहित कस्टम PE लोडर हमलावर को ऑपरेटिंग सिस्टम लोड होने से पहले मनमाना अहस्ताक्षरित कोड लोड और निष्पादित करने की क्षमता प्रदान करता है, ऐसे वातावरण में जहाँ आधुनिक सुरक्षा नियंत्रण (ASLR, DEP, कर्नेल सुरक्षा) बस मौजूद नहीं हैं।
shdloader.efi न्यू होराइज़न डेटासिस के सिस्टम रिस्टोर और रिकवरी उत्पादों (Reboot Restore Rx, RollBack Rx) के हिस्से के रूप में वितरित एक UEFI बूट लोडर है। वैध बूट श्रृंखला में इसकी भूमिका ऑपरेटिंग सिस्टम शुरू होने से पहले स्नैपशॉट और रिस्टोर संचालन को संभालने वाले प्री-OS प्रबंधन घटक (shdmgr.ef_) को लोड करना है।
| गुण | मान |
|---|---|
| फ़ाइल | shdloader.efi = EFI/Boot/bootx64.efi |
| विक्रेता | New Horizon Datasys Inc |
| उत्पाद | Reboot Restore Rx / RollBack Rx |
| CVE | CVE-2022-34302 |
| हस्ताक्षर | Microsoft Windows UEFI Driver Publisher → Microsoft Corporation UEFI CA 2011 |
| खोज | Eclypsium (Mickey Shkatov, Jesse Michael) - अगस्त 2022 |
| प्रस्तुति | DEF CON 30 - "One Bootloader to Load Them All" |
| निरसन | Microsoft KB5012170 (अगस्त 2022) के माध्यम से DBX में जोड़ा गया |
भेद्यता बूट लोडर की संरचना में एक डिज़ाइन दोष है। फर्मवेयर के LoadImage() और StartImage() बूट सेवाओं का उपयोग करने के बजाय - जो सिक्योर बूट हस्ताक्षर सत्यापन लागू करते हैं - shdloader.efi अपना स्वयं का कस्टम PE/COFF लोडर लागू करता है जो shdmgr.ef_ को सीधे कच्चे डिस्क बाइट्स से पढ़ता, स्थानांतरित करता और निष्पादित करता है, फर्मवेयर की सुरक्षा जाँचों को पूरी तरह से बायपास करता है।
मूल समस्या: एक हस्ताक्षरित बाइनरी जो सिक्योर बूट द्वारा विश्वसनीय है, उसमें अपना स्वयं का इमेज लोडर होता है जो हस्ताक्षरों को सत्यापित नहीं करता है। फर्मवेयर shdloader.efi को हस्ताक्षरित के रूप में मान्य करता है, लेकिन एक बार चलने पर, यह shdmgr.ef_ को बिना किसी सत्यापन के लोड करता है। shdmgr.ef_ को किसी भी मनमाने UEFI एप्लिकेशन से बदलने पर वह एप्लिकेशन पूर्ण हार्डवेयर पहुँच के साथ चलता है, जबकि सिक्योर बूट सक्षम के रूप में रिपोर्ट करता है।
यह CVE-2022-34301 और CVE-2022-34303 से मौलिक रूप से भिन्न है, जहाँ हमलावर को UEFI Shell के साथ इंटरैक्ट करने और सत्यापन को अक्षम करने के लिए मैन्युअल रूप से gSecurity2 को भ्रष्ट करने की आवश्यकता होती है। यहाँ, बायपास स्वचालित और मौन है - कोई उपयोगकर्ता इंटरैक्शन नहीं, कोई दृश्य आउटपुट नहीं, कोई शेल प्रॉम्प्ट नहीं।
हस्ताक्षरित shdloader.efi में PE/COFF इमेज लोडर का अपना कार्यान्वयन है। फर्मवेयर की LoadImage() बूट सेवा को कॉल करने के बजाय, जो Security Architectural Protocols को लागू करेगी और सिक्योर बूट डेटाबेस के विरुद्ध इमेज के हस्ताक्षर को सत्यापित करेगी, बूटलोडर:
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL का उपयोग करके \EFI\Boot\shdmgr.ef_ खोलता है.reloc सेक्शन को संसाधित करता है और बेस रीलोकेशन लागू करता हैइस प्रक्रिया में किसी भी बिंदु पर लोडर इमेज के Authenticode हस्ताक्षर को सत्यापित नहीं करता, सिक्योर बूट डेटाबेस (db/dbx) की जाँच नहीं करता, या EFI_SECURITY2_ARCH_PROTOCOL को लागू नहीं करता। इमेज विशुद्ध रूप से इसकी PE/COFF संरचनात्मक वैधता के आधार पर लोड की जाती है।```c
// Pseudocode of what shdloader.efi does internally
//
// NOTE: This is a simplified representation. The actual
// implementation was derived from reverse engineering.
EFI_STATUS LoadShdmgr(VOID) { // Step 1: Open the file File = OpenFile(L"\EFI\Boot\shdmgr.ef_");
// Step 2: Read raw bytes (no signature check)
ReadFile(File, &Buffer, &Size);
// Step 3: Parse PE/COFF headers
DosHeader = (EFI_IMAGE_DOS_HEADER *)Buffer;
PeHeader = (EFI_IMAGE_NT_HEADERS *)(Buffer + DosHeader->e_lfanew);
// Step 4: Allocate memory and copy sections
ImageBase = AllocatePages(...);
CopySections(ImageBase, Buffer, PeHeader);
// Step 5: Apply base relocations from .reloc
Delta = ImageBase - PeHeader->OptionalHeader.ImageBase;
ApplyRelocations(ImageBase, PeHeader, Delta);