मेरे पास विरासत 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 में आधिकारिक फ़िक्स से अलग है?
सहमत हुए। बस .patch को देखो और इसे एक गाइड के रूप में उपयोग करें। – Joe
@jason_uruguru धन्यवाद - मैंने अपने सिस्टम को पैच करने के लिए एक गाइड के रूप में उस आधिकारिक ग्लिबैक पैच का उपयोग किया, और ऐसा लगता है कि यह एक आकर्षण की तरह काम करता है! –
यहां सभी जानकारी के लिए कृतज्ञता, महान शिक्षा। मुझे टेस्ट-अंक-डॉट्स.c छोड़ने के अलावा पैच को बारीकी से अटकने के बावजूद "नहीं होना चाहिए"। @ जिम, क्या कोई विशेष कोड परिवर्तन या कॉन्फ़िगरेशन था जिसने आखिरकार इसे अच्छा बनाया? – rvh