
macOS 10.12.1 पर CVE-2016-1825 या CVE-2016-7617 के माध्यम से स्थानीय विशेषाधिकार वृद्धि।
physmem एक भौतिक मेमोरी निरीक्षण उपकरण और स्थानीय विशेषाधिकार वृद्धि (local privilege escalation) है जो macOS 10.12.1 तक के संस्करणों को लक्षित करता है। यह तैनाती लक्ष्य के आधार पर या तो CVE-2016-1825 या CVE-2016-7617 का शोषण करता है। ये दोनों कमजोरियाँ लगभग समान हैं, और इनका शोषण बिल्कुल एक जैसे ही किया जा सकता है। इन्हें क्रमशः OS X El Capitan 10.11.5 और macOS Sierra 10.12.2 में पैच किया गया।
चूँकि ये तार्किक बग (logic bugs) हैं, इसलिए शोषण अत्यधिक विश्वसनीय है। मैंने इन कमजोरियों का शोषण करने वाला प्रोग्राम (सही ढंग से) चलाने के हजारों बार के अनुभव में अभी तक कोई पैनिक (panic) नहीं देखा।
CVE-2016-1825 IOHIDevice में एक समस्या है जो मनमाने IOKit रजिस्ट्री गुण (arbitrary IOKit registry properties) सेट करने की अनुमति देती है। विशेष रूप से, विशेषाधिकार प्राप्त गुण IOUserClientClass को एक अविशेषाधिकार प्राप्त प्रक्रिया (unprivileged process) द्वारा नियंत्रित किया जा सकता है। मैंने Yosemite से पहले के प्लेटफार्मों का परीक्षण नहीं किया है, लेकिन यह कमजोरी स्रोत कोड में Mac OS X Leopard जितने पुराने संस्करण में दिखाई देती है।
CVE-2016-7617 AppleBroadcomBluetoothHostController में लगभग समान समस्या है। यह कमजोरी OS X El Capitan में शुरू हुई प्रतीत होती है। इसकी रिपोर्ट Google के Project Zero से Ian Beer (समस्या 974) और Radu Motspan ने की।
अपने तैनाती लक्ष्य (deployment target) को कमांड लाइन पर निर्दिष्ट करके physmem बनाएँ:
$ make MACOSX_DEPLOYMENT_TARGET=10.10.5
read कमांड का उपयोग करके भौतिक मेमोरी का एक शब्द (word) पढ़ सकते हैं:
$ ./physmem read 0x1000
a69a04f2f59625b3
write कमांड का उपयोग करके भौतिक मेमोरी में लिख सकते हैं:
$ ./physmem write 0x1000 0x1122334455667788
$ ./physmem read 0x1000
1122334455667788
root कमांड का उपयोग करके रूट शेल (root shell) निष्पादित कर सकते हैं:
$ ./physmem root
sh-3.2# whoami
root
physmem कोड को सार्वजनिक डोमेन (public domain) में जारी किया गया है। एक शिष्टाचार के रूप में, मैं अनुरोध करता हूँ कि यदि आप इस कोड का कोई भाग संदर्भित या उपयोग करते हैं, तो कृपया मुझे श्रेय दें।