
प्रारंभ में, माइक्रोसॉफ्ट ऑफिस की वास्तुकला को समग्र दस्तावेजों की अवधारणा के आधार पर बनाया गया था, वे भी
OLE दस्तावेज़ हैं , 32-बिट विंडोज के भोर में Microsoft द्वारा सक्रिय रूप से प्रचारित किया जाता है। उन दिनों में, एक दस्तावेज़ में विभिन्न प्रारूपों के डेटा को "मूल रूप से" संयोजित करने का विचार आकर्षक और आकर्षक लग रहा था, और पहली समस्याओं की पहचान करने से पहले, यह कई बड़े पैमाने पर उत्पादों में मजबूती से बढ़ने में कामयाब रहा।
"बुरी खबर" यह थी कि दस्तावेजों में डेटा जोड़ने का सार्वभौमिक तरीका (और इस डेटा को संसाधित करने के लिए कोड) उत्पाद में कमजोरियों को पेश करने का एक सार्वभौमिक तरीका बन गया है, जो आज भी
मैलवेयर सुरक्षा शोधकर्ताओं के
रचनाकारों के लिए
सुखद आश्चर्य प्रस्तुत करता है।
इसके बाद, एप्लिकेशन पैकेज को छवियों, ग्राफ़ और चार्ट, नियंत्रण तत्वों को जोड़ने के लिए उपकरण का काफी समृद्ध सेट प्राप्त हुआ जो कि आवेदन द्वारा बनाए और संसाधित किए जाते हैं और दस्तावेजों में इसका हिस्सा हैं। सुरक्षा के दृष्टिकोण से, ये तत्व उन तत्वों की तुलना में थोड़ी कम रुचि रखते हैं जो (मुख्य रूप से) लेख में चर्चा की जाएगी - तत्व जो बाहरी अनुप्रयोगों के कोड का उपयोग करते हैं जो OLE का उपयोग करके दस्तावेज़ों में जोड़े जाते हैं।
एक यौगिक दस्तावेज़ का "डिस्क" प्रतिनिधित्व एक
CFBF फ़ाइल है । यह आलेख रनटाइम के दौरान
मेमोरी में
लोड किए गए डेटा और कोड के संदर्भ में Microsoft Office दस्तावेज़ों में वस्तुओं के एम्बेडिंग (या केवल सुरक्षा पहलू) पर चर्चा करेगा।
Microsoft Office दस्तावेज़ों में औपचारिक रूप से एम्बेडेड ऑब्जेक्ट्स को निम्नलिखित समूहों में विभाजित किया जा सकता है:
- ActiveX नियंत्रण (ActiveX नियंत्रण)
- OLE एंबेडेड ऑब्जेक्ट
- एंबेडेड फ़ाइलें ( पैकेज )
- गैर-OLE इनलाइन तत्व
ActiveX नियंत्रण
ActiveX नियंत्रणों को प्रोग्राम विंडो के तत्वों के रूप में दर्शाया जा सकता है - जैसे कि, बटन, रेडियो बटन, सूचियाँ, इनपुट फ़ील्ड और अन्य रूप - जो कुछ घटनाओं का उत्पादन करने या घटनाओं पर प्रतिक्रिया देने के लिए डिज़ाइन किए गए हैं। एक बार किसी भी अनुप्रयोग में उपयोग की संभावना के साथ, ऐसे नियंत्रण तत्वों को सार्वभौमिक बनाने के लिए एक अच्छा विचार जैसा लगा, और उन्हें
COM घटकों में इस उद्देश्य के लिए रखा।
ActiveX में निर्मित वेबपेज एक प्रसिद्ध इंटरनेट एक्सप्लोरर सुरक्षा उल्लंघन का प्रतिनिधित्व करते हैं, समय के साथ सुरक्षा उपायों में वृद्धि हुई है। अन्य निर्माताओं के ब्राउज़रों ने लगभग तुरंत ActiveX समर्थन को छोड़ दिया। नया Microsoft एज ब्राउज़र आखिरकार अतीत के इस अवशेष के साथ जुडा हुआ है। हालाँकि, Office दस्तावेज़ों में एम्बेड करना अभी भी संभव है।
दस्तावेज़ों में ActiveX
अनुप्रयोगों के लिए Visual Basic के साथ संयोजन के रूप में उपयोग करने के लिए अभिप्रेत है। हालांकि, VBA को डाउनलोड करने और उन्हें सक्रिय करने के लिए आवश्यक नहीं है, और
सफेद सूची से आइटम डाउनलोड करने के लिए उपयोगकर्ता की अनुमति की आवश्यकता नहीं है।
उत्तरार्द्ध में कमजोरियां विशेष रूप से खतरनाक हैं - एप्लिकेशन इंस्टॉल करते समय डिफ़ॉल्ट सेटिंग्स जो इन तत्वों के लोडिंग के खिलाफ कोई सुरक्षा नहीं करती हैं, न ही उपयोगकर्ता को चेतावनी। व्यवस्थापक को किसी भी ActiveX नियंत्रण के लोडिंग को रोककर सेटिंग्स को कसने की आवश्यकता है (हालांकि, ध्यान दें कि ActiveX सुरक्षित ब्राउज़िंग मोड में लोड नहीं करता है)।
उदाहरण: CVE-2012-0158
2012 में कार्यालय दस्तावेजों में सबसे खतरनाक कमजोरियों में से एक CVE-2012-0158 था । MSCOMCTL.OCX लाइब्रेरी से Microsoft लिस्ट व्यू कंट्रोल 6.0 तत्व के लिए लोडिंग कोड में बफर ओवरफ्लो की संभावना थी, जिसने रिटर्न एड्रेस को बदलने और मनमाने कोड को निष्पादित करने की अनुमति दी। चूंकि आइटम ActiveX "श्वेत सूची" में था, इसलिए दस्तावेज़ खोले जाने पर लोडिंग तुरंत शुरू हुई। भेद्यता वर्तमान में तय हो गई है; सूची दृश्य नियंत्रण अभी भी "सुरक्षित" माना जाता है।
एक दस्तावेज़ में ActiveX जोड़ना
Microsoft Office दस्तावेज़ में एक नियंत्रण तत्व जोड़ने के लिए (सरलता के लिए, Word लें), "डेवलपर" टैब खोलने के लिए उपयोगकर्ता इंटरफ़ेस का उपयोग करें (इसकी दृश्यता "Word विकल्प" मेनू में कॉन्फ़िगर की गई है) और नियंत्रण का चयन करें -> पिछले संस्करणों से उपकरण -> सक्रिय नियंत्रण। मेनू Microsoft प्रपत्र तत्वों के अनुरूप आइकन का एक सेट प्रदर्शित करेगा, साथ ही साथ सिस्टम से उपलब्ध तत्वों से बनी सूची से ActiveX का चयन करने की क्षमता जो कई मानदंडों के अनुसार चुनी गई हैं।

प्रदर्शित सूची उन तत्वों के समूह के अनुरूप नहीं है जिन्हें वास्तव में दस्तावेज़ में लोड किया जा सकता है, इसलिए इसे कमजोर तत्वों की खोज करते समय निर्देशित नहीं किया जा सकता है। डाउनलोड किए गए ActiveX के परिष्कृत बहु-स्तरीय सत्यापन के कई चरण हैं, यह कार्यालय संस्करणों के लिए भिन्न होता है और अद्यतन से अद्यतन करने के लिए भिन्न होता है, इसलिए डाउनलोड करने की जांच करने का सबसे विश्वसनीय तरीका ब्याज की तत्व के साथ दस्तावेज़ फ़ाइल को मैन्युअल रूप से "रचना" करना और इसे खोलने का प्रयास करना है। संभावित दस्तावेज़ प्रारूप नीचे वर्णित हैं।
कार्यक्रम प्रस्तुति
प्रत्येक ActiveX तत्व अनिवार्य रूप से COM वर्गों में से एक है जो कुछ आवश्यकताओं को पूरा करता है। COM सबसिस्टम का उपयोग करके एक तत्व लोड किया गया है, और निष्पादन योग्य कोड मॉड्यूल में से एक में निहित है, जो आमतौर पर कंटेनर एप्लिकेशन के लिए "बाहरी" होते हैं। किसी भी COM ऑब्जेक्ट की तरह, एक ActiveX तत्व को DLL के रूप में, या निष्पादन योग्य EXE फ़ाइल के रूप में लागू किया जा सकता है। पहले मामले में, पुस्तकालय को कंटेनर के पते स्थान में लोड किया जाएगा, दूसरे में - तत्व को एक अलग प्रक्रिया में संसाधित किया जाएगा, जिसमें कंटेनर और ऑब्जेक्ट को COM मार्शलिंग के माध्यम से डेटा के हस्तांतरण के साथ किया जाएगा।
किसी भी COM ऑब्जेक्ट की तरह, ActiveX में
इंटरफेस ,
गुण और
विधियां हैं ।
इंटरफेस मुख्य रूप से मानक इंटरफेस का एक सेट है जो कि विशेष रूप से, IOleControl और IOleObject कंटेनर के साथ पूर्ण लोडिंग और इंटरैक्शन के लिए ActiveX वर्ग के पास होना चाहिए।
किसी भी आवश्यक इंटरफेस की अनुपस्थिति तत्व की कार्यक्षमता को कम कर सकती है या कुछ स्तर पर इसकी लोडिंग को बाधित कर सकती है।
उदाहरण: CVE-2015-2424
भेद्यता CVE-2015-2424 mmcndmgr.dll लाइब्रेरी से टास्कस्मबोल क्लास तत्व से जुड़ा था। तत्व दस्तावेजों में उपयोग के लिए अभिप्रेत नहीं था, और IDispatch इंटरफ़ेस का निर्यात नहीं करता था। एक तत्व को लोड करने की प्रक्रिया में, इस इंटरफ़ेस का अनुरोध करने वाली प्रक्रिया ने एक त्रुटि प्राप्त की और तत्व की आंतरिक संरचना को नष्ट कर दिया, जिससे उपयोग-बाद-मुक्त प्रकार की भेद्यता हो गई। फिलहाल, आइटम को डाउनलोड करने की अनुमति नहीं है (इसके बावजूद, यह अभी भी "डेवलपर" मेनू में जोड़े जाने वाली सूची में पाया जा सकता है)। भेद्यता स्वयं हल नहीं होती है।
मानक लोगों के अलावा, प्रत्येक ActiveX वर्ग "मुख्य" इंटरफ़ेस का निर्यात करता है, अपनी अनूठी कार्यक्षमता का प्रतिनिधित्व करता है। उदाहरण के लिए, क्लास फॉर्म्स। कोमैंडबटन 1 के लिए, यह ICommandButton है।
आप Microsoft Visual Studio पैकेज में शामिल
OleView टूल का उपयोग करके ActiveX इंटरफेस देख सकते हैं।

किसी तत्व का इंटरफ़ेस उसके
तरीकों और
गुणों को परिभाषित करता है। गुण कुछ डेटा का प्रतिनिधित्व करते हैं जो एक तत्व की उपस्थिति और संचालन को निर्धारित करता है। ActiveX तत्व का डेवलपर प्रत्येक संपत्ति को एक विशिष्ट नाम प्रदान करता है, BackColor या GridLineWidth, और एक प्रकार, उदाहरण के लिए, एक स्ट्रिंग, पूर्णांक, या वास्तविक डबल परिशुद्धता कहते हैं। बिटमैप इमेज और आइकन्स के लिए, एक प्रकार की प्रॉपर्टी होती है जैसे कि चित्र। क्लाइंट प्रोग्राम अपने पूर्णांक सूचकांकों और मूल्यों को सेट करके नियंत्रण के व्यक्तिगत गुणों को निर्धारित कर सकता है।
निम्न-स्तरीय कार्यान्वयन के दृष्टिकोण से, विधियों और गुणों में विभाजन औपचारिक है, क्योंकि "गुणों" को गेट / सेट विधियों के एक सेट द्वारा दर्शाया जाता है। हालांकि, एक महत्वपूर्ण अंतर है: एक तत्व के तरीके (इसका मुख्य इंटरफ़ेस) केवल प्रोग्रामिक रूप से कहा जा सकता है, कार्यालय दस्तावेजों के मामले में, केवल एक चल रहे VBA प्रोग्राम से। सुरक्षा के दृष्टिकोण से, यह बहुत रुचि का नहीं है, क्योंकि VBA निष्पादन पहले से ही ऑपरेटिंग सिस्टम का एक समझौता है।
गुण दस्तावेज़ में सहेजे जाते हैं और जब इसे खोला जाता है, तो उन्हें
संसाधित किया जाएगा
और स्मृति में संरचनाओं में
लोड किया जाएगा,
भले ही वीबीए निष्पादन निषिद्ध हो ।
सॉफ़्टवेयर के दृष्टिकोण से, तत्व के भाग पर, दस्तावेज़ में इसके गुणों और स्थिति को संरक्षित करने के लिए, कंटेनर
IStream ,
IStorage और
IPropertyBag इंटरफेस प्रदान करता
है । डिस्क फ़ाइल में उनके कार्यान्वयन और डेटा की प्रस्तुति अब ActiveX तत्व की चिंता नहीं है, और पूरी तरह से कंटेनर और दस्तावेज़ के प्रारूप पर निर्भर करती है। यह ध्यान दिया जाना चाहिए कि संग्रहीत डेटा का सेट और प्रारूप गुणों के "सार्वजनिक रूप से" निर्यात सेट के अनुरूप हो सकता है, या यह पूरी तरह से अलग हो सकता है। Microsoft Office से संबंधित कार्यान्वयन के उदाहरणों पर विचार करें।
यौगिक फ़ाइल (CFBF)
पुराना कार्यालय दस्तावेज़ प्रारूप , जहाँ ObjectPool निम्न-स्तरीय भंडारण और इसके अंदर अलग उपनिर्देशिकाएँ ActiveX डेटा संग्रहीत करने के लिए आवंटित किया गया था। स्ट्रीम "\ 001CompObj" में वर्ग पहचानकर्ता होता है, जो अंततः लोड की गई वस्तु के वर्ग को निर्धारित करता है।
पहचानकर्ता को सीधे हेक्स में
बदलने के परिणामस्वरूप पूरी तरह से
अलग वर्ग की वस्तु को लोड करने का प्रयास किया जाएगा।

कार्यालय ओपन एक्सएमएल
आधुनिक XML दस्तावेज़ प्रारूप। फ़ाइल एक ज़िप संग्रह है। ActiveX नियंत्रण डेटा को ActiveX1.xml जैसे सरल नामों वाली फ़ाइलों में ActiveX उपनिर्देशिका में संग्रहीत किया जाता है।

उदाहरण फ़ाइल:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ax:ocx ax: classid="{D7053240-CE69-11CD-A777-00DD01143C57} " ax: persistence="persistPropertyBag" xmlns:ax="http://schemas.microsoft.com/office/2006/activeX" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<ax:ocxPr ax:name="Caption" ax:value="CommandButton1"/>
<ax:ocxPr ax:name="Size" ax:value="2540;847"/>
<ax:ocxPr ax:name="FontName" ax:value="Calibri"/>
<ax:ocxPr ax:name="FontHeight" ax:value="225"/>
<ax:ocxPr ax:name="FontCharSet" ax:value="204"/>
<ax:ocxPr ax:name="FontPitchAndFamily" ax:value="2"/>
<ax:ocxPr ax:name="ParagraphAlign" ax:value="3"/>
</ax:ocx>
इन फ़ाइलों में, कक्षा पहचानकर्ताओं को पाठ के रूप में इंगित किया जाता है। पहचानकर्ता को प्रतिस्थापित करने से किसी अन्य वर्ग के तत्व को लोड करने का प्रयास भी होगा।
इसके बाद, फ़ाइल में ऑब्जेक्ट के डेटा संग्रहण के प्रकार का एक संकेत होता है: persistPropertyBag, persistStorage, या persistStream। यदि कोई तत्व
persistPropertyBag गुणों का समर्थन करता है, तो इसका डेटा
उसी पाठ फ़ाइल में संग्रहीत
किया जा सकता है, ऊपर दिए गए उदाहरण देखें। यदि इसे
स्टोरेज या
बाइनरी स्ट्रीम की आवश्यकता है , तो डेटा को एक फ़ाइल में टाइप किया जाएगा जिसका नाम है एक्टिवएक्स 1.बीन, जो कि
सीएफबीएफ फाइल है ।

आरटीएफ
एक rtf दस्तावेज़ में, ActiveX तत्व को
\ object \ objocx टैग द्वारा परिभाषित किया गया है।
\ Objdata टैग में CFBF फ़ाइल के हेक्स प्रतिनिधित्व के रूप में तत्व का गुण भंडार होता है।
{\object\objocx\f37\objsetsize\objw1440\objh480{\*\objclass Forms.CommandButton.1}
{\*\objdata 010500000200000016000000
466f726d732e436f6d6d616e64427574746f6e2e31000000000000000000000e0000
d0cf11e 0a1b11ae1000000000000000000000000000000003e000300feff090006
फ़ाइल से डाउनलोड करें
एक पूरे के रूप में एक दस्तावेज़ से ActiveX लोड करने की प्रक्रिया काफी सरल है। कंटेनर एप्लिकेशन निर्दिष्ट वर्ग की एक साफ वस्तु बनाता है, इसमें से निर्दिष्ट भंडारण इंटरफेस का अनुरोध करता है, और भंडारण, स्ट्रीम, या "संपत्ति पैकेज" के लिए एक संकेतक प्रदान करता है।
फ़िल्टर किए जाने वाले आइटम जिन्हें लोड किया जा सकता है उनमें कई चरण होते हैं। सबसे पहले,
Office COM किल बिट (रजिस्ट्री संकेत * OFFICE_KEY * \ Common \ COM संगतता) के रूप में ज्ञात ब्लैकलिस्ट में निर्दिष्ट कक्षाएं समाप्त हो जाती हैं। उदाहरण के लिए, विरोधी डाउनलोड फ़्लैग में Microsoft स्क्रिप्टलेट घटक और Microsoft वेब ब्राउज़र जैसी कक्षाएं होती हैं।
शेष कक्षाएं प्रारंभिक लोडिंग से गुजरेंगी। इसका मतलब है कि
DLL को कंटेनर एप्लिकेशन में
लोड किया
जाएगा , या EXE फ़ाइल में कार्यान्वित
COM सर्वर की प्रक्रिया शुरू की जाएगी। इसके बाद ही बाकी जाँच की जाएगी, जिसमें प्राथमिक एक - और क्या वस्तु वास्तव में, एक ActiveX प्रतिनिधि भी शामिल है।
उदाहरण: CVE-2015-6128
2015 में, शोधकर्ता ने पता लगाया कि COM मॉड्यूल को लोड करने के लिए ASLR को बायपास करने के लिए इस्तेमाल किया जा सकता है और नकली गतिशील पुस्तकालयों को लोड करके मनमाना कोड निष्पादित किया जा सकता है । CVE-2015-6128 बाद में जारी किया गया Microsoft Office के बारे में एक शब्द नहीं है।
यदि पहचानकर्ता वास्तव में ActiveX को परिभाषित करता है, तो यह कई ब्लैक एंड व्हाइट सूचियों में कई और जांचों से गुजरेगा।
डिफ़ॉल्ट सेटिंग्स पर स्वच्छ विंडोज 7 और कार्यालय 2016 पर .docx से ActiveX बूट की सूची।{00024522-0000-0000-C000-000000000046} RefEdit.Ctrl
{02AF6DD2-77E6-44DF-B3E1-57CF1476D8EA} Microsoft Forms 2.0 OptionButton
{04082FC6-E032-49F2-A263-FE64E9DA1FA3} Microsoft Forms 2.0 HTML TEXT
{0B314611-2C19-4AB4-8513-A6EEA569D3C4} Microsoft Slider Control, version 6.0
{13D557B6-A469-4362-BEAF-52BFD0F180E2} Microsoft Forms 2.0 HTML TextAREA
{19FED08E-EFD1-45da-B524-7BE4774A6AEE} Microsoft Forms 2.0 ListBox
{20DD1B9E-87C4-11D1-8BE3-0000F8754DA1} Microsoft Date and Time Picker Control 6.0 (SP4)
{227B1F3B-C276-4DE0-9FAA-C0AD42ADDCF0} Microsoft Forms 2.0 HTML RESET
{232E456A-87C3-11D1-8BE3-0000F8754DA1} Microsoft MonthView Control 6.0 (SP4)
{3D0FD779-0C2D-4708-A9BA-62F7458A5A53} Microsoft Forms 2.0 ToggleButton
{444D2D27-02E8-486B-9018-3644958EF8A9} FieldListCtrl.2 Object
{4C599241-6926-101B-9992-00000B65C6F9} Microsoft Forms 2.0 Image
{5052A832-2C0F-46c7-B67C-1F1FEC37B280} Microsoft Forms 2.0 Label
{5512D110-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML SUBMIT
{5512D112-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML IMAGE
{5512D114-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML RESET
{5512D116-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML CHECKBOX
{5512D118-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML OPTION
{5512D11A-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML TEXT
{5512D11C-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML Hidden
{5512D11E-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML Password
{5512D122-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML SELECT
{5512D124-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML TextAREA
{556C2772-F1AD-4DE1-8456-BD6E8F66113B} Microsoft ImageList Control 6.0 (SP6)
{585AA280-ED8B-46B2-93AE-132ECFA1DAFC} Microsoft StatusBar Control 6.0 (SP6)
{5CBA34AE-E344-40CF-B61D-FBA4D0D1FF54} Microsoft Forms 2.0 HTML CHECKBOX
{5E90CC8B-E402-4350-82D7-996E92010608} Microsoft Forms 2.0 HTML OPTION
{603C7E80-87C2-11D1-8BE3-0000F8754DA1} Microsoft UpDown Control 6.0 (SP4)
{6240EF28-7EAB-4dc7-A5E3-7CFB35EFB34D} Microsoft Forms 2.0 ScrollBar
{65BCBEE4-7728-41A0-97BE-14E1CAE36AAE} Microsoft Office List 16.0
{6C177EBD-C42D-4728-A04B-4131892EDBF6} Microsoft Forms 2.0 ComboBox
{787A2D6B-EF66-488D-A303-513C9C75C344} Microsoft Forms 2.0 HTML Password
{79176FB0-B7F2-11CE-97EF-00AA006D2776} Microsoft Forms 2.0 SpinButton
{86F56B7F-A81B-478d-B231-50FD37CBE761} Microsoft Forms 2.0 CommandButton
{87DACC48-F1C5-4AF3-84BA-A2A72C2AB959} Microsoft ImageComboBox Control, version 6.0
{8B2ADD10-33B7-4506-9569-0A1E1DBBEBAE} Microsoft Toolbar Control 6.0 (SP6)
{8BD21D10-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 TextBox
{8BD21D20-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 ListBox
{8BD21D30-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 ComboBox
{8BD21D40-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 CheckBox
{8BD21D50-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 OptionButton
{8BD21D60-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 ToggleButton
{9432194C-DF54-4824-8E24-B013BF2B90E3} Microsoft Forms 2.0 HTML SUBMIT
{95F0B3BE-E8AC-4995-9DCA-419849E06410} Microsoft TreeView Control 6.0 (SP6)
{978C9E23-D4B0-11CE-BF2D-00AA003F40D0} Microsoft Forms 2.0 Label
{9A948063-66C3-4F63-AB46-582EDAA35047} Microsoft TabStrip Control 6.0 (SP6)
{9BDAC276-BE24-4F04-BB22-11469B28A496} Microsoft Forms 2.0 HTML IMAGE
{A0E7BF67-8D30-4620-8825-7111714C7CAB} Microsoft ProgressBar Control, version 6.0
{CCDB0DF2-FD1A-4856-80BC-32929D8359B7} Microsoft ListView Control 6.0 (SP6)
{D7053240-CE69-11CD-A777-00DD01143C57} Microsoft Forms 2.0 CommandButton
{DCA0ED3C-B95D-490f-9C60-0FF3726C789A} Microsoft Forms 2.0 Image
{DD4CB8C5-F540-47ff-84D7-67390D2743CA} Microsoft Forms 2.0 TextBox
{DFD181E0-5E2F-11CE-A449-00AA004A803D} Microsoft Forms 2.0 ScrollBar
{E9729012-8271-4e1f-BC56-CF85F914915A} Microsoft Forms 2.0 CheckBox
{EA778DB4-CE69-4da5-BC1D-34E2168D5EED} Microsoft Forms 2.0 SpinButton
{EAE50EB0-4A62-11CE-BED6-00AA00611080} Microsoft Forms 2.0 TabStrip
{F14E8B03-D080-4D3A-AEBA-355E77B20F3D} Microsoft Forms 2.0 HTML SELECT
{F8CF7A98-2C45-4c8d-9151-2D716989DDAB} Microsoft Visio Document
{FB453AD8-2EF4-44D3-98A8-8C6474E63CE4} Microsoft Forms 2.0 HTML Hidden
{FDEA20DB-AC7A-42f8-90EE-82208B9B4FC0} Microsoft Forms 2.0 TabStrip
{FE38753A-44A3-11D1-B5B7-0000C09000C4} Microsoft Flat Scrollbar Control 6.0 (SP4)
आप देख सकते हैं कि सूची में एक महत्वपूर्ण स्थान पर
Microsoft प्रपत्र समूह के घटकों का कब्जा है। यह नियंत्रण का एक सेट है जो कार्यालय के साथ आता है, और आप उन्हें ActiveX नियंत्रण कक्ष में देख सकते हैं। प्रारंभ में, वे सभी "सुरक्षित" के रूप में पंजीकृत थे, लेकिन समय के साथ यह स्पष्ट हो गया कि व्यक्तिगत तत्वों के लिए ऐसा नहीं है। उदाहरण के लिए, फ़्रेम तत्व किसी भी सूचियों की जाँच किए बिना किसी अन्य ActiveX को लोड करता है (नवीनतम संस्करणों में यह "निश्चित" है, लेकिन फ़्रेम की अपनी काली सूची सामान्य कार्यालय से अलग है)। इस कारण से, कुछ Microsoft प्रपत्र तत्वों को केवल उपयोगकर्ता की अनुमति के साथ एक दस्तावेज़ में लोड किया जा सकता है। Microsoft प्रपत्र फ़्रेम को उपयोगकर्ता की सहमति (डिफ़ॉल्ट सेटिंग्स पर) की भी आवश्यकता होती है, लेकिन यह आपको किल बिट सूची से कुछ आइटम डाउनलोड करने की अनुमति देता है जो अन्य शर्तों के तहत लोड नहीं किए जा सकते।
इसलिए, यदि कोई हमलावर उपयोगकर्ता को ActiveX लोड करने की अनुमति देने के लिए मना करता है, तो फ़्रेम उसे ऐसे तत्वों के कारण शस्त्रागार का विस्तार करने में मदद करेगा, उदाहरण के लिए, वेब ब्राउज़र।
Microsoft प्रपत्र प्रॉपर्टी संग्रहण प्रारूप आंशिक रूप
से [MS-OFORMS] विनिर्देश द्वारा प्रलेखित है।
ActiveX के स्कैन के दौरान, यह पता चला कि डॉक्टर, डॉक्स और आरटीएफ के लिए कक्षाओं का सेट अलग है, सामान्य तरीके से चलने
और ऑटोमेशन मोड में चलने वाले एप्लिकेशन के लिए उपलब्ध ActiveX की अलग-अलग सूचियां भी हैं।
कई लोकप्रिय एप्लिकेशन इन सूचियों को अपने स्वयं के ActiveX के साथ पूरक करते हैं। यदि एक भेद्यता की खोज की जाती है, तो यह बुलेटिन में परिलक्षित होता है क्योंकि यह उस भाग के अनुप्रयोग से संबंधित है, जिसका वह एक हिस्सा है। हालाँकि, भेद्यता का फायदा उठाने का एकमात्र तरीका कार्यालय दस्तावेज़ हो सकता है।
उदाहरण: फ्लैश एक्टिवएक्स
फ्लैश एक्टिवएक्स को विशेष रूप से वायरस लेखकों द्वारा उनकी लगातार खोजी गई कमजोरियों और IE और कार्यालय की सफेद सूचियों में एक स्थायी स्थान के लिए पसंद किया गया था। इस घटक में पहली ज्ञात भेद्यता 2008 में वापस दिखाई दी, अंतिम सीवीई-2018-4878 में से एक इस साल फरवरी में बंद हो गई थी। IE की लुप्त होती लोकप्रियता के साथ, कार्यालय दस्तावेज़ फ्लैश के लिए कारनामे वितरित करने का मुख्य तरीका बन गए हैं।
एंबेडेड OLE डेटा एलिमेंट्स
लागू किए गए OLE तत्वों को "अन्य दस्तावेज़ों में संसाधित किए गए विभिन्न स्वरूपों के डेटा को संपादित करने की क्षमता के साथ" दस्तावेज़ में दस्तावेज़ "की अवधारणा को लागू करने के लिए डिज़ाइन किया गया है। ActiveX की तरह, OLE दस्तावेज़ COM के आधार पर कार्यान्वित किए जाते हैं।
आप एक Word दस्तावेज़ में एक OLE तत्व निम्नानुसार जोड़ सकते हैं: "इन्सर्ट" टैब खोलें और टेक्स्ट -> ऑब्जेक्ट चुनें। कार्यक्रम दस्तावेज़ प्रकारों की एक सूची प्रदर्शित करता है जिसके लिए OLE हैंडलर पंजीकृत हैं। जैसा कि ActiveX के मामले में है, यह सूची उन वर्गों के सेट से मेल नहीं खाती है जिन्हें वास्तव में OLE दस्तावेज़ के रूप में लोड किया जा सकता है।

कार्यक्रम प्रस्तुति
ActiveX के मामले में, किसी भी OLE दस्तावेज़ के कार्यान्वयन को संबंधित COM वर्ग द्वारा दर्शाया गया है, जो DLL या EXE के रूप में बनाया गया है। घटक आवश्यक सेवा इंटरफेस का निर्यात करता है, और राज्य IPersist * इंटरफेस के माध्यम से कंटेनर दस्तावेज़ में सहेजा जाता है।
CFBF दस्तावेज़ में, OLE ऑब्जेक्ट डेटा को ObjectPool सेकंड-लेवल स्टोरेज में संग्रहीत किया जाता है। थ्रेड्स का एक सेट आमतौर पर संबंधित ActiveX नियंत्रणों के समान होता है।

ओपन ऑफिस एक्सएमएल दस्तावेजों में, ओएलई ऑब्जेक्ट डेटा एक टाइप नाम oleObject1.bin के साथ CFBF भंडारण फ़ाइल में एम्बेडिंग उपनिर्देशिका में संग्रहीत किया जाता है।

RTF दस्तावेज़ों में, ऑब्जेक्ट जानकारी को टैग के अंतर्गत संग्रहीत किया जाता है
\ ऑब्जेक्ट \ objemb \ । अनुभाग में सीएफबीएफ फ़ाइल के हेक्स प्रतिनिधित्व के रूप में इनकोडिंग स्टोरेज भी शामिल है।
{\object\objemb\objw8307\objh553{\*\objclass WordPad.Document.1}
{\*\objdata 010500000200000013000000576f72645061642e446f63756d656e742e31000000000000000000000a0000
d0cf11e 0a1b11ae100000000
RTF प्रारूप को इस तथ्य से अलग किया जाता है कि यह
\ objupdate टैग का समर्थन करता है, जो तत्व के स्वचालित सक्रियण का कारण बनता है, जबकि डिफ़ॉल्ट रूप से OLE तत्व लोड होने पर निष्क्रिय होते हैं।
उदाहरण: CVE-2017-11882
एक अलग प्रक्रिया में ऑब्जेक्ट के प्रसंस्करण के कारण समीकरण संपादक घटक की भेद्यता CVE-2017-11882 OLE ने स्थिर और सार्वभौमिक संचालन को संभव बना दिया। टैग \ objupdate के कारण Word दस्तावेज़ खोलने पर संवेदनशील घटक को तुरंत लोड करता है।
उदाहरण: एक्सेल एम्बेडेड तत्व मैक्रो वायरस के साथ
शोधकर्ताओं ने दुर्भावनापूर्ण आरटीएफ-दस्तावेजों की खोज की है जो किसी भी नई कमजोरियों का उपयोग नहीं करते हैं। दस्तावेजों में एम्बेडेड ऑब्जेक्ट्स के रूप में मैक्रोज़ के साथ कई एक्सेल दस्तावेज़ होते हैं। गणना इस तथ्य पर की जाती है कि उपयोगकर्ता, जो एक पंक्ति में कई बार दस्तावेज़ को खोलने के बाद, मैक्रो को निष्पादित करने से इनकार करता है, परिणामस्वरूप, "आत्मसमर्पण" करता है और निष्पादन की अनुमति देता है। फिलहाल, तकनीक अभी भी काम कर रही है।

एम्बेडेड OLE तत्वों के मामले में ActiveX से एक महत्वपूर्ण अंतर यह है कि क्लास पहचानकर्ता सीधे WriteClassStg फ़ंक्शन द्वारा स्टोरेज फ़ाइल में लिखा जाता है। यह तकनीक बहुत पहले से विरासत में मिली है, जब Microsoft ने उत्साहपूर्वक "क्रमांकन" और अपने राज्य के साथ वस्तुओं के भंडारण की अवधारणा को CFBF प्रारूप में विकसित किया था। कंटेनर दस्तावेज़ कार्यान्वित तत्व के वर्ग पहचानकर्ता को भी बचाता है, लेकिन रिपॉजिटरी में निर्दिष्ट वर्ग का ऑब्जेक्ट लोड किया जाएगा। इस पहचानकर्ता को उस वस्तु को लोड करने के लिए आवेदन को मजबूर करके प्रतिस्थापित किया जा सकता है जो इन उद्देश्यों के लिए बिल्कुल भी नहीं है।
तत्व डेटा को संपादित करना संभव है, जो कुछ मामलों में कमजोरियों की पहचान की ओर जाता है।
OLE ऑब्जेक्ट डाउनलोड करने के लिए कई जाँच से गुजरते हैं, जिससे संभावित रूप से भरी हुई वस्तुओं की पूरी सूची प्राप्त करना मुश्किल हो जाता है। तत्वों का सेट जिन्हें ओएलई ऑब्जेक्ट के रूप में लोड किया जा सकता है, लोड किए गए ActiveX की सूची से अलग है। विशेष रूप से, उन्हें Office द्वारा नहीं बल्कि इंटरनेट एक्सप्लोरर (HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ ActiveX संगतता) द्वारा स्वामित्व वाली किलबिट सूची पर जाँच की जाती है।
लिंक द्वारा OLE
OLE किसी दस्तावेज़ में सामग्री एम्बेड करने के लिए दो तंत्रों के बीच अंतर करता है - सीधे OLE दस्तावेज़ को एम्बेड करना और किसी अन्य दस्तावेज़ में किसी अन्य दस्तावेज़ के लिए लिंक बनाना। संदर्भ द्वारा OLE ऑब्जेक्ट को एम्बेड करने के मामले में, मुख्य दस्तावेज़ में एम्बेडेड दस्तावेज़ की फ़ाइल के लिए पथ का संकेत होता है। पथ स्थानीय या नेटवर्क, या इंटरनेट पता हो सकता है। OLE हैंडलर फ़ाइल एक्सटेंशन द्वारा निर्धारित किया जाता है, इसी हैंडलर को ऑपरेटिंग सिस्टम में पंजीकृत होना चाहिए।
उदाहरण: CVE-2017-0199
CVE-2017-0199 की भेद्यता दस्तावेज़ में "संदर्भ द्वारा वस्तु" एचटीए प्रारूप को जोड़ने की संभावना में शामिल थी। उत्तरार्द्ध html कोड को निष्पादित करने की क्षमता के साथ है, अर्थात, यह वास्तव में एक निष्पादन योग्य फ़ाइल है। हैंडलर ने स्वचालित रूप से डाउनलोड किया और एचटीए निष्पादित किया, जिससे आप दस्तावेज़ खोलते समय मनमाना कोड निष्पादित कर सकते हैं।
एम्बेडेड ऑब्जेक्ट को अपडेट करने से पहले, एप्लिकेशन उपयोगकर्ता की अनुमति मांगता है। इस मामले में, फ़ाइल अग्रिम में डाउनलोड की जाती है, जो उपयोगकर्ता के बारे में जानकारी का खुलासा करने का काम कर सकती है।
एंबेडेड फ़ाइलें (पैकेज)
कार्यालय दस्तावेज़ किसी भी फ़ाइल को जोड़ने की क्षमता का समर्थन करते हैं (ऑब्जेक्ट -> फ़ाइल से बनाएं या बस संपादित करें और फ़ाइल आइकन को संपादित फ़ील्ड में खींचें)। तकनीकी रूप से, यह एक अंतर्निहित
ऑब्जेक्ट पैकर तत्व को उस दस्तावेज़ में जोड़कर लागू किया जाता है जो वांछित फ़ाइल को अपने डेटा में लिखता है। ऑब्जेक्ट पैकेगर आपको फ़ाइल के आइकन और हस्ताक्षर को बदलने की अनुमति देता है, साथ ही कमांड लाइन को खोलने के लिए निर्दिष्ट करता है। इसमें
फ़ाइलें "संदर्भ द्वारा" शामिल हो सकती हैं जब फ़ाइल को अपने स्वयं के भंडारण से नहीं खोला जाता है, लेकिन
नेटवर्क एक सहित निर्दिष्ट पथ के साथ।
हाल ही में, ऑब्जेक्ट पैकर की कार्यक्षमता में काफी कटौती की गई है, और शुरू में तत्व निष्पादन योग्य, लिंक और यहां तक कि कमांड लाइन सहित किसी भी फाइल को बचा सकता है। सामग्री को शुरू करने के लिए उपयोगकर्ता को जो कुछ भी करना था वह दस्तावेज़ के पाठ में आइकन को डबल-क्लिक करना था।
उदाहरण: एक आउटलुक संदेश के शरीर में फ़ाइलें
आउटलुक संदेश, जो कि यौगिक दस्तावेज भी हैं, आपको संदेश बॉडी में ऑब्जेक्ट पैकर तत्वों को जोड़ने की अनुमति देते हैं । उपयोगकर्ता के लिए, तत्व एक हमलावर द्वारा मनमाने ढंग से चुनी गई छवि की तरह दिखता है। छवि पर डबल-क्लिक करने से पैक्ड फ़ाइल खुलती है। एक हमलावर को उन डेटा प्रकारों को चुनना होगा जो अभी तक सुरक्षा नीतियों को कसने के तहत नहीं आए हैं ।

इनलाइन तत्वों को OLE का उपयोग करके लागू नहीं किया गया है
फिलहाल, गैर-ओएलई तत्वों का सबसे बड़ा खतरा / रुचि ऐसी
छवियां हो सकती
हैं जिन्हें संदर्भ द्वारा दस्तावेज़ में जोड़ा जाता है । जब कोई दस्तावेज़ गैर-संरक्षित मोड में खोला जाता है, तो छवियां स्वचालित रूप से डाउनलोड हो जाती हैं, जिससे उपयोगकर्ता के स्थान और पहचान का खुलासा हो सकता है, जिसने अज्ञात नामों के माध्यम से दस्तावेज़ डाउनलोड किया था या तीसरे पक्ष से एक गोपनीय दस्तावेज़ प्राप्त किया था। यह तकनीक, विशेष रूप से
स्क्रिब्ल्स टूल में लागू की गई थी, जो अमेरिकी खुफिया सेवाओं के साथ है।
Windows स्थानीय क्षेत्र नेटवर्क पर, स्वचालित रूप से संदर्भ द्वारा छवियों को डाउनलोड करने से
NTLMRelay भेद्यता का शोषण संभव हो जाता
है । छवियों को जोड़ने के लिए तंत्र ActiveDirectory नेटवर्क की सुरक्षा आवश्यकताओं के साथ संगत नहीं है, क्योंकि इस तरह के एक दस्तावेज प्राप्त करने वाला प्रशासक अनिवार्य रूप से पूर्ण प्रशासनिक विशेषाधिकारों के साथ एक हमलावर कोड निष्पादित करता है।
सुरक्षा के तरीके
क्या किया जा सकता है? सब सब में, एक सा।
Office दस्तावेज़ों में एम्बेडेड ऑब्जेक्ट्स में भेद्यता के खिलाफ सुरक्षा का सबसे प्रभावी तरीका
संरक्षित देखने का तरीका है । इस मोड में, लोडिंग ऑब्जेक्ट और बाहरी स्रोतों से डेटा लोड करना दोनों को बाहर रखा गया है। दुर्भाग्य से, एक पूर्ण-फ़ीचर मोड में संक्रमण के लिए प्राथमिक उपयोगकर्ता कार्यों की आवश्यकता होती है जो आसानी से सोशल इंजीनियरिंग विधियों द्वारा उकसाए जाते हैं।
ट्रस्ट सेंटर सेटिंग्स में ActiveX नियंत्रणों को
अक्षम किया जा सकता है

ध्यान दें कि यह OLE इनलाइन तत्वों के लिए काम नहीं करता है।