स्टैक क्लैश क्या है और मैं इसके बारे में क्या कर सकता हूं?


27

मैंने स्टैक क्लैश नाम की एक नई भेद्यता के बारे में सुना है जो स्पष्ट रूप से कई यूनिक्स जैसी प्रणालियों को प्रभावित करता है (न केवल लिनक्स, बल्कि बीएसडी, सोलारिस भी)।

  • यह क्या है? मल्टी-ओएस बग कैसे हुआ?
  • मैं अपने सिस्टम की सुरक्षा कैसे करूं?

जवाबों:


29

स्टैक क्लैश काफी पुरानी तकनीक पर आधारित एक शोषण है। एक प्रक्रिया द्वारा उपयोग की जाने वाली मेमोरी को दो क्षेत्रों में विभाजित किया जाता है - स्टैक और ढेर । एक आम तौर पर स्टैक को नीचे की तरफ बढ़ने और ढेर को ऊपर की तरफ बढ़ने के रूप में कल्पना करता है। क्या होता है जब या तो दूसरे के साथ संघर्ष करने के लिए पर्याप्त बढ़ता है ? अधिक सामान्यतः, तब क्या होता है जब स्टैक असंबंधित मेमोरी स्पेस में अतिक्रमण करने के लिए पर्याप्त बढ़ता है? मूल भेद्यता 12 साल पुरानी है, और लिनक्स कर्नेल डेवलपर्स ने इसे अस्थायी रूप से एक गार्ड पेज का उपयोग करके तय किया है । हालांकि, क्वालिस के शोधकर्ता गार्ड पेज के बावजूद इसका फायदा उठाने में कामयाब रहे हैं।

Ars Technica की रिपोर्ट :

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

क्वालिस द्वारा विकसित प्राथमिक प्रूफ-ऑफ-कॉन्सेप्ट अटैक CVE-2017-1000364 के रूप में अनुक्रमित एक भेद्यता का फायदा उठाता है। क्वालिस के शोधकर्ताओं ने ऐसे हमलों का भी विकास किया है जो सीवीई-2017-1000365 और सीवीई-2017-1000367 सहित विभिन्न कमजोरियों का फायदा उठाने के लिए स्टैक क्लैश का उपयोग करते हैं। उदाहरण के लिए, जब CVE-2017-1000367 के साथ संयुक्त रूप से, सूदो में हाल ही में एक निश्चित दोष भी क्वालिस द्वारा खोजा गया है, स्थानीय उपयोगकर्ता बहुत व्यापक श्रेणी के ओएस पर पूर्ण रूट विशेषाधिकार प्राप्त करने के लिए सूडो का शोषण कर सकते हैं। क्वालिस अब तक कारनामों को दूरस्थ रूप से निष्पादित कोड बनाने में असमर्थ रहा है। एकमात्र दूरस्थ अनुप्रयोग जिसकी उन्होंने जांच की वह एक्जिम मेल सर्वर था, जो संयोग से अनपेक्षित था। क्वालिस ने कहा कि यह संभावना को खारिज नहीं कर सकता है कि इस तरह के दूरस्थ कोड-निष्पादन के कारनामे मौजूद हैं। क्वालिस ने कहा कि यह बाद की तारीख में प्रूफ-ऑफ-कॉन्सेप्ट कारनामे जारी करेगा,

[...] बहुत अधिक जानकारी क्वालिस की इस विस्तृत तकनीकी सलाह और इस तकनीकी विश्लेषण से उपलब्ध है

2010 से मूल फिक्स के बारे में LWN लेख का हवाला देते हुए :

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

उपरोक्त विवरण विभिन्न यूनिक्स जैसी गुठली पर लागू होता है।

जबकि Ars Technica Qualys रिपोर्ट में उल्लेखित एक अस्थायी वर्कअराउंड पर ध्यान देती है ("  हार्ड RLIMIT STACK और RLIMIT_AS  को  स्थानीय उपयोगकर्ताओं  और  दूरस्थ सेवाओं  को कम मूल्य पर सेट करें"), यह ध्यान दिया जाना चाहिए कि यह इस शोषण के खिलाफ जरूरी नहीं है । वर्तमान में एकमात्र सुरक्षित तरीका अपग्रेड करना है। ग्रामसुरक्षा विश्लेषण के अनुसार:

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

अब हम जो सबसे अच्छा कर सकते हैं वह कर्नेल को एक पैच किए गए संस्करण में अपग्रेड करना है।

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

क्वालिस ने अभी तक कारनामों के लिए कोई सबूत-अवधारणा कोड प्रकाशित नहीं किया है (वे बाद की तारीख में ऐसा करने की योजना बनाते हैं)।


CVE-2017-1000364 से जुड़े कई उबंटू सुरक्षा नोटिस हैं:

यह भी ध्यान दें कि सीवीई ट्रैकर लंबित फिक्स के रूप में कई रिलीज / कर्नेल संयोजनों को सूचीबद्ध करता है।

आमतौर पर, सबसे आसान फिक्स अपने सिस्टम को नवीनतम कर्नेल पैकेज ASAP में अपडेट करना है।

USNs से संबंधित कर्नेल संस्करण (उपयोग करते हुए for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)'):

Ubuntu 17.04:
linux-image-4.10.0-24- न्यूनता 4.10.0-24.28
linux-image-generic-lpae 4.10.0.24.26
linux-image-generic 4.10.0.24.26
linux-image-4.10.0-24-जेनेरिक- lpae 4.10.0-24.28
linux-image-4.10.0-24- जेनेरिक 4.10.0-24.28
linux-image- lowlatency 4.10.0.24.26
Ubuntu 17.04:
linux-image-4.10.0-1008-raspi2 4.10.0-1008.11
linux-image-raspi2 4.10.0.1008.10
Ubuntu 16.10:
linux-image-powerpc- smp 4.8.0.56.69
linux-image-powerpc-e500mc 4.8.0.56.69
linux-image-4.8.0-56-powerpc- smp 4.8.0-56.61
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61
linux-image-4.8.0-56- lowlatency 4.8.0-56.61
linux- image- जेनेरिक 4.8.0.56.69
linux-image-4.8.0-56- जेनेरिक 4.8.0-56.61
linux-image-powerpc64-emb 4.8.0.56.69
linux-image-virtual 4.8.0.56.69
linux-image-powerpc64- smp 4.8.0.56.69
linux-image-4.8.0-56- जेनेरिक- lpae 4.8.0-56.61
linux-image-generic-lpae 4.8.0.56.69
linux-image- lowlatency 4.8.0.56.69
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61
Ubuntu 16.10:
linux-image-4.8.0-1040-raspi2 4.8.0-1040.44
linux-image-raspi2 4.8.0.1040.44
Ubuntu 16.04 LTS:
linux-image-powerpc64-smp-lts-utopic 4.4.0.81.87
linux-image-generic-lts- wily 4.4.0.81.87
linux-image-generic-lts-utopic 4.4.0.81.87
linux-image-4.4.0-81- जेनेरिक- lpae 4.4.0-81.104
linux-image-powerpc64-emb-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc 4.4.0.81.87
linux-image-generic-lpae-lts-xenial 4.4.0.81.87
linux-image-generic-lpae-lts-utopic 4.4.0.81.87
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104
linux-image-powerpc-e500mc-lts- wily 4.4.0.81.87
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104
linux-image-generic-lpae-lts- wily 4.4.0.81.87
linux-image-virtual-lts-vivid 4.4.0.81.87
linux-image-virtual-lts-utopic 4.4.0.81.87
linux-image-virtual 4.4.0.81.87
linux-image-powerpc64-emb-lts- wily 4.4.0.81.87
linux-image- lowlatency -lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc-lts-vivid 4.4.0.81.87
linux-image-powerpc64-emb 4.4.0.81.87
linux-image-powerpc-smp-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81- जेनेरिक 4.4.0-81.104
linux-image-powerpc64-smp-lts-vivid 4.4.0.81.87
linux-image- lowlatency -lts- wily 4.4.0.81.87
linux-image-4.4.0-81- lowlatency 4.4.0-81.104
linux- image- जेनेरिक 4.4.0.81.87
linux-image-lowlatency-lts-xenial 4.4.0.81.87
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.87
linux-image-powerpc64-emb-lts-utopic 4.4.0.81.87
linux-image-generic-lts-xenial 4.4.0.81.87
linux-image-generic-lts-vivid 4.4.0.81.87
linux-image-powerpc-e500mc-lts-utopic 4.4.0.81.87
linux-image-powerpc- smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc- smp 4.4.0-81.104
linux-image-generic-lpae-lts-vivid 4.4.0.81.87
linux-image-generic-lpae 4.4.0.81.87
linux-image-powerpc64-smp-lts- wily 4.4.0.81.87
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.87
linux-image-powerpc- smp -lts- wily 4.4.0.81.87
linux-image-virtual-lts- wily 4.4.0.81.87
linux-image-powerpc64- smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc64- smp 4.4.0-81.104
linux-image-powerpc- smp -lts-utopic 4.4.0.81.87
linux-image-powerpc- smp -lts-vivid 4.4.0.81.87
linux-image- lowlatency 4.4.0.81.87
linux-image-virtual-lts-xenial 4.4.0.81.87
linux-image- lowlatency -lts-utopic 4.4.0.81.87
Ubuntu 16.04 LTS:
linux-image-4.4.0-1016-gke 4.4.0-1016.16
Ubuntu 16.04 LTS:
linux-image- snapdragon 4.4.0.1061.54
linux-image-4.4.0-1061-Snapdragon 4.4.0-1061.66
Ubuntu 16.04 LTS:
linux-image-4.4.0-1020-aws 4.4.0-1020.29
Ubuntu 16.04 LTS:
linux-image-raspi2 4.4.0.1059.60
linux-image-4.4.0-1059-raspi2 4.4.0-1059.67
Ubuntu 16.04 LTS:
linux-image-4.8.0-56-powerpc- smp 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56- lowlatency 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56- जेनेरिक 4.8.0-56.61 ~ 16.04.1
linux-image-generic-hwe-16.04 4.8.0.56.27
linux-image-lowlatency-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56- जेनेरिक- lpae 4.8.0-56.61 ~ 16.04.1
linux-image-virtual-hwe-16.04 4.8.0.56.27
linux-image-generic-lpae-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61 ~ 16.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-smp-lts-xenial 4.4.0.81.66
linux-image-lowlatency-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc- smp 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81- lowlatency 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81- जेनेरिक- lpae 4.4.0-81.104 ~ 14.04.1
linux-image-generic-lpae-lts-xenial 4.4.0.81.66
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81- जेनेरिक 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc64- smp 4.4.0-81.104 ~ 14.04.1
linux-image-generic-lts-xenial 4.4.0.81.66
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.66
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.66
linux-image-virtual-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104 ~ 14.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-e500mc 3.13.0.121.131
linux-image- lowlatency - pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-emb 3.13.0-121.170
linux-image-generic- pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc- smp 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500mc 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500 3.13.0-121.170
linux-image-3.13.0-121-जेनेरिक- lpae 3.13.0-121.170
linux-image-generic-lts-quantal 3.13.0.121.131
linux-image-virtual 3.13.0.121.131
linux-image-powerpc-e500 3.13.0.121.131
linux-image-generic-lts-trusty 3.13.0.121.131
linux-image-3.13.0-121-जेनेरिक 3.13.0-121.170
linux-image- omap 3.13.0.121.131
linux-image-powerpc64-emb 3.13.0.121.131
linux-image-3.13.0-121-powerpc64- smp 3.13.0-121.170
linux- image- जेनेरिक 3.13.0.121.131
linux-image-highbank 3.13.0.121.131
linux-image-generic-lts-saucy 3.13.0.121.131
linux-image-powerpc- smp 3.13.0.121.131
linux-image-3.13.0-121- lowlatency 3.13.0-121.170
linux-image-generic-lpae-lts-saucy 3.13.0.121.131
linux-image-generic-lts-raring 3.13.0.121.131
linux-image-powerpc64- smp 3.13.0.121.131
linux-image-generic-lpae-lts-trusty 3.13.0.121.131
linux-image-generic-lpae 3.13.0.121.131
linux-image- lowlatency 3.13.0.121.131
Ubuntu 12.04 ESM:
linux-image-powerpc- smp 3.2.0.128.142
linux-image-3.2.0-128-virtual 3.2.0-128.173
linux-image-3.2.0-128-जेनेरिक- पाई 3.2.0-128.173
linux- image- जेनेरिक 3.2.0.128.142
linux-image-generic- pae 3.2.0.128.142
linux-image-highbank 3.2.0.128.142
linux-image-3.2.0-128-highbank 3.2.0-128.173
linux-image-3.2.0-128-powerpc- smp 3.2.0-128.173
linux-image-virtual 3.2.0.128.142
linux-image-powerpc64- smp 3.2.0.128.142
linux-image-3.2.0-128- omap 3.2.0-128.173
linux-image-3.2.0-128-powerpc64- smp 3.2.0-128.173
linux-image- omap 3.2.0.128.142
linux-image-3.2.0-128-जेनेरिक 3.2.0-128.173
Ubuntu 12.04 LTS:
linux-image-3.13.0-121-generic 3.13.0-121.170 ~ exact1
linux-image-generic-lpae-lts-trusty 3.13.0.121.112
linux-image-generic-lts-trusty 3.13.0.121.112
linux-image-3.13.0-121-जेनेरिक- lpae 3.13.0-121.170 ~ exact1

sudo

उपर्युक्त सूदो बग 30 मई, 2017 से USN-3304-1 द्वारा कवर किया गया है :

Ubuntu 17.04:
सुडो - लेडैप 1.8.19p1-1ubuntu1.1
sudo 1.8.19p1-1ubuntu1.1
Ubuntu 16.10:
सुडो - लेडैप 1.8.16-0ubuntu3.2
sudo 1.8.16-0ubuntu3.2
Ubuntu 16.04 LTS:
सुडो - लेडैप 1.8.16-0ubuntu1.4
sudo 1.8.16-0ubuntu1.4
Ubuntu 14.04 LTS:
सुडो - लेडैप 1.8.9p5-1ubuntu1.4
sudo 1.8.9p5-1ubuntu1.4

तो सारांश में यह पहले से ही सबसे उबंटू संस्करणों में तय किया जाना चाहिए जो अभी भी समर्थित हैं, बस एक को अपडेट करने की आवश्यकता है?
CJCombrink

@ TheBadger no, जैसा कि CVE ट्रैकर ने नोट किया है, कुछ संयोजनों को अभी भी लंबित रिलीज़ के रूप में सूचीबद्ध किया गया है। मुझे लगता है कि फिक्स जारी होने के बाद अधिक USN प्रकाशित किए जाएंगे।
मुरु

4
लेकिन, हां, अपडेट करना पर्याप्त होना चाहिए, अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है।
मुरु

यदि यह प्रभावित हो रहा है, तो सत्यापन कैसे करें?
डेज़ी

1
निम्नलिखित लेख वे कर रहे हैं, लेकिन मौजूदा कार्यान्वयन के अनुसार सही ढंग से काम नहीं करता है: क्वालिस रिसर्च लैब्स द्वारा स्टैकगार्ड बग स्पष्टीकरण
इगोर बी

1

मल्टी-ओएस बग कैसे हुआ?

अपने प्रश्न के इस भाग को विशेष रूप से संबोधित करने के लिए:

यह समस्या हीप के लिए एक साझा पता स्थान के उपयोग के कारण उत्पन्न होती है (जो ऊपर की ओर बढ़ती है) और स्टैक (जो नीचे की तरफ बढ़ती है)।

यह डिज़ाइन कई प्रणालियों में आम है, इसलिए कई सिस्टम एक ही वर्ग की भेद्यता के लिए असुरक्षित हैं।

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