2015-02-01 3 views
5

मेरे पास विरासत Redhat ES 3.x सर्वर है (कि मैं एक प्राचीन, असमर्थित अनुप्रयोग में सीमाओं के कारण बाद में डिस्ट्रो नहीं डाल सकता) और मैं मैन्युअल रूप से ग्लिबैक पैच करने की कोशिश कर रहा हूं भूत भेद्यता के लिए।विरासत सर्वर पर भूत भेद्यता के लिए मैन्युअल रूप से पैचिंग

क्वालिज़ (http://www.openwall.com/lists/oss-security/2015/01/27/9) द्वारा विश्लेषण के आधार पर, ऐसा लगता है कि स्टैक/हीप ओवरफ़्लो समस्या को संभालने के लिए ग्लिब स्रोत को संशोधित करना आसान होना चाहिए। लेकिन मुझे यह देखने के लिए मेरी प्रक्रिया पर कुछ और आंखें चाहिए कि क्या मुझे कुछ याद आया, आदि

यहां मैंने जो किया है। सबसे पहले मैं & SRPM से चिकना स्रोत पेड़ तैयार बनाया गया:

लाइन्स 121-125:

rpm -ivh glibc-2.3.2-95.50.src.rpm 
rpmbuild -bp /usr/src/redhat/SPECS/glibc.spec 
cd /usr/src/redhat/BUILD 
cp -av glibc-2.3.2-200309260658 glibc-org 
cd glibc-2.3.2-200309260658 

इसके बाद, मैं मुख्य रूप से ऊपर QALYs लेख से इस पैरा के आधार पर एनएसएस/digits_dots.c संपादित बफर में चार (4) विशिष्ट इकाइयों को स्टोर करने के लिए पॉइंटर्स तैयार करें: host_addr, h_addr_ptrs, h_alias_ptr, और होस्टनाम। आकार (* h_alias_ptr) - एक चार सूचक का आकार - आकार_नेड की गणना से गुम है।

cd /usr/src/redhat/BUILD 
diff -Npru glibc-org glibc-2.3.2-200309260658 > glibc-digit_dots-ghost.patch 
cp glibc-digit_dots-ghost.patch ../SOURCES/ 

cd /usr/src/redhat/SPECS 
vi glibc.spec 
rpmbuild -ba glibc.spec 

अन्त में, मैं अद्यतन glibc नया बाइनरी (आरपीएम) का उपयोग करते हुए:

vi nss/digits_dots.c 

I edited these two statements: 
    105: size_needed = (sizeof (*host_addr) 
        + sizeof (*h_addr_ptrs) + strlen (name) + 1); 

    277: size_needed = (sizeof (*host_addr) 
        + sizeof (*h_addr_ptrs) + strlen (name) + 1); 

to this: 
    105: size_needed = (sizeof (*host_addr) 
        + sizeof (*h_addr_ptrs) + strlen (name) 
        + sizeof (*h_alias_ptr) + 1); 

    277: size_needed = (sizeof (*host_addr) 
         + sizeof (*h_addr_ptrs) + strlen (name) 
         + sizeof (*h_alias_ptr) + 1);      

इसके बाद, मैं अपने पैच + बनाया बाइनरी शामिल करने के लिए एक पैच फ़ाइल बनाई + अद्यतन कल्पना फ़ाइल

cd /usr/src/redhat/RPMS/i386 
rpm -Uvh --nodeps glibc-2.3.2-95.51.i386.rpm glibc-devel-2.3.2-95.51.i386.rpm glibc-profile-2.3.2-95.51.i386.rpm glibc-utils-2.3.2-95.51.i386.rpm glibc-common-2.3.2-95.51.i386.rpm glibc-headers-2.3.2-95.51.i386.rpm 

सर्वर को पुनरारंभ करने के बाद, मैंने भूत परीक्षक (https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c) फिर से चलाया।

इस बार मुझे "कमजोर" के बजाय "नहीं होना चाहिए", जो मुझे लगता है कि अच्छा है। लेकिन मुझे "कमजोर नहीं" होने की उम्मीद थी, क्या मुझे कुछ याद आया, या यह सिर्फ इतना है कि मेरा फिक्स समर्थित distros में आधिकारिक फ़िक्स से अलग है?

उत्तर

3

मैं पुराने फेडोरा जारी करने के लिए इसी तरह के पैच के लिए खोज कर रहा है ... मैं ServerFault पैचिंग के बारे में है जो पुराने डेबियन लेनी पर इस क्यू & एक से अधिक पाया:

https://serverfault.com/questions/662971/how-to-patch-cve-2015-0235-ghost-on-debian-lenny-and-squeeze

में से एक में उत्तर, वे official glibc patch से लिंक करते हैं जो diff आपके अलावा कुछ अतिरिक्त संपादन दिखाता है। यह शायद गायब *status = NSS_STATUS_NOTFOUND; है जो "नहीं होना चाहिए" राज्य में हो रहा है।

आशा है कि मदद करता है! (क्षमा करें आपके पास अपने प्रश्न को ऊपर उठाने के लिए पर्याप्त प्रतिनिधि बिंदु नहीं हैं ...)

+0

सहमत हुए। बस .patch को देखो और इसे एक गाइड के रूप में उपयोग करें। – Joe

+0

@jason_uruguru धन्यवाद - मैंने अपने सिस्टम को पैच करने के लिए एक गाइड के रूप में उस आधिकारिक ग्लिबैक पैच का उपयोग किया, और ऐसा लगता है कि यह एक आकर्षण की तरह काम करता है! –

+0

यहां सभी जानकारी के लिए कृतज्ञता, महान शिक्षा। मुझे टेस्ट-अंक-डॉट्स.c छोड़ने के अलावा पैच को बारीकी से अटकने के बावजूद "नहीं होना चाहिए"। @ जिम, क्या कोई विशेष कोड परिवर्तन या कॉन्फ़िगरेशन था जिसने आखिरकार इसे अच्छा बनाया? – rvh

संबंधित मुद्दे