
sudo 1.8.3p1 का कस्टम संस्करण जिसमें CVE-2021-3156 पैच लागू किए गए हैं
यह sudo का एक कस्टम संस्करण है, जो नीचे दिए गए URL का उपयोग करके Ubuntu 12.04 के लिए Canonical द्वारा प्रदान किए गए sudo 1.8.3p1 पैकेज पर आधारित है, जिसमें CVE-2021-3156 पैच लागू किए गए हैं।
(इन फ़ाइलों को डाउनलोड और अनपैक करने का सबसे आसान तरीका Ubuntu 12.04 चलाने वाली मशीन पर apt-get source sudo का उपयोग करना है। यदि आप प्रोडक्शन मशीन के साथ छेड़छाड़ नहीं करना चाहते हैं, तो यह Vagrant इमेज मुझे इसे बनाने में सहायक थी: https://app.vagrantup.com/hashicorp/boxes/precise64)
यदि आपके पास बिना पैच वाला संस्करण (1.8.3p1-1ubuntu3.7) स्थापित है, तो यह आमतौर पर इस तरह व्यवहार करता है, जो उस भेद्यता को इंगित करता है जिसका संभावित रूप से शोषण किया जा सकता है:
vagrant@precise64:~/src$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
Segmentation fault
पैच किया गया संस्करण इसके बजाय आपको कुछ इस तरह देगा:
vagrant@precise64:~/src$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
usage: sudoedit [-AknS] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] file ...
apt-get source sudocd sudo-1.8.3p1, Xenial पैकेज से सभी CVE-2021-3156 पैच लागू करें। इन पैकेजों को प्राप्त करने का सबसे आसान तरीका Xenial बॉक्स पर apt-get source sudo चलाना है, या अपने Precise बॉक्स में अस्थायी रूप से Xenial apt-get पैकेज स्रोत जोड़ना है: deb-src http://security.ubuntu.com/ubuntu xenial-security main।
patch -p1 < debian/patches/CVE-2021-3156-1.patch (9 में से 3 हंक विफल रहे)patch -p1 < debian/patches/CVE-2021-3156-2.patch (गैर-मौजूद फ़ाइल को संदर्भित करता है)patch -p1 < debian/patches/CVE-2021-3156-3.patch (4 में से 1 हंक विफल रहा)patch -p1 < debian/patches/CVE-2021-3156-4.patch (गैर-मौजूद फ़ाइल को संदर्भित करता है)patch -p1 < debian/patches/CVE-2021-3156-5.patch (1 में से 1 हंक विफल रहा)CVE-2021-3156-2 और CVE-2021-3156-4, प्लगइन्स (plugins/sudoers में फ़ाइलें) में सुधारों को संदर्भित करते हैं जो 1.8.3p1 संस्करण में मौजूद नहीं हैं। मेरा सच्चा विश्वास है कि चूंकि यह कोड उस संस्करण में मौजूद नहीं है, इसलिए ये पैच हमारे मामले में लागू नहीं होते हैं।
अन्य विफल हंकों के लिए, .rej फ़ाइलों को देखें और परिवर्तनों को मैन्युअल रूप से लागू करें। यह कठिन हिस्सा है, लेकिन कभी-कभी यह उतना कठिन नहीं होता। पैच के साफ-सुथरे ढंग से लागू न होने का कारण आमतौर पर यह होता है कि पंक्ति संख्याएँ बहुत अधिक भिन्न होती हैं (पैच की गई पंक्ति(याँ) मौजूद होती हैं, लेकिन पैच की गई फ़ाइल के किसी भिन्न अनुभाग में), या कोड 1.8.3p1 कोड बेस में अलग दिखता है। इस तरह की त्रुटियों को हल करना भी संभव है; उन्हें केवल थोड़ा और सोचने, कोड का विश्लेषण करने और परिवर्तनों को लागू करने का तरीका समझने की आवश्यकता होती है।
$ sudo apt-get build-dep sudo
$ dpkg-buildpackage -rsudo -b
यदि सब कुछ ठीक रहता है, तो आपको अब पैरेंट डायरेक्टरी में sudo_1.8.3p1-1ubuntu3.8_amd64.deb और sudo-ldap_1.8.3p1-1ubuntu3.8_amd64.deb पैकेज मिलना चाहिए।
ध्यान दें कि इस ट्री पर केवल CVE-2021-3156 पैच ही लागू किए गए थे। यह काफी संभव है कि निम्नलिखित Xenial पैच में से एक या अधिक इस ट्री पर भी लागू हो सकते हैं; मैंने उन्हें लागू करने का प्रारंभिक प्रयास किया लेकिन वे साफ-सुथरे ढंग से लागू नहीं हुए, और इस प्रकार, वे इस रिपॉजिटरी में शामिल नहीं हैं। इस रिपॉजिटरी द्वारा प्रदान किए गए sudo पैकेज में गंभीर सुरक्षा समस्याएँ नहीं हैं, इसकी बिल्कुल कोई गारंटी नहीं है।
इनमें से कोई भी पैच लागू करने वाले पुल रिक्वेस्ट अत्यधिक स्वागत योग्य हैं! आपकी सुविधा के लिए, Xenial पैच का पूरा सेट (sudo 1.8.16-0ubuntu1.10 तक) इस ट्री में debian/patches में उपलब्ध है। ध्यान दें कि Precise (12.04) पैकेज स्रोतों (जिस पर यह रिपॉजिटरी आधारित है) ने पहले ही CVE-2014-9680.patch तक के सभी पैच लागू कर दिए हैं। पहले से लागू पैच का पूरा सेट .pc/applied-patches में सूचीबद्ध है।
यह सॉफ़्टवेयर "जैसा है" प्रदान किया जाता है, बिना किसी प्रकार की वारंटी के, व्यक्त या निहित, जिसमें व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और अनुल्लंघनीयता की वारंटियाँ शामिल हैं लेकिन इन्हीं तक सीमित नहीं हैं। किसी भी स्थिति में लेखक या कॉपीराइट धारक किसी भी दावे, क्षति या अन्य दायित्व के लिए उत्तरदायी नहीं होंगे, चाहे वह अनुबंध की कार्रवाई में हो, टोर्ट या अन्यथा, जो सॉफ़्टवेयर से या सॉफ़्टवेयर के उपयोग या अन्य लेन-देन से उत्पन्न या संबंधित हो।