
BlueStacks में VM बैकडोरिंग के माध्यम से विशेषाधिकार वृद्धि
CVEID: CVE-2024-33352
Bluestacks सलाहकार आईडी: लंबित
प्रभावित उत्पाद(ों) और संस्करण(ों) का नाम: विंडोज के लिए ब्लूस्टैक्स (10.40.1000.502 से पहले के संस्करण)
भेद्यता प्रकार: CWE-552: बाहरी पक्षों के लिए सुलभ फ़ाइलें या निर्देशिकाएँ
सारांश
ब्लूस्टैक्स एक एंड्रॉइड एमुलेटर है जो एक वर्चुअल मशीन के अंदर अतिथि एंड्रॉइड सिस्टम चलाता है। चूंकि ब्लूस्टैक्स वर्चुअल मशीन कॉन्फ़िगरेशन फ़ाइलों को विश्व-लेखनीय निर्देशिका में संग्रहीत करता है और उन्हें विभिन्न OS उपयोगकर्ताओं के बीच साझा करता है, इसलिए यह संभव है कि एक अविशेषित उपयोगकर्ता किसी इमेज में बैकडोर लगा सके जो बाद में एक विशेषित उपयोगकर्ता के कोड निष्पादन क्षमताओं को प्राप्त कर सके।
विवरण
ब्लूस्टैक्स कॉन्फ़िगरेशन ProgramData निर्देशिका में निम्नलिखित ACL के साथ वैश्विक रूप से संग्रहीत किया जाता है:
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
BUILTIN\Administrators:(I)(OI)(CI)(F)
CREATOR OWNER:(I)(OI)(CI)(IO)(F)
BUILTIN\Users:(I)(OI)(CI)(RX)
BUILTIN\Users:(I)(CI)(WD,AD,WEA,WA)
Successfully processed 1 files; Failed processing 0 files
Everyone को दी गई (F) अनुमति का मतलब है कि सभी उपयोगकर्ता सामग्री तक पूरी तरह पहुंच सकते हैं और उसे संशोधित कर सकते हैं। यह वर्चुअल ड्राइव (एमुलेटर द्वारा उपयोग किया जाने वाला स्टोरेज) और उनकी Virtual Box कॉन्फ़िग फ़ाइलों दोनों को संशोधित करने की अनुमति देता है। पहले को संपादित करने से हमलावर को अंतर्निहित वर्चुअल मशीन में स्वचालित रूप से निष्पादित कोड जोड़ने का अवसर मिलता है, जिससे एक बैकडोर बनता है जो तब चलेगा जब कोई वैध उपयोगकर्ता एमुलेटर शुरू करेगा। बाद वाले को संपादित करने से साझा निर्देशिका सेटिंग्स को पुन: कॉन्फ़िगर करने की अनुमति मिलती है ताकि पूरी C ड्राइव शामिल हो, जिससे कोड Virtual Box से बचकर होस्ट ऑपरेटिंग सिस्टम में प्रवेश कर सके।
वर्चुअल मशीन से बचने में सक्षम बनाने के लिए, हमलावर फ़ाइल को संशोधित करेगा:
C:\ProgramData\BlueStacks_nxt\Engine\Nougat32\Nougat32.bstk (या पीड़ित के ब्लूस्टैक्स संस्करण द्वारा उपयोग किए जाने वाले विशिष्ट वर्चुअल मशीन के लिए समान फ़ाइल; विभिन्न ब्लूस्टैक्स संस्करण अन्य Android VM का उपयोग कर सकते हैं) और इसे बदलकर पंक्ति को संशोधित करेगा:
<SharedFolder name="BstSharedFolder" hostPath="C:\ProgramData\BlueStacks_nxt\Engine\UserData\SharedFolder" writable="true" autoMount="false"/>
से:
<SharedFolder name="BstSharedFolder" hostPath="C:\" writable="true" autoMount="false"/>
जो /mnt/windows/BstSharedFolder के माध्यम से विंडोज फाइलसिस्टम (ब्लूस्टैक्स चलाने वाले उपयोगकर्ता के एक्सेस स्तर के आधार पर प्रतिबंधों के साथ) तक पूर्ण पहुंच की अनुमति देगा।
VM एस्केप को सक्षम करने के लिए साझा फ़ोल्डरों को कॉन्फ़िगर करने के बाद, हमलावर को वर्चुअल ड्राइव के फाइलसिस्टम को संशोधित करने की आवश्यकता होती है ताकि कोड जोड़ा जा सके जो विशेषित उपयोगकर्ता द्वारा चलाए जाने पर निष्पादित होगा। ऐसा करने के कई तरीके हैं, लेकिन PoC में प्रदर्शित सबसे सीधा तरीका एक एप्लिकेशन स्थापित करना है जो BOOT_COMPLETED ब्रॉडकास्ट रिसीवर के उपयोग के माध्यम से स्वचालित रूप से शुरू होता है।
शोषण का अंतिम चरण एस्केप करना है। होस्ट OS फाइलसिस्टम तक पहुंच के साथ, इसे वर्तमान उपयोगकर्ता के AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup में एक निष्पादन योग्य फ़ाइल जोड़कर प्राप्त किया जा सकता है। जबकि एप्लिकेशन के पास यह जानने का कोई तरीका नहीं है कि वर्तमान उपयोगकर्ता कौन है, यह बस C:\Users में उप-निर्देशिकाओं की गणना कर सकता है और सभी में लिखने का प्रयास कर सकता है।
प्रतिलिपि प्रस्तुत करना
उपाय
ब्लूस्टैक्स का एक नया संस्करण स्थापित करें।