यदि मैक कोड पर हस्ताक्षर करना छेड़छाड़ है, तो क्या विफल हो सकता है?


11

मैक एप्लिकेशन के डिजिटल हस्ताक्षर टूटने पर क्या झुंझलाहट या वास्तविक समस्याएं हो सकती हैं?

मैक पर अनुप्रयोगों को डिजिटल रूप से हस्ताक्षरित किया जा सकता है। जब हस्ताक्षर किसी तरह टूट जाता है, तो मुझे पता है कि कुछ एप्लिकेशन नोटिस कर सकते हैं। लेकिन मुझे नहीं पता कि ये किस हद तक सिर्फ झुंझलाहट होगी या वास्तव में चीजों को तोड़ देगी:

  • OS X फ़ायरवॉल एक तदर्थ हस्ताक्षर को सही ढंग से सेट करने में सक्षम नहीं हो सकता है, जिससे एक को बार-बार संकेत मिलता है कि "क्या आप आने वाले नेटवर्क कनेक्शन स्वीकार करने के लिए '[..]' आवेदन चाहते हैं?"

  • माता-पिता के नियंत्रण द्वारा अनुमत एप्लिकेशन अब नहीं चल सकते हैं?

  • किचेन एक्सेस टूट सकता है?

  • कुछ कहते हैं कि Apple सॉफ़्टवेयर अपडेट विफल हो सकता है। अगर सच है, तो मुझे आश्चर्य है कि अगर यह वास्तव में कोड हस्ताक्षर हस्ताक्षर पर निर्भर करता है, या पूरे आवेदन के लिए कुछ गैर-मिलान हैश, या बीओएम फ़ाइलों से जानकारी के कारण होगा ।

अधिक पृष्ठभूमि की जानकारी नीचे।


कोड हस्ताक्षर विवरण का उपयोग करके दिखाया जा सकता है:

codesign --display -vv /Applications/iTunes.app/

... जो निम्नलिखित की तरह कुछ निकलेगा (लेकिन संशोधनों के बारे में चेतावनी नहीं देगा ):

[..]
CDHash=86828a2d631dbfd417600c458b740cdcd12b13e7
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
[..]

हस्ताक्षर का उपयोग करके मान्य किया जा सकता है:

codesign --verify -vv /Applications/iTunes.app/

जो उपज देगा:

/Applications/iTunes.app/: valid on disk
/Applications/iTunes.app/: satisfies its Designated Requirement

... या (यहां तक ​​कि जब एक आवेदन में कुछ अतिरिक्त फ़ाइल डाल रहा है ।/Contents/Resources फ़ोल्डर):

/Applications/iTunes.app/: a sealed resource is missing or invalid

... या (शायद उपरोक्त संदेश से भी बदतर):

/Applications/iTunes.app/: code or signature modified

कोड हस्ताक्षर ओएस 9 या उससे पहले वापस चला जाता है, लेकिन वर्तमान कार्यान्वयन 10.5 तेंदुए में पेश किया गया था । Ars Technica लिखते हैं :

कोड पर हस्ताक्षर करने से कोड के संग्रह में एक क्रिप्टोग्राफिक रूप से सत्यापन योग्य पहचान होती है और यह सुनिश्चित करता है कि उस कोड के किसी भी संशोधन का पता चला है। शामिल पार्टियों के बारे में कोई गारंटी नहीं दी जाती है। उदाहरण के लिए, यदि आप Acme Inc. द्वारा हस्ताक्षरित एक एप्लिकेशन डाउनलोड करते हैं, तो आप इसके बारे में कुछ भी नहीं साबित कर सकते हैं सिवाय इसके कि यह उसी इकाई से आया है जो Acme Inc. का दावा कर रहा है जब आपने पिछली बार उनकी वेब साइट से कुछ डाउनलोड किया था।

यह उदाहरण वास्तव में उपभोक्ता के दृष्टिकोण से प्रौद्योगिकी के सबसे उपयोगी अनुप्रयोग पर प्रकाश डालता है। मैक ओएस एक्स एप्लिकेशन को आज [10.4 टाइगर, एवीबी] में अपग्रेड करते समय, उपयोगकर्ता को अक्सर यह सत्यापित करने के लिए प्रेरित किया जाता है कि इस एप्लिकेशन को उपयोगकर्ता नाम और पासवर्ड प्राप्त करने के लिए किचेन तक पहुंचने की अनुमति है। यह एक अच्छी सुरक्षा सुविधा की तरह लगता है, लेकिन यह सब वास्तव में मैक उपयोगकर्ताओं को नेत्रहीन रूप से "ऑलवेज अलाउन" पर क्लिक करने के लिए प्रशिक्षित करता है। और वास्तव में, औसत उपयोगकर्ता क्या करने जा रहा है, एक डिस्सेम्बलर के माध्यम से निष्पादन योग्य चलाएं और मैन्युअल रूप से सत्यापित करें कि कोड सुरक्षित है?

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

10.5 तेंदुए में फ़ायरवॉल के लिए, Apple बताता है :

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

[..]

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

10.6 हिम तेंदुए में, बाद को अधिक स्पष्ट (और अक्षम किया जा सकता है) के रूप में "स्वचालित रूप से हस्ताक्षरित सॉफ़्टवेयर को आने वाले कनेक्शन प्राप्त करने की अनुमति देता है। एक मान्य प्रमाणपत्र प्राधिकारी द्वारा हस्ताक्षरित सॉफ़्टवेयर को नेटवर्क से पहुंच प्रदान करने की अनुमति देता है"।

मैक ओएस एक्स 10.6 फ़ायरवॉल: स्वचालित रूप से आने वाले कनेक्शन प्राप्त करने के लिए हस्ताक्षरित सॉफ़्टवेयर की अनुमति दें

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

(Apple) अनुप्रयोगों के लिए जो किसी भी तरह से अपने मूल हस्ताक्षर को तोड़ चुके हैं, यह तदर्थ हस्ताक्षर किसी भी तरह कायम नहीं हो सकता है, और इसे configd, mDNSResponder और racoon के लिए परेशानी का कारण माना जाता है


मुझे लगता है कि टेंटकल का जवाब यह सब कहता है (और कोई फर्क नहीं पड़ता कि मैं कितनी कोशिश करता हूं: हस्ताक्षर तोड़ना मुझे अभी तक किचेन एक्सेस के लिए चेतावनी नहीं दिखाया गया है)। फिर भी, मुझे आश्चर्य है कि अगर किसी को समस्या का सामना करना पड़ा है। आशा है कि प्रश्न पढ़ने में बहुत लंबा नहीं है ... ;-)
अर्जन

जोड़ा गया सर्टिफिकेट टैग
quackote quixote

नीस: किसी ने सफारी 4 बीटा (शीर्ष पर इसके टैब के साथ) को किचेन के साथ संगत करने के लिए फिर से हस्ताक्षर किए: macosxhints.com/article.php?story=20090525131057394 पर "petersconsult" द्वारा टिप्पणियां देखें
अर्जन

जवाबों:


1

कोड पर हस्ताक्षर करने का एक उदाहरण एक आवेदन को 'तोड़ देगा':

  • किचेन Access.app आपको पासवर्ड देखने की अनुमति नहीं देगा यदि यह पता लगाता है कि इसके साथ छेड़छाड़ की गई है।

स्रोत: ऐप्पल मेलिंग लिस्ट और जम्मी की अवास्तविकता


बेशक, अब जब आप इसका उल्लेख करते हैं, तो यह वह एप्लिकेशन है जिसे मुझे अपने पहले परीक्षणों के लिए उपयोग करना चाहिए था! :-)
अर्जन

3

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

संपादित करें: यहाँ हिम तेंदुए में मेरे डॉक के लिए मेरे कोड हस्ताक्षर की जाँच का परिणाम है:

⚛$ codesign --verify --verbose /System/Library/CoreServices/Dock.app/
/System/Library/CoreServices/Dock.app/: a sealed resource is missing or invalid
/System/Library/CoreServices/Dock.app/Contents/Resources/expose-window-selection-big.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/expose-window-selection-small.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/finder.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/frontline.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_large.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_medium.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/indicator_small.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-l.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-m.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-sm.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/scurve-xl.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/trashempty.png: resource modified
/System/Library/CoreServices/Dock.app/Contents/Resources/trashfull.png: resource modified

अहा, मैं जांच करूँगा कि थोड़ा! कुछ मैनुअल परिवर्तित किए गए आइकनों ने कुछ अन्य अनुप्रयोगों के लिए कोड साइनिंग को नहीं तोड़ा। निर्माताओं ने खुद 2008 में लिखा था: अपने एप्लिकेशन आइकन को हाथ से बदलने के लिए, आप ऐसा करने के लिए स्वागत से अधिक हैं! एक चेतावनी के रूप में: यदि Apple भविष्य में मैक ओएस एक्स मामूली अपडेट में अंतर्निहित कोड साइनिंग को सक्षम करता है, तो आपके एप्लिकेशन अब केवल लॉन्च नहीं होंगे। यह हम उस सुविधा को अक्षम करने से सुरक्षित रूप से बचने की कोशिश कर रहे हैं जब तक कि हमें उनकी योजनाओं के ऐप्पल से कोई मतलब नहीं मिलता। - macupdate.com/info.php/id/8948?rord=mod
अर्जन

मैंने स्नो लेपर्ड में अपने गोदी को हाथ से संशोधित करने के बाद परिणाम जोड़ा है ...
तम्बू

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

अच्छी तरह से परीक्षण एक नेटवर्क-फेसिंग ऐप में संसाधनों को संशोधित करने और देखने के लिए है कि क्या हस्ताक्षर को तोड़ने से एप्लिकेशन फ़ायरवॉल से स्वचालित passthrough बंद हो जाता है ...
तम्बू

(हम्म्म, कैंडीबार डेवलपर ने मैक 10 डी से 10 जनवरी 2008 की टिप्पणी को हटा दिया है। Google कैश अभी भी इसे दिखाता है, लेकिन जाहिर है कि ओएस एक्स 6.1 के लिए एक नया संस्करण है, इसलिए या तो समस्या हल हो गई है, या कैंडीबर्गर नींद को झूठ बोलने देना चाहता है .. चलो मान
लेते

0

स्नो लेपर्ड में कोड साइनिंग का कुछ विस्तृत विवरण ars technica के स्नो लेपर्ड रिव्यू में दिया गया है । जहां तक ​​मैं बता सकता हूं, कोड साइनिंग को तोड़ने से वास्तव में कुछ भी नहीं टूटेगा। हालाँकि, यह ऐप्स को अविश्वास का कारण बना देगा जिसका अर्थ है कि उनके कार्यों का अधिक सत्यापन करना।


यह वास्तव में 10.5 तेंदुए की समीक्षा है। 10.6 समीक्षा में से एक अच्छा उद्धरण हालांकि: "और आइए हम" मैक ओएस एक्स "प्रौद्योगिकियों को न भूलें जो हमने बाद में सीखा कि वे iPhone के लिए विकसित किए गए थे और बस मैक के लिए पहले घोषणा करने की बात हुई (क्योंकि iPhone अभी भी एक गुप्त था), कोर एनिमेशन और कोड साइनिंग की तरह। " - arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars
अर्जन

0

मैं दूसरे दिन (डिस्क उपयोगिता से) अपनी डिस्क अनुमतियों की मरम्मत कर रहा था, और यह चेतावनी मिली:

Warning: SUID file "System/.../ARDAgent" has been modified and will not be repaired.

तो कुछ ऐसा है जो होगा। मुझे नहीं पता कि यह कितना महत्वपूर्ण है।


दिलचस्प बात यह है कि विशेष रूप से Apple इसे "मैक ओएस एक्स 10.5: डिस्क यूटिलिटीज रिपेयर डिस्क अनुमतियों संदेशों को सूचीबद्ध करता है, जिन्हें आप support.apple.com/kb/TS1448 पर सुरक्षित रूप से अनदेखा कर सकते हैं" यह कैसे बदला गया था और यह क्यों नहीं था, इस पर Apple का कोई शब्द नहीं है ' टी मामला हालांकि ... क्या codesign --verifyवास्तव में एक टूटा हुआ हस्ताक्षर दिखाता है?
अर्जन

0

कोड साइनिंग का वर्तमान कार्यान्वयन बहुत टूथलेस है और संभवतः iPhone डेवलपर्स के लाभ के लिए दरवाजे से बाहर निकाल दिया गया था। उम्मीद है कि भविष्य में कुछ बिंदु पर यह अनिवार्य हो जाएगा, और उम्मीद है कि यह उस समय तक बहुत आसान और सस्ता हो जाएगा।

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