CVE-2020-0674 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Internet Explorer के लीगेसी jscript इंजन में एक use-after-free भेद्यता है, जो calc पॉप-अप के साथ x64 Windows 7 को लक्षित करता है।
CVE-2020-0674 एक use-after-free कमजोरी है जो legacy jscript engine में पाई जाती है। इसे Internet Explorer में ट्रिगर किया जा सकता है। यहाँ दिया गया exploit maxpl0it द्वारा लिखा गया है, लेकिन यह कमजोरी स्वयं Qihoo 360 द्वारा खोजी गई थी जो वास्तविक दुनिया में उपयोग में थी। यह exploit केवल कैलकुलेटर खोलता है।
यह कमजोरी Array sort फ़ंक्शन में मौजूद होती है जब किसी तुलनात्मक फ़ंक्शन (comparator function) का उपयोग किया जाता है।
तुलनात्मक फ़ंक्शन को दिए गए दो आर्गुमेंट Garbage Collector द्वारा ट्रैक नहीं किए जाते, और इस प्रकार GC कॉल किए जाने के बाद वे मुक्त की गई मेमोरी की ओर इशारा करेंगे।
Exploit नोट्स
यह exploit विशेष रूप से Windows 7 के लिए लिखा गया था, लेकिन संभवतः बिना अधिक परेशानी के पोर्ट किया जा सकता है।
यह exploit IE के x64 इंस्टेंस के लिए लिखा गया था, इसलिए यह निम्नलिखित ब्राउज़र कॉन्फ़िगरेशन पर चलेगा (और इसका परीक्षण किया गया है):
IE 8 (x64 build)
IE 9 (x64 build)
IE 10 (या तो Enhanced Protected Mode सक्षम हो या TabProcGrowth सक्षम हो)
IE 11 (या तो Enhanced Protected Mode सक्षम हो या TabProcGrowth सक्षम हो)
यह ध्यान देने योग्य है कि Windows 7 पर Enhanced Protected Mode केवल ब्राउज़र प्रक्रिया के x64 संस्करण को सक्षम करता है, इसलिए यह कोई सैंडबॉक्स एस्केप नहीं है बल्कि कोई अतिरिक्त सैंडबॉक्स नहीं है। विडंबना यह है कि चूंकि यह exploit x64 के लिए है, EPM वास्तव में इसे काम करने देता है।
यह exploit पूरी तरह से EMET को बायपास करने के लिए नहीं बनाया गया है (केवल एक स्टैक पिवट डिटेक्शन बायपास वास्तव में लागू किया गया है), हालांकि अंतिम संस्करण (5.52) EAF+ को ट्रिगर नहीं करता प्रतीत होता है जबकि 5.5 करता है (कम से कम, Windows 7 x64 पर)। इसलिए, अधिकतम EMET सेटिंग्स सक्षम के साथ Enhanced Protected Mode में IE 11 exploit को काम करने देता है।
यह exploit भारी टिप्पणियों के साथ है, लेकिन यह समझने के लिए कि exploit कैसे काम करता है और प्रत्येक चरण में क्या कर रहा है, var debug = false; को var debug = true; में बदलें और या तो लॉग देखने के लिए डेवलपर कंसोल खोलें या इसे बंद रखें और इसके बजाय alert पॉपअप देखें (जो थोड़ा कष्टप्रद हो सकता है)।