मैं इस उच्च सिएरा सुरक्षा बग से साइड इफेक्ट के रूप में बनाए गए रूट खाते को कैसे अक्षम या हटा सकता हूं?


40

यह आलेख एक बग का वर्णन करता है जहां अनलॉक करने के लिए संकेत दिए जाने पर रूट दर्ज करना किसी भी उपयोगकर्ता को सिस्टम वरीयताओं को अनलॉक करने की अनुमति देता है। यह चेतावनी देता है कि:

इसे सत्यापित करने के लिए स्वयं ऐसा करने की कोई आवश्यकता नहीं है। ऐसा करने से एक "रूट" खाता बन जाता है, यदि आप इसे अक्षम नहीं करते हैं तो अन्य लोग इसका लाभ उठा सकते हैं।

लेख में यह नहीं बताया गया है कि अगर एक अति-उत्सुक अभियंता ने समस्या को पुन: पेश किया और अब उसे रूट खाते को हटाने या अक्षम करने की आवश्यकता है तो क्या करें।

इस खाते को कैसे सुरक्षित रूप से अक्षम या हटाया जा सकता है?

यह Apple पृष्ठ बताता है कि खाते को कैसे निष्क्रिय किया जाए लेकिन यह गलती से सुरक्षा नहीं करता है क्योंकि गलती से खाते को फिर से सक्षम किया जा सकता है। सुरक्षा बग ठीक होने के बाद, यह सिस्टम को सामान्य स्थिति में रूट डिसेबल करने के लिए काम करेगा।

अपडेट 2017-11-29 16:43 यूटीसी

सुरक्षा अद्यतन 2017-001 की सुरक्षा सामग्री के बारे में देखें प्रशासक के पासवर्ड की आपूर्ति के बिना व्यवस्थापक प्रमाणीकरण को दरकिनार करने से बचाने के लिए macOS हाई सिएरा को अपडेट करें।


इस प्रश्न का शीर्षक वर्तमान में बताए अनुसार एक XY है, क्योंकि खाता हटाना या अक्षम करना वांछित नहीं है।
मोंटी हार्डर

जवाबों:


40

उपलब्ध पैच, यहां क्लिक करें, या मशीन पर अपडेट करें

दिलचस्प बात यह है कि अभी तक OSX के बीटा और डेवलपर संस्करणों के लिए कोई पैच नहीं है, जहां तक ​​मुझे पता है। उनकी बात सुनते ही मैं इस जवाब को अपडेट कर दूंगा।

ऊपर पैच डाउनलोड करें। इतिहास के लिए बाकी पोस्ट छोड़ना :-)

सीवीई सीवीई-2017-13872 है और एनआईएसटी निकट भविष्य में विश्लेषण को अपडेट करेगा

मूल उत्तर, पैच के बिना प्रासंगिक

सबसे पहले, GUI के माध्यम से रूट खाते को अक्षम न करें , "अक्षम" रूट खाता समस्या का कारण है।

आप रूट उपयोगकर्ता को सक्षम करेंगे और उसे एक पासवर्ड देंगे। यह महत्वपूर्ण है , क्योंकि भेद्यता दूरस्थ रूप से उपलब्ध है, साथ ही वीएनसी और ऐप्पल रिमोट डेस्कटॉप (कुछ का नाम) (एक अन्य स्रोत) के माध्यम से

ऐसा करने के दो बुनियादी तरीके हैं; जीयूआई और टर्मिनल।

सबसे पहले, जीयूआई

रूट अकाउंट को सक्षम करने के लिए, "डायरेक्टरी यूटिलिटी", यानी cmd + स्पेस पर जाएं और सर्च करें। "व्यवस्थापक मोड" को अनलॉक करने के लिए लॉक दबाएं, फिर रूट खाते को संपादन के माध्यम से सक्षम करें -> "रूट उपयोगकर्ता को सक्षम करें"।

जड़ को कैसे सक्षम करें

इसे रूट पासवर्ड के लिए पूछना चाहिए, अब अपना सामान्य पासवर्ड दर्ज करें (ताकि आप इसे न भूलें)। यदि यह पासवर्ड नहीं मांगता है, तो ऊपर संपादित करें -> "रूट पासवर्ड बदलें ..." का उपयोग करें।

टर्मिनल

यदि आप एक टर्मिनल व्यक्ति से अधिक हैं, तो नीचे का उपयोग करें:

sudo passwd -u root
## Enter passwords as needed.... 
## (if you are using the terminal you should know what you are doing...)

यह टर्मिनल के साथ पर्याप्त है, GUI के साथ समस्या यह है कि हमें पासवर्ड सेट करने के लिए खाते को सक्षम करना होगा, जो हमें टर्मिनल के साथ नहीं है।

टिप्पणियाँ

यहां तक ​​कि अगर आपके पास रूट कंप्यूटर के लिए एक पासवर्ड सेट है, तो यदि आप रूट खाते को निष्क्रिय करते हैं तो यह असुरक्षित हो जाएगा। रूट खाते को अक्षम करने की कार्रवाई अपराधी लगती है। इसलिए मैं दोहराता हूं, रूट उपयोगकर्ता को सक्षम होना चाहिए और एक पासवर्ड होना चाहिए यदि GUI का उपयोग करते हुए, टर्मिनल के माध्यम से केवल ´passwd "का उपयोग करके" ठीक है "(हालांकि यह राज्य केवल GUI के माध्यम से पहुंच से बाहर है)। ऐसा लगता है कि "डायरेक्टरी यूटिलिटी" में "रूट यूजर को अक्षम करें" रूट अकाउंट के लिए पासवर्ड को हटा देता है, इस अर्थ में आपको पासवर्ड-कम रूट अकाउंट दिया जाता है जो कमजोर है।

ऐसा लगता है कि सिस्टम में "रूट" से लॉग इन करने की कोशिश करना लॉगिन-विंडो को रूट खाता सक्षम करता है यदि यह पहले से अक्षम है। यानी एक रूट रूट खाते के साथ, आपको रूट एक्सेस हासिल करने के लिए एक सिस्टम लॉगिन-विंडो में दो बार रूट दर्ज करने की आवश्यकता होती है, और (मेरे परीक्षण के अनुसार) पहले प्रयास में रूट खाता सक्षम होता है (बिना पासवर्ड के अगर सेट नहीं किया जाता है passwd), और दूसरी कोशिश में आप गुजरते हैं।

ऐसा लगता है कि यह मुद्दा कम से कम 2017-11-13 (13 नवंबर) के बाद से खुले में है, जब इसका उल्लेख Apple समर्थन मंच में किया गया है

कृपया मुझे गलत साबित करें, मैं वास्तव में अभी गलत होने की सराहना करूंगा।

डरावना अपडेट

पासवर्ड रहित रूट खाते को सक्षम करने के बाद (यानी सिस्टम प्राथमिकताएं पैनल के माध्यम से और "लॉक" पर क्लिक करके और खाली पासवर्ड के साथ "रूट" दर्ज करते हुए एक, दो या तीन बार (प्रारंभिक स्थिति पर निर्भर करता है)) लॉग ऑन करना संभव है "रूट" और एक खाली पासवर्ड (!) का उपयोग करके मुख्य लॉगिन स्क्रीन से कंप्यूटर। SSH / टेलनेट काम नहीं करता है, लेकिन Apple रिमोट डेस्कटॉप, स्क्रीन शेयरिंग और VNC असुरक्षित हैं।

तो नेटवर्क के लिए यह निम्न बंदरगाहों के लिए अस्थायी रूप से पैकेट छोड़ने के लिए ब्याज की हो सकती है:

  • सबसे आम VNC पोर्ट पाने के लिए 5900-5905 (ish, निंजा सुरक्षित होना)। VNC डिफ़ॉल्ट रूप से 5900 से शुरू होती है और यदि आप कई डिस्प्ले (असामान्य हालांकि) का उपयोग कर रहे हैं तो ऊपर की तरफ एनरोमेट करता है। स्क्रीन साझाकरण और एप्पल दूरस्थ डेस्कटॉप भी इन बंदरगाहों (उपयोग करने के लिए लगता है एप्पल सॉफ्टवेयर बंदरगाहों की सूची )
  • Apple दूरस्थ डेस्कटॉप के लिए 3283 और 5988 ( Apple सॉफ़्टवेयर पोर्ट की सूची )

अतिरिक्त पढ़ने:

समस्या से निपटने के अन्य स्रोतों का संदर्भ देने का एक बहादुर प्रयास। यदि आपके पास अधिक है तो मेरा उत्तर संपादित करें और अपडेट करें।


5
ठीक है, मैं देखता हूं कि स्व-उत्तर गलत क्यों है। जब तक यह गलती ठीक नहीं हो जाती है तब तक रूट को अक्षम करना अच्छा नहीं है क्योंकि गलती केवल खाते को फिर से सक्षम करेगी। आप कुछ टिप्पणी कर सकते हैं!
Freiheit

1
मैं एक मैक आदमी नहीं हूं, लेकिन * निक्स दुनिया में, रूट पासवर्ड को अक्षम करना सुरक्षित पासवर्ड होने से कम सुरक्षित नहीं होना चाहिए। वास्तव में, पासवर्ड को अक्षम करना और शेल को /dev/nullरूट के लिए सेट करना बहुत आम है । इस तरह से रूट अकाउंट तक पहुंच suउस अनुमति वाले उपयोगकर्ताओं के लिए syscalls के माध्यम से होती है ।
crasic

1
@ प्रणालीगत OSAIK OSX अपने सिस्टम-लॉगिन विंडो के साथ कुछ अजीब करता है। यदि वे कोशिश करते हैं तो वे स्पष्ट रूप से सामान्य या मूल में खातों को सक्षम करते हैं। और वस्तुतः इस व्यवहार का कोई दस्तावेज उपलब्ध नहीं है। ध्यान दें कि बीएसडी विनिर्देश (यानी कमांडलाइन / बैश उपयोग) अप्रमाणिक है।
फ्लिंडेबर्ग

तो टर्मिनल कमांड के साथ, आप रूट को सक्षम किए बिना रूट पासवर्ड सेट कर सकते हैं? यह सबसे सुरक्षित विकल्प लगता है।
बुद्धिमानबाग़

1
@jcm नाह, यह वास्तव में यह नहीं है कि पाठ को थोड़ा सा इधर-उधर करने के बाद यह बहुत बुरी तरह से शब्द बन गया है। मैं इसे थोड़ा साफ करने की कोशिश करूंगा, एक मिनट में देखूंगा?
flindeberg

10

यदि आप आधिकारिक पैच स्थापित नहीं कर सकते हैं या भरोसा नहीं करना चाहते हैं कि यह काम किया है, तो

आप केवल उच्च सिएरा पर रूट उपयोगकर्ता को अक्षम नहीं करना चाहते हैं।

अपने मैक को सुरक्षित करने के लिए, एक लंबे सुरक्षित पासवर्ड के साथ रूट को सक्षम करें।

हम इसे तब तक काम में नहीं बदल रहे हैं, जब तक कि अगली पूरी बात मैकओएस के लिए जारी नहीं हो जाती जो कि 10.13.2 होगी


जब तक आप कार्रवाई नहीं करते, रूट उपयोगकर्ता बॉक्स से बाहर अक्षम है और यह खराब है यदि आपका मैक सही तरीके से पैच नहीं किया गया है।

यदि आप चाहते हैं, तो वैकल्पिक रूप से शेल को कठोर करें जब तक कि एप्पल के पास आधिकारिक पैच या फिक्स न हो।

यहां एक यादृच्छिक रूट पासवर्ड सेट करने और रूट शेल को बदलने / सेट करने के लिए एक शानदार स्क्रिप्ट है /usr/bin/falseताकि पासवर्ड का अनुमान लगाने पर भी, रूट शेल लॉग इन न कर सके:

यह मूल रूप से तीन प्रमुख काम करता है:

rootpassword=$(openssl rand -base64 32)
/usr/bin/dscl . -passwd /Users/root "$rootpassword"
/usr/bin/dscl . -create /Users/root UserShell /usr/bin/false

यदि शेल सेट नहीं है, तो UserShell बना है, और पूर्ण स्क्रिप्ट मौजूदा शेल के लिए जाँच करता है और -changeइसे -createआईएनजी के बजाय इसे बंद कर देता है।

मैं अपने आप को macOS High Sierra में मूल भेद्यता से कैसे बचा सकता हूं?


1
यह आमतौर पर अस्थायी रूप से इस तरह से एक पासवर्ड स्टोर नहीं करने के लिए बेहतर है। Dcsl आदमी पेज पता चलता है "कमांड के हिस्से के रूप पासवर्ड प्रदान नहीं करते हैं और आप सुरक्षित रूप से प्रेरित किया जाएगा"
जोश कैसवेल

1
@JoshCaswell सहमत - एक स्क्रिप्ट में यह बेहतर है क्योंकि चर निर्यात नहीं किया गया है और यह उत्पन्न होता है। अच्छी खबर यह है कि ऐप्पल का एक आधिकारिक पैच है जो इस हैक को एक अल्पकालिक आवश्यकता बनाता है - हमने इसे बेड़े में एक ही पासवर्ड को हार्ड कोडिंग के बहुत अधिक नुकसान के लिए एक रोगनिरोधी के रूप में चलाया या इसका कोई पासवर्ड नहीं था। यह निश्चित रूप से एक समझौता था और समाधान नहीं था।
bmike

शुद्ध जिज्ञासा से बाहर, आपके पास अपने उत्तर के अंत में इस प्रश्न का लिंक क्यों है?
पुनर्वसु

1
@reirab पूरी तरह से गड़बड़। उचित लिंक को ठीक करने के लिए संपादन देखें। धन्यवाद!
bmike


0

आपको रूट उपयोगकर्ता के रूप में लॉग इन करना होगा और पासवर्ड को किसी मजबूत चीज़ में बदलना होगा। यदि यह वास्तव में एक नया खाता बनाता है (पहले से मौजूद रूट खाते को सक्षम करने के विपरीत) तो आपको पहले उस खाते को हटा देना चाहिए।


मेरा आत्म-उत्तर देखिए। एक मजबूत पासवर्ड सेट करने के लिए आपकी सलाह उचित है लेकिन खाते को पूरी तरह से अक्षम करना एक अधिक कठोर सुरक्षा की तरह लगता है और ओएस एक्स को उसकी डिफ़ॉल्ट स्थिति में पुनर्स्थापित करता है। support.apple.com/en-us/HT204012 । यदि रूट खाता फिर से सक्षम है, तो भी वर्णित बग के दोहन के खिलाफ एक मजबूत पासवर्ड गार्ड स्थापित करना चाहेंगे?
Freiheit

उच्च सिएरा, 10.13.0 और 10,13.1 पर, आप बिल्कुल रूट खाते को अक्षम नहीं करना चाहते हैं। समस्या यह है कि यदि रूट अक्षम है और आप रूट के रूप में लॉग इन करने के लिए किसी भी लॉगिन विंडो का उपयोग करने का प्रयास करते हैं, तो लॉगिन विंडो एक रिक्त पासवर्ड के साथ रूट अकाउंट को सक्षम करेगा । यदि रूट पहले से ही एक मजबूत पासवर्ड के साथ सक्षम है, तो लॉगिन विंडो पासवर्ड को मिटा नहीं है। एकमात्र शमन एक मजबूत पासवर्ड के साथ रूट को सक्षम करना है ।
ब्रायन रेइटर

0

Apple ने इस समस्या को ठीक करने के लिए एक अपडेट जारी किया।

सुरक्षा अद्यतन 2017-001 https://support.apple.com/en-us/HT208315

अपने मैक कंप्यूटरों पर अनधिकृत पहुंच को रोकने के लिए, आपको रूट उपयोगकर्ता खाते को सक्षम करना चाहिए और विशेष रूप से रूट उपयोगकर्ता के लिए एक पासवर्ड सेट करना चाहिए।

https://support.apple.com/en-ph/HT204012

यदि आपका रूट उपयोगकर्ता खाता पहले से ही सक्रिय है, तो सुनिश्चित करें कि आप पासवर्ड को केवल यह सुनिश्चित करने के लिए बदलते हैं कि रिक्त पासवर्ड भेद्यता सेट नहीं है।


0

नहीं! रूट खाता न निकालें!

सबसे पहले, rootमैकओएस, मैक ओएस एक्स, मैक ओएस, और यहां तक ​​कि ऑपरेटिंग सिस्टम के सभी प्राचीन संस्करणों में मौजूद रहा है। macOS ने हाल ही में भेद्यता के कारण यह खाता नहीं बनाया है। यह केवल दुर्घटना से उजागर हुआ।

हटाना rootएक बहुत बुरा विचार होगा, और मैं आपको बताता हूं कि क्यों।

यह पूरी तरह से MacOS को पंगु बना देगा, क्योंकि महत्वपूर्ण सेवाओं (जैसे WindowServer, जो GUI चलाता है) को चलाने के लिए पर्याप्त विशेषाधिकार के साथ कोई खाता नहीं होगा । क्लूलेस उपयोगकर्ताओं को हटाने से रोकने के लिए सुरक्षा उपाय हैं root, और आपको उन्हें बायपास करने का प्रयास नहीं करना चाहिए।

आइए जानें कि सिस्टम में सबसे पहली प्रक्रिया कौन चलाता है, सबसे महत्वपूर्ण प्रक्रियाएं (गतिविधि मॉनिटर का उपयोग करके):

कर्नेल_टैस्क और लॉन्च भी स्वामित्व में हैं

अरे, यह हमारे अनुकूल पड़ोस rootफिर से है! पहली प्रक्रिया (पीआईडी ​​0 के साथ) वास्तव में कर्नेल द्वारा नियंत्रित की जाती है, और संभवत: वैसे भी पूरी अनुमति होगी, लेकिन इसकी बाल प्रक्रिया, launchd(लॉगिन विंडो और विंडो सर्वर जैसी सेवाओं को शुरू करने के लिए जिम्मेदार) के विशेषाधिकारों के साथ शुरू की जाती है root। यदि rootमौजूद नहीं है, तो यह प्रक्रिया कभी भी शुरू नहीं हुई होगी, या इसकी कोई अनुमति नहीं होगी।

रूट खाता सुरक्षित करना

अन्य उत्तरों ने Apple द्वारा जारी एक पैच प्रदान किया है जो समस्या को ठीक करना चाहिए। हालांकि, यदि आप इसे स्थापित करने में असमर्थ या गैर-इच्छुक हैं ...

यह काम करता है क्योंकि macOS ने एक "अपग्रेड" के रूप में दर्ज पासवर्ड को फिर से हैश किया क्योंकि एक पुराने हैश होने के रूप में अक्षम खाते (रूट) को गलत तरीके से पाया गया था। यह अभी भी कहेगा कि यह गलत है, लेकिन अगली बार, हैश मैच होगा (क्योंकि macOS ने इसे बदल दिया) और यह आपको अंदर जाने देगा।

सुरक्षित करने के लिए root, आपको निर्देशिका उपयोगिता का उपयोग करना होगा। इसे एक्सेस करने के दो तरीके हैं:

  1. स्पॉटलाइट का उपयोग करें। स्पॉटलाइट का उपयोग करके डायरेक्टरी यूटिलिटी शुरू करना
  2. खोजक का उपयोग करें। खोजक खोलें, कमांड + शिफ्ट + जी दबाएं (या चुनें, दर्ज करें /System/Library/CoreServices/Applications/और जाओ (या हिट दर्ज करें) दबाएं। फिर वहां से निर्देशिका उपयोगिता खोलें।गो का चयन करना जहां जाना है वहां सेलेक्ट करना ओपनिंग डायरेक्टरी यूटिलिटी

एक बार डायरेक्टरी यूटिलिटी खोलने के बाद, आपको करना होगा परिवर्तन करने के लिए लॉक पर क्लिक करें

आपके द्वारा ऐसा करने के बाद, संपादन मेनू से चयन करें Change Root Passwordया Enable Root Userकरें। मैं दिखाता हूं कि Change Root Passwordमेरा रूट खाता पहले से ही एक मजबूत पासवर्ड के साथ सक्षम है।

रूट पासवर्ड बदलें का चयन

एक पासवर्ड चुनें, और अब खाली पासवर्ड अब काम नहीं करेगा।

पासवर्ड चुनना

बधाई हो! अब आप रूट हैक की चपेट में नहीं हैं।


"शुद्ध अटकलों से अनुमान लगाते हुए, सिस्टम शायद रूट खाते को फिर से सक्षम करता है क्योंकि आपने सही पासवर्ड (इस मामले में रिक्त) में दर्ज किया है।" - बिल्कुल सही नहीं है। पुराने हैशिंग तंत्र का उपयोग करके पासवर्ड को अपडेट करने के लिए एक माइग्रेशन पथ है, और यह संभाल नहीं करता है !(जो, UNIX प्रकार के रूप में, आप शायद पहचान लेंगे) सही ढंग से।
चार्ल्स डफी

मूल-कारण विश्लेषण के लिए उद्देश्य-see.com/blog/blog_0x24.html देखें ।
चार्ल्स डफी

सही - तो मेरी अटकलें सही नहीं थीं। तो यह एक "अपग्रेड" के रूप में एक खाली पासवर्ड को फिर से हैश करता है क्योंकि एक पुराने हैश होने के रूप में अक्षम खाते का गलत तरीके से पता लगाया गया था? क्या मैं सही हूँ?
देव

सिद्धांत रूप में, इस कोडपाथ में जो करना चाहिए, वह यह है कि पुराने हैश एल्गोरिथम दर्ज किए गए पासवर्ड को मान्य करता है, और फिर एक नए हैश (दर्ज किए गए पासवर्ड, जो पुराने से मेल खाने के लिए जाना जाता है) के साथ अपडेट होता है। व्यवहार में, यह उस फ़ंक्शन से त्रुटियों की जांच नहीं करता है जिसे "शैडोहाश" फ़ील्ड से पुरानी हैश को प्राप्त करना है (या, बल्कि, यह केवल रिटर्न वैल्यू की जांच करता है, लेकिन वापस जाने के लिए उपयोग किए गए पास-बाय-रेफरेंस मान का उपयोग नहीं करता है तुलना परिणाम), और फिर पासवर्ड से एक नया हैश उत्पन्न करता है (खाली या नहीं!)।
चार्ल्स डफी

... तो, बहुत ज्यादा, हाँ, आप सही हैं। :)
चार्ल्स डफी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.