
Experiments related to CVE-2015-3456
यहाँ हैं:
exploit/ एक "एक्सप्लॉइट" है (यह केवल QEMU को क्रैश करता है)।mock/ में QEMU का एक छोटा संस्करण है। केवल कमजोरी बची है।patch/ में QEMU के चल रहे इंस्टेंस को पैच करने का एक प्रोग्राम है। मुख्य बात यह है कि डिबग सिंबल या डिस्क पर मूल निष्पादन योग्य की आवश्यकता नहीं है। इसलिए, इस प्रोग्राम को अपेक्षित रूप से काम करने के लिए कुछ जानकारी प्रदान करनी होती है।सभी लाइव पैचिंग के पीछे मुख्य विचार command_to_handler ऐरे को संशोधित करना है ताकि प्रत्येक कमांड "लागू नहीं" फ़ंक्शन की ओर इंगित करे। जबकि प्रक्रिया ptrace द्वारा आंशिक रूप से रोकी जाती है (केवल मुख्य थ्रेड), यह कमजोरी को ठीक करने का एक सुरक्षित तरीका लगता है (जब तक आपको फ्लॉपी कंट्रोलर के अब काम न करने की चिंता न हो)।
इस प्रकार का पैचिंग काम करता है क्योंकि command_to_handler एक स्थिर अप्रारंभीकृत चर है और इसलिए यह BSS सेगमेंट में समाप्त होता है जो लिखने योग्य है। इसके अलावा, PIE को छोड़कर, मेमोरी में इस सेगमेंट की स्थिति संकलन समय पर ज्ञात होती है। दुर्भाग्य से, QEMU आमतौर पर PIE के रूप में संकलित किया जाता है और इसलिए ऐसा नहीं है।
बेशक, अपने जोखिम पर उपयोग करें: चल रही प्रक्रिया को संशोधित करना दुनिया में तबाही मचा सकता है!
अधिक विस्तृत जानकारी यहाँ उपलब्ध है: http://vincent.bernat.im/en/blog/2015-hotfix-qemu-venom.html
लाइव पैचिंग को बेहतर ढंग से समझने के लिए, यहाँ कुछ लिंक हैं: