
FreeBSD telnetd बफर ओवरफ्लो (CVE-2011-4862) के लिए शैक्षिक पैच कार्यान्वयन, चरण-दर-चरण फिक्स स्पष्टीकरण और मैन्युअल पैचिंग निर्देशों के साथ।
मैंने मूल रूप से एक पैच बनाने के लिए diff का उपयोग करने की कोशिश की। मैंने इसे उस तरीके से पैच किया जैसा मुझे लगा कि होना चाहिए, असली पैच को देखने से पहले। encrypt.patch वह मूल पैच है जो मैंने diff के साथ बनाया था। हालाँकि, जब हमने इस पैच को freeBSD पर लागू करने की कोशिश की, तो उसने इसे स्वीकार नहीं किया।
इसके बजाय, हमें असली पैच लाना पड़ा। फिर मैंने पैच को बदल दिया ताकि फिक्स को उस तरीके से लागू किया जा सके जैसा मूल रूप से मुझे लगा कि होना चाहिए। यह काम करता है क्योंकि यह पूरे पथ को पैच में डालता है।
पैच में, हम केवल लंबाई की तुलना MAXLENGTH से करते हैं। यदि यह उससे बड़ा है, तो इसे 0 पर सेट करें। इस तरह, यह len = 0 के मामले में आ जाता है, जो त्रुटि उत्पन्न करता है। यह इसे ठीक करता है :-)
यहाँ freeBSD में पैच लागू करने के तरीके का स्पष्टीकरण दिया गया है। https://www.freebsd.org/security/advisories/FreeBSD-SA-11:08.telnetd.asc बस असली पैच लाने के बजाय इस पैच का उपयोग करें। यह काम करेगा, और आप अब buffer overflow का exploit नहीं कर पाएंगे।