मैं एक अप्रचलित उबंटू प्रणाली पर शेलशॉक भेद्यता को कैसे पैच कर सकता हूं जिसे मैं अपग्रेड नहीं कर सकता हूं?


22

मेरे पास एक प्रणाली है जिसे मैं दूरस्थ रूप से (2 टाइमज़ोन दूर) देता हूं जो उबंटू 9.04, जोंटी चलाता है। विभिन्न कारणों से, मुख्य रूप से मैं वास्तव में बहुत दूर से एक वितरण उन्नयन करने की कोशिश कर रहा हूँ, मैं इसे और अधिक हाल के संस्करण में अपग्रेड नहीं कर सकता। जाहिर है यह अब समर्थित नहीं है और कोई आधिकारिक पैच नहीं हैं। क्या ऐसे निर्देश उपलब्ध हैं कि कैसे मैं कोड को पैच कर सकता हूं और शेलशॉक कमजोरियों को दूर करने के लिए खुद को बैश कर सकता हूं?


5
आपने इस विषय पर क्या शोध किया है? सबसे सरल समाधान संभावना है कि वह खुद को फिर से बनाए और पैच करे। सर्वर को अपडेट करने के लिए आपको इसका सरल समय स्वीकार करना पड़ सकता है।
रामहाउंड

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

बस पेज पर कुछ कीवर्ड मिल रहे हैं ताकि लोग इसे पा सकें। मेरे लिए मैक, OS X, Mavericks पर आधारित परीक्षण के आधार पर भी काम किया गया जो arstechnica.com/security/2014/09/…-

1
इसे अनायास छोड़ दें, "साथ लंगड़ा" जल्दी बदल जाएगा। बहुत स्पष्ट रहें, आप पांच साल पहले सामने आए एक डिस्ट्रो का उपयोग कर रहे हैं । समर्थन अक्टूबर 2010 में समाप्त हो गया। आपके पास चिंता करने के लिए कई और कमजोरियां हैं।
tedder42

जवाबों:


29

इसे HackU News से चोरी करने वाले किसी व्यक्ति से AskUbuntu से चुरा लिया। मेरे लिए दो पुराने सर्वरों पर काम किया

mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 1 28); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz 
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 1 28);do patch -p0 < ../bash43-$i; done
#build and install
./configure --prefix=/ && make && make install
cd .. 
cd ..
rm -r src

अपडेट: मैंने अभी देखा कि यदि आप --prefix=/कॉन्फ़िगर कमांड को नहीं जोड़ते हैं, तो आप /usr/local/bin/bashउस तिथि तक समाप्त हो /bin/bashजाएंगे और अभी भी असुरक्षित होंगे।


स्क्रिप्ट में एक बग है: "0 25" अनुक्रम "1 26" होना चाहिए। यदि आप इसे पढ़ रहे हैं और उत्तर को संपादित करने में सक्षम हैं, तो कृपया इसे अपडेट करें। धन्यवाद!
joelparkerhenderson

जबकि ./configure --prefix=/ && makeरन ठीक है, की make installआवश्यकता लगती हैsudo
स्टीवर्ट

इसे बाहर रखने के लिए धन्यवाद - पलायन करते समय चीजों को पैच करने का एक उचित तरीका। कुछ लोगों के पास कई vms हैं और हर एक को पुनर्निर्माण करना यथार्थवादी नहीं है। एक अधिक अद्यतन स्थापना पर होने से इसे और अधिक दीर्घकालिक हल करते हुए तत्काल सुधार के रूप में उपयोग करना महत्वपूर्ण है।
जस पनेसर

@ rubo77 अब इसे 1 27 करने की आवश्यकता है (नया 27 पैच सबसे महत्वपूर्ण है)
joelparkerhenderson

1
जोड़ा गया पैच 28. यह CVE-2014-7186 / 7187 भेद्यता को ठीक करने के लिए प्रकट होता है।
unkilbeeg

2

अपने स्रोतों को अद्यतन करने का भी एक समाधान है। नवीनतम को देखें और फिर केवल बैश को अपग्रेड करने के लिए apt-get का उपयोग करें। यह वास्तव में त्वरित है और मैंने इसके बारे में एक लेख लिखा है। यहाँ आप मूल रूप से क्या करते हैं:

नवीनतम उबंटू 'भरोसेमंद' एप्ट-गेट रिपॉजिटरी में अपग्रेड करें (यदि आप उनका उपयोग करते हैं, तो लिंक किए गए लेख की जांच करें)

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list

अपग्रेड बैश / फिक्स फिक्स:

sudo apt-get update
sudo apt-get install --only-upgrade bash

और संभवतः apt-get repositories को वापस बदलें।


पूरी तरह से काम किया!
पीटर क्रुथोफ़

-1

आज्ञा होनी चाहिए

sudo apt-get update && sudo apt-get install --only-upgrade bash

2
यह मदद नहीं करेगा; जैसा कि ओपी ने कहा, यह किसी भी अधिक समर्थित नहीं है, इसलिए बैश के लिए अपग्रेड नहीं होगा।
एंड्रयू फेरियर

-3

एक सरल विकल्प सिर्फ बैश का उपयोग नहीं करना है। सुनिश्चित करें कि dashस्थापित किया गया है और /bin/shयह एक सहानुभूति है dash, नहीं bash। (यह डेबियन के कुछ संस्करणों पर डिफ़ॉल्ट है, लेकिन मैं उबंटू के बारे में निश्चित नहीं हूं।) यदि आपके पास मजबूर कमांड के साथ ssh एक्सेस के लिए उपयोगकर्ता खाते हैं, तो आपको उनके लॉगिन गोले भी बदलने की आवश्यकता है। आपको बैश का उपयोग करके स्पष्ट रूप से किसी भी स्क्रिप्ट की जांच करने की आवश्यकता हो सकती है; के लिए grepping #!/bin/bashउन्हें खोजने चाहिए।


5
यह कहने के लिए थोड़ा सा है, "हमने पाया कि आपके पास C ++ में segfaults हो सकते हैं, बस जावा का उपयोग करें" ...
DevSolar

3
एक करीबी सादृश्य किसी को जीसीसी में बग का अनुभव करने के लिए कह रहा है कि वह क्लेंग की कोशिश करे। दोनों एक ही भाषा (अलग-अलग लेकिन कभी-कभी गैर-मानक एक्सटेंशन के ओवरलैपिंग सेट) को लागू करते हैं और यह संभावना नहीं है कि वास्तविक आवश्यकता "बैश" के लिए है, बल्कि "शेल दुभाषिया" के लिए है।
र ..

जैसा आपने कहा, ऐसी स्क्रिप्ट हैं जो स्पष्ट रूप से बैश का उपयोग कर सकती हैं। यहां तक ​​कि अगर आप bash का उपयोग करने वाली मौजूद फ़ाइलों के लिए grep करते हैं, तो भविष्य में कोई व्यक्ति सिस्टम में एक नई स्क्रिप्ट जोड़ सकता है जो स्पष्ट रूप से bash का उपयोग करता है। वही उन एम्बेडेड सिस्टमों के लिए जाता है जो बिजीबॉक्स (/ बिन / श पॉइंट्स टू बिजीबॉक्स) का उपयोग करते हैं, लेकिन इसमें बैश इंस्टॉल भी है। सबसे अच्छी बात कमजोर सिस्टम में बैश को अपडेट करना है।
जर्कबेलो

यूनिक्स / लिनक्स स्क्रिप्ट के अधिकांश भाग को ksh या zsh जैसे किसी अन्य आधुनिक शेल की आवश्यकता होती है। इनकी एक महान कई कार्यक्षमताओं है जो लोग किसी भी भाषा में उम्मीद करने के लिए आए हैं लेकिन "नंगे-हड्डियों" के गोले (बिजीबॉक्स) राख / डैश / श (मूल) में मौजूद नहीं हैं। इन सरल गोले में बड़े गोले की कार्यक्षमता का केवल 20-30% होता है जो उन्हें तेज बनाता है। हालांकि, उन्हें उन्नत स्ट्रिंग-हैंडलिंग और पैटर्न-मिलान जैसे कई सामान्य कार्यों के लिए बाहरी उपयोगिताओं के व्यापक उपयोग की आवश्यकता होती है। बैश और इस तरह राख चला सकते हैं, et.al. स्क्रिप्ट। लेकिन इसके विपरीत नहीं।
DocSalvager
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.