gpg2: चेतावनी: असुरक्षित स्मृति का उपयोग करना!


11

आज के रूप में, जब भी मैं gpg2अपने मैक (10.12.1) पर (होमब्रे के माध्यम से स्थापित) का उपयोग करता हूं, तो अब मैं निम्नलिखित चेतावनी देखता हूं:

Warning: using insecure memory!

इसके लायक क्या है, मैं दो अलग-अलग मशीनों पर एक ही व्यवहार देख रहा हूं: एक मैक मिनी (2012 के अंत में) और एक मैकबुक प्रो (2012 के अंत में), दोनों 10.12.1 चल रहे हैं।

के रूप में GnuPG पूछे जाने वाले प्रश्न का कहना है:

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

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

मुझे चकित करने वाली बात यह है कि 12 सितंबर, 2016gpg2 से कोई बदलाव नहीं हुआ है । मैंने तब से संस्करण 2.0.30 को कम या ज्यादा स्थापित किया है, लेकिन मैंने केवल असुरक्षित स्मृति के बारे में इस चेतावनी को देखना शुरू कर दिया है। भले ही 12 सितंबर, 2016 से फॉर्मूला नहीं बदला है, लेकिन एक बात जो मैं यह सुनिश्चित कर सकता हूं कि मैंने यह चेतावनी देखने की शुरुआत से पहले दोनों मशीनों पर की थी । लेकिन मुझे यकीन भी नहीं है कि यह कैसे प्रभावित कर सकता है; GnuPG अकसर किये गए सवाल को कहते हैं, ऐसा लगता है कि यह ओएस और मेमोरी लॉकिंग के साथ कुछ और करना है।gpg2brew update && brew upgrade

... और इससे भी अधिक विचित्र बात यह है कि मैंने भी gpg1Homebrew (संस्करण 1.4.21) से स्थापित किया है, जो असुरक्षित स्मृति के बारे में चेतावनी नहीं देता है जब मैं इसका उपयोग करता हूं:

$ gpg1 --require-secmem
gpg: Go ahead and type your message ...
^C
gpg: Interrupt caught ... exiting

$ gpg2 --require-secmem
Warning: using insecure memory!
gpg: will not run with insecure memory due to --require-secmem

दोनों बायनेरिज़ एक ही मालिक और समूह के हैं और एक ही अनुमतियाँ हैं:

-r-xr-xr-x  1 adamliter  admin  681932 Dec 10 18:06 /usr/local/Cellar/gnupg2/2.0.30_2/bin/gpg2
-r-xr-xr-x  1 adamliter  admin  929352 Aug 17 09:21 /usr/local/Cellar/gnupg/1.4.21/bin/gpg1

मैंने gpg2होमब्रॉव के साथ पुन : स्थापित करने का प्रयास किया: दोनों पूर्वनिर्मित बाइनरी का उपयोग करके और फॉर्म स्रोत का निर्माण करके, लेकिन यह कुछ भी नहीं बदलता है। मुझे अभी भी असुरक्षित स्मृति का उपयोग करने के बारे में चेतावनी मिली है।

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

क्या किसी को पता है कि ऐसा क्या बदल सकता है कि मैं आज अचानक इस चेतावनी को देखना शुरू कर दूंगा? और gpg2बाइनरी का उपयोग करते समय मैं इसे क्यों देखूंगा लेकिन बाइनरी का नहीं gpg1?

अन्य संभावित रूप से प्रासंगिक जानकारी:

$ which gpg1
/usr/local/bin/gpg1
$ ls -al /usr/local/bin/gpg1
lrwxr-xr-x  1 adamliter  admin  31 Aug 17 17:42 /usr/local/bin/gpg1 -> ../Cellar/gnupg/1.4.21/bin/gpg1
$ which gpg2
/usr/local/bin/gpg2
$ ls -al /usr/local/bin/gpg2
lrwxr-xr-x  1 adamliter  admin  34 Dec 10 18:06 /usr/local/bin/gpg2 -> ../Cellar/gnupg2/2.0.30_2/bin/gpg2

अपडेट करें

मुझे लगता है कि यह जो कारण हो रहा है वह नए संस्करण के कारण है libgcrypt। मुझे अभी भी नहीं पता कि ऐसा क्यों हो रहा है, लेकिन मुझे पूरा यकीन है कि यह कम से कम समस्या का मूल कारण है। सूत्र केवल 1.7.4 टक्कर के लिए आज अपडेट कियाlibgcrypt गया था ; यह समझाता है कि मैं इसे एक के बाद दो अलग-अलग कंप्यूटरों पर क्यों देख रहा हूं । यह यह भी बताएगा कि ऐसा क्यों नहीं हो रहा है , क्योंकि बाहरी क्रिप्टोग्राफ़िक लाइब्रेरी पर निर्भर नहीं था , इसके बजाय अपने स्वयं के एकीकृत क्रिप्टोग्राफ़िक लाइब्रेरी का उपयोग कर रहा था।brew update && brew upgradegpg1gpg1libgcrypt

इसके अलावा, मैंने gpg2MacGPG सुइट से भी स्थापित किया है, जो इस समस्या का प्रदर्शन नहीं कर रहा है और एक अलग संस्करण के खिलाफ जुड़ा हुआ है libgcrypt:

$ /usr/local/MacGPG2/bin/gpg2 --version
gpg (GnuPG/MacGPG2) 2.0.30
libgcrypt 1.6.6
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ gpg2 --version
gpg (GnuPG) 2.0.30
libgcrypt 1.7.4
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

इस प्रकार मैं यह अनुमान लगा रहा हूं कि यह संभवत: के रखवाले के लिए एक बग रिपोर्ट है libgcrypt। मैं उनकी मेलिंग सूची पर पोस्ट करूंगा, लेकिन मैं इसे उसी समय छोड़ दूंगा, जब किसी और को एक ही मुद्दा आएगा और / या अगर किसी को पता है कि वास्तव में ऐसा क्यों हो रहा है। यदि मुझे उनकी मेलिंग सूची में शब्द भेजने के बाद पुष्टि मिलती है कि यह एक बग है, तो मैं इस प्रश्न को बंद करने के लिए वोट करूंगा।


मुझे ईमानदारी से यकीन नहीं है कि अगर यह सवाल यहां सबसे उपयुक्त है, Apple.SE पर, या यदि यह Unix.SE के लिए अधिक उपयुक्त है । मैंने पहले यहां पूछा क्योंकि ग्नूपीजी एफएक्यू बताता है कि यह ओएस और मेमोरी लॉकिंग के बारे में कुछ हो सकता है, लेकिन कृपया बेझिझक एक माइग्रेशन का सुझाव दें, यदि आप अन्यथा सोचते हैं।
एडम

Techrepublic.com/blog/it-security/the-insecure-memory-faq लगता है कि इसका कारण यह हो सकता है कि आपके वातावरण के रैम पर कम होने के कारण हो सकता है और इसलिए स्पेस स्वैप करने के लिए डेटा लिखने की आवश्यकता है।
साइडशोर्बकर

@sideshowbarker जो कि मेरा प्रारंभिक विचार था, लेकिन (i) जो व्यवहार के साथ gpg1और उनके बीच के अंतरों की व्याख्या नहीं करता था gpg2, और (ii) यह परीक्षण करते समय मैं अपने कंप्यूटर पर मेमोरी की निगरानी कर रहा हूं, और बहुत सी अप्रयुक्त मेमोरी है जब मैं चेतावनी संदेश देखता हूं। मुझे लगता है कि मैंने मुद्दे की जड़ को स्थानीयकृत कर दिया है, लेकिन मुझे अभी भी यकीन नहीं है कि ऐसा क्यों हो रहा है। एक सेकंड में प्रश्न को अपडेट करेगा।
एडम

@sideshowbarker अपडेट किया गया!
एडम

जवाबों:


9

मेरे gpg1और gpg2मेरे बीच का अंतर इस तथ्य से उत्पन्न होता है कि gpg2बाहरी क्रिप्टोग्राफ़िक लाइब्रेरी का उपयोग करता है libgcrypt, जबकि gpg1एक एकीकृत क्रिप्टोग्राफ़िक लाइब्रेरी का उपयोग करता है।

और विशेष रूप से, Homebrewlibgcrypt ने 10 दिसंबर को 1.7.4 संस्करण में अपडेट किया , जिसने libgcryptकोड में एक प्रतिगमन पेश किया , जिससे असुरक्षा स्मृति चेतावनी हो गई।

शुरुआत में इसके बारे में थोड़ी बहुत चर्चा हुई थी , जो कि Homebrew में 1.7.4 के लिए सूत्र पेश करता हैlibgcrypt , यह सुझाव देता है कि यह डिज़ाइन द्वारा हो सकता है:

बहरहाल, यह पता चला है कि यह वास्तव में एक बग था। विशिष्ट बग रिपोर्ट यहां दर्ज की गई थी:

इस प्रतिबद्ध में बग को ठीक किया गया था , और libgcrypt1.7.5 में फिक्स जारी किया गया था , जो कि लेखन के समय, अब वह संस्करण है जिसे होमब्रे ने डोमिनक टिलर के लिए धन्यवाद स्थापित किया है । इस प्रकार, इस समस्या को ठीक करने के लिए, आप बस एक कर सकते हैं brew update && brew upgrade


पोस्टीरिटी के लिए, इस उत्तर के पुराने संस्करण से कुछ जानकारी प्राप्त होने से पहले यह पुष्टि की गई थी कि यह एक बग था libgcrypt:

एक बात आप अगर तुम नहीं बल्कि हमेशा असुरक्षित स्मृति के बारे में चेतावनी दिखाई नहीं देती कर सकते हैं जोड़ने के लिए है no-secmem-warningकरने के लिए ~/.gnupg/gpg.conf। एक GnuPG पूछे जाने वाले प्रश्न के पुराने संस्करण बताते हैं:

यदि आपके सिस्टम एक एन्क्रिप्टेड स्वैप विभाजन का उपयोग करता है तो स्वैप किए जाने वाले पृष्ठों को लॉक करना आवश्यक नहीं है। वास्तव में यह संवेदनशील डेटा को डिस्क पर समाप्त होने से बचाने का सबसे अच्छा तरीका है। यदि आपका सिस्टम एन्क्रिप्टेड स्वैप विभाजन के लिए अनुमति देता है, तो कृपया उस सुविधा का उपयोग करें। ध्यान दें कि GPG एन्क्रिप्टेड स्वैप विभाजन के बारे में नहीं जानता है और चेतावनी को प्रिंट कर सकता है; इस प्रकार आपको चेतावनी को निष्क्रिय कर देना चाहिए यदि आपका स्वैप विभाजन एन्क्रिप्टेड है। आप इस चेतावनी को निष्क्रिय करना चाह सकते हैं यदि आप GnuPG सेतु (मूल) को स्थापित नहीं करना चाहते हैं या नहीं कर सकते हैं। चेतावनी को अक्षम करने के लिए आपने एक लाइन डाली

no-secmem-warning

आपकी ~/.gnupg/gpg.confफ़ाइल में।

जहाँ तक मुझे पता है, macOS एन्क्रिप्टेड स्वैप स्पेस का उपयोग करता है। मेरे लिए, उदाहरण के लिए, sysctl vm.swapusageरिटर्न:

vm.swapusage: total = 1024.00M  used = 234.75M  free = 789.25M  (encrypted)

इसके अलावा, जैसा @sideshowbarkerकि टिप्पणियों में बताया गया है , gnupg-users मेलिंग सूची में एक पोस्ट भी है , जो कहता है कि इस चेतावनी को अनदेखा करना अपेक्षाकृत सुरक्षित है:

[...] बिना रूट विशेषाधिकार के असुरक्षित मेमोरी का दोहन <understatement>करना बहुत कठिन </understatement>है - और यदि आपके हमलावर के पास आपकी मशीन पर रूट विशेषाधिकार हैं, तो यह वैसे भी सब कुछ है।


के प्रकाश में github.com/Homebrew/homebrew-core/pull/... और तथ्य यह है कि libgcryptदेखरेख यह जानबूझकर हड्डी टूट गई है लगता है, इसे यहाँ कहा कि संदेश पंक्ति जोड़कर दबा दिया जा सकता है लायक हो सकता है no-secmem-warningकरने के लिए ~/.gnupg/gpg.confफ़ाइल। जैसा कि lists.gnupg.org/pipermail/gnupg-users/2015-Deloy/054771.html नोट में लिखा गया है, “बिना रूट विशेषाधिकार के असुरक्षित स्मृति का शोषण करना बहुत कठिन है - और यदि आपके हमलावर के पास आपके विशेषाधिकारों पर रूट विशेषाधिकार हैं, तो वैसे भी यह सब खत्म हो गया है। "। तो चेतावनी के साथ शुरू करने के लिए बहुत उपयोगी नहीं है।
साइडशोबर्कर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.