
CVE-2026-112445 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, एक macOS स्थानीय विशेषाधिकार एस्केलेशन जिसमें एक अनविशेषाधिकार प्राप्त कंसोल उपयोगकर्ता launchd com.apple.xpc.uscwoap जॉब और TIOCSTI का दुरुपयोग करके root प्राप्त करता है।
2020 में, किसी ने GitHub पर एक प्रश्न उठाया: uscwoap क्या है? macOS पहले ही zsh पर स्विच कर चुका था, तो फिर com.apple.xpc.uscwoap अभी भी Bash को क्यों आमंत्रित करता था?
एक उत्तर में जॉब का कॉन्फ़िगरेशन दिखाया गया। इसमें BootShell फ़्लैग सेट था और तीनों मानक स्ट्रीम कंसोल से जुड़ी हुई थीं। इसके आधार पर, टिप्पणीकार ने सुझाव दिया कि यह जॉब सिस्टम को सिंगल-यूज़र मोड से बooting करने में शामिल हो सकता है।
com.apple.xpc.uscwoap का कॉन्फ़िगरेशन सिस्टम LaunchDaemons निर्देशिका में स्थित है। प्रासंगिक फ़ील्ड नीचे दिखाए गए हैं:
Label = com.apple.xpc.uscwoap
BootShell = true
ProcessType = Interactive
Program = /bin/bash
ProgramArguments = [bash, -sh]
StandardInPath = /dev/console
StandardOutPath = /dev/console
StandardErrorPath = /dev/console
यह जॉब launchd के सिस्टम डोमेन से संबंधित है और इसमें चलाने के लिए कम-विशेषाधिकार वाला कोई खाता निर्दिष्ट नहीं है, इसलिए Bash root के रूप में चलता है। StandardInPath इसके मानक इनपुट को /dev/console से जोड़ता है। Bash इस डिवाइस से प्राप्त इनपुट को कमांड के रूप में व्याख्यायित करता है।
सक्रिय ग्राफ़िकल कंसोल में लॉग इन किया हुआ एक गैर-प्रशासक खाता व्यवस्थापक क्रेडेंशियल के बिना launchd के जॉब नियंत्रण इंटरफ़ेस के माध्यम से इस जॉब को शुरू कर सकता है। परिणामी Bash प्रक्रिया UID 0 के साथ चलती है। BootShell फ़्लैग के बावजूद, यह लॉन्च पथ सामान्य डेस्कटॉप सत्र में भी उपलब्ध है।
root शेल अपने कमांड /dev/console से प्राप्त करता है। इस ग्राफ़िकल लॉगिन सत्र में, डिवाइस गैर-प्रशासक खाते के स्वामित्व में है, जबकि इससे कमांड पढ़ने वाली Bash प्रक्रिया root के रूप में चलती है। इसलिए एक विशेषाधिकार सीमा इनपुट के स्रोत को उसे निष्पादित करने वाली प्रक्रिया से अलग करती है।
टर्मिनल आउटपुट और टर्मिनल इनपुट कतार अलग-अलग उद्देश्यों की पूर्ति करते हैं: पूर्व टेक्स्ट प्रदर्शित करता है, जबकि उत्तरार्द्ध वर्णों को धारण करता है जो किसी प्रोग्राम द्वारा पढ़े जाने की प्रतीक्षा में हैं। इसलिए जो प्रक्रिया इनपुट कतार को प्रभावित कर सकती है, वह Bash मानक इनपुट से क्या पढ़ता है, उसे भी प्रभावित कर सकती है।
TIOCSTI एक टर्मिनल इंटरफ़ेस है जो इनपुट कतार में वर्ण डालकर इनपुट का अनुकरण करता है। प्रभावित बिल्ड्स पर, वर्तमान कंसोल उपयोगकर्ता के खाते के अंतर्गत चलने वाली प्रक्रिया इस तंत्र का उपयोग /dev/console पर इनपुट को प्रभावित करने के लिए कर सकती है। सिस्टम जॉब द्वारा लॉन्च किया गया root शेल उन वर्णों को उसी डिवाइस से पढ़ता है।
Bash उन वर्णों को कमांड के रूप में व्याख्यायित करता है और उन्हें अपने स्वयं के root विशेषाधिकारों के साथ निष्पादित करता है। यह इनपुट पथ वर्णों की आपूर्ति करने वाली प्रक्रिया पर कोई व्यवस्थापक प्राधिकरण जाँच नहीं करता है, जिससे एक अपरिविशेषाधिकारित उपयोगकर्ता से आने वाला इनपुट root के रूप में निष्पादित कमांड बन जाता है।
Apple ने इस समस्या को CVE-2026-112445 सौंपा, लेकिन अपनी सुरक्षा सलाह में इस पहचानकर्ता को शामिल नहीं किया। इस चूक का कारण अज्ञात है।
macOS 27.2 com.apple.xpc.uscwoap कॉन्फ़िगरेशन को हटा देता है।