Microsoft ने कल
MS13-063 अपडेट सहित अपने उत्पादों के लिए सुरक्षा अद्यतन का एक सूट जारी किया, जो DEP और ASLR जैसे "शमन" ऑपरेटिंग तंत्र को बायपास करने की क्षमता को ठीक करता है। इन तंत्रों को कारनामों में घेरने की तकनीक का प्रदर्शन NSFocus Security Labs द्वारा CanSecWest और VUPEN द्वारा Pwn2Own 2013 में किया गया था।
हमने पहले से ही EMET v4 के तंत्र के बारे में
लिखा था , जिसमें वांछित लाइब्रेरी के कोड को मेमोरी में लोड करने के लिए
ntdll! LdrHotPatchRoutine विधि का उपयोग करना संभव हो गया था, तथाकथित को दरकिनार कर दिया। DEP और ASLR द्वारा लगाए गए प्रतिबंध।
LdrHotPatchRoutine का उपयोग OS द्वारा "हॉट पैच" (रिबूट लागू किए बिना घटकों को ठीक करने) के हिस्से के रूप
में किया जाता है और नेटवर्क सहित विभिन्न स्थानों से गतिशील पुस्तकालयों को लोड करने की अनुमति देता है (UNC पतों के माध्यम से)। MS13-063 OS के लिए एक पैच पेश करता है जो EMET में प्रदर्शित की गई कार्यक्षमता के समान है।
LdrHotPatchRoutine का संचालन अच्छी तरह से ज्ञात UserSaredData संरचना (KUSER_SHARED_DATA) का उपयोग करते समय ASLR बाईपास से संबंधित है, जो उपयोगकर्ता मोड (0x7ffe0000) और कर्नेल मोड (0xffdf0000) में हार्डकोड पते के लिए अनुमानित है। संरचना का उपयोग कुछ साझा सेवा डेटा (डिबगिंग जानकारी, टाइमर जानकारी, ओएस संस्करण, आदि) में उपयोगकर्ता और कर्नेल मोड में सक्रिय ओएस घटकों के त्वरित उपयोग के लिए किया जाता है। UserSaringData में कुछ फ़ंक्शन पॉइंटर्स का उपयोग करके, एक हमलावर जल्दी से एक आवश्यक फ़ंक्शन के पते का पता लगा सकता है। विशेष रूप से, विंडोज 8 से पहले विंडोज के 64-बिट संस्करण इस संरचना में 32-बिट संस्करण ntdll के कार्यों को इंगित करते हैं, जिसे OS WoW64 के लिए उपयोग करता है।
इस प्रकार, UserSaringData और LdrHotPatchRoutine के शोषण की वर्णित विधि में उपयोगकर्ता के
किसी भी बिंदु पर आवश्यक उपयोगकर्ता के साथ undocumented फ़ंक्शन LdrHotPatchRoutine को कॉल करने की हमलावर की क्षमता शामिल है , जो
DES और ASLR को बेकार बनाता है। MS13-063 का उद्देश्य UserSaredData में वांछित पॉइंटर को इस तरह हटाना है कि हमलावर
LdrHotPatchRoutine के पते का अनुमान नहीं लगा
सके । नीचे दिया गया स्क्रीनशॉट यूजरशेडडाटा का हिस्सा दिखाता है, जहां यह देखा जा सकता है कि अपडेट ने संरचना में फ़ंक्शन (भविष्य में उनके संभावित शोषण को रोकने के लिए) के अन्य बिंदुओं को समाप्त कर दिया है।
फ़ंक्शन पॉइंटर्स को ntdll! LdrSystemDllInitBlock संरचना में ले जाया गया है, अर्थात। एएसएलआर के दृष्टिकोण में इसे बनाना, जो भविष्य में पते के संभावित प्रकटीकरण को समाप्त करता है।
http://blogs.technet.com/b/srd/archive/2013/08/12/mitigating-the-ldrhotpatchroutine-dep-aslr-bypass-with-ms13-063.aspx