
TCC बायपास
एक छात्र के रूप में, मेरे पास उन उपकरणों तक सीमित पहुँच है जिनमें मैं इस भेद्यता का परीक्षण कर सकता हूँ। मैंने अब तक जिन संस्करणों का परीक्षण किया है वे हैं MacOS 12.3.1, MacOS 12.3, MacOS 12.0, MacOS 10.15.7, और MacOS 11.6.1। यह भेद्यता परीक्षण किए गए सभी संस्करणों पर काम करती है।
प्रभाव: एक दुर्भावनापूर्ण एप्लिकेशन कुछ गोपनीयता प्राथमिकताओं को बायपास करने में सक्षम हो सकता है
विवरण: जब चल रहे एक्जीक्यूटेबल को हटा दिया जाता है, तो प्रक्रिया स्क्रीन रिकॉर्डिंग के साथ-साथ कुछ एक्सेसिबिलिटी सेटिंग्स के लिए प्रतिबंधों को बायपास करने में सक्षम होती है, अर्थात कीस्ट्रोक इंजेक्शन (मेटास्प्लॉइट का उपयोग करके)।
संभावित कारण: macOS प्रक्रिया के पैरेंट एक्जीक्यूटेबल की अनुमतियाँ नहीं ढूँढ पाता और इसलिए स्क्रीन रिकॉर्डिंग को नहीं रोकता। हालाँकि, यह भ्रामक है कि कैमरा और माइक अभी भी ठीक से प्रतिबंधित हैं।
विवरण:
tccutil reset All के परिणामस्वरूप एक अनुमति प्रॉम्प्ट दिखाया जाता है -- कैमरा या माइक तक पहुँचने पर भी अनुमति प्रॉम्प्ट दिखाया जाता है।यह macOS की एक नई स्थापना पर काम करता है।
src/POC.sh से POC चलाने पर TCC प्रॉम्प्ट के बिना एक स्क्रीनशॉट तैयार होगा और इसमें उपयोगकर्ता को दिखाई देने वाली सभी विंडो शामिल होंगी। स्क्रीनशॉट तैयार होने के लिए स्क्रिप्ट को कभी-कभी कई बार (अधिकतम 3) चलाना होगा।
यह शोषण पहली बार मेरे द्वारा मेटास्प्लॉइट के वेब डिलीवरी के साथ प्रयोग करते समय खोजा गया था। मैंने पाया कि मीटरप्रेटर शेल खुलने के तुरंत बाद ड्रॉप किए गए एक्जीक्यूटेबल को हटाकर, शेल ऐसी क्षमताएँ प्राप्त कर लेता है जो सामान्यतः TCC प्रॉम्प्ट के पीछे बंद होती हैं। यह भेद्यता एक हमलावर को कीस्ट्रोक इंजेक्ट करने की भी अनुमति देती है। हालाँकि, मैं Objective-C डेवलपर नहीं हूँ और इस प्रकार अपना स्वयं का POC बनाने में सक्षम नहीं हूँ। यह प्रभाव अभी भी मेटास्प्लॉइट के माध्यम से प्राप्त किया जा सकता है।
src/POC.sh -- शेल स्क्रिप्ट: screenshot को कॉपी करता है, उसे निष्पादित करता है, और चलने के दौरान उसे हटा देता है।
src/screenshot -- Mach-O एक्जीक्यूटेबल: एक स्क्रीनशॉट लेता है और इसे src/screenshot.png में सहेजता है। src/screenshot.m से संकलित।
src/screenshot.m -- मूल कोड के लिए theevilbit को श्रेय। मेरे द्वारा किया गया एकमात्र संशोधन स्क्रीनशॉट लेने से पहले 3 सेकंड की नींद जोड़ना था ताकि स्क्रीनशॉट लेने से पहले एक्जीक्यूटेबल को हटाने के लिए पर्याप्त समय मिल सके।