
शैक्षणिक पेपर और प्रस्तुति स्लाइड्स जो Dirty COW Linux विशेषाधिकार वृद्धि भेद्यता (CVE-2016-5195) का विश्लेषण करते हैं, जिसमें शोषण तकनीकें, कर्नेल राइटबैक व्यवहार, और पहचान की चुनौतियाँ शामिल हैं।
इस रिपॉज़िटरी में CVE-2016-5195 पर मेरा पेपर और प्रस्तुति स्लाइड्स हैं, जो Linux में विशेषाधिकार वृद्धि (privilege escalation) की एक कमज़ोरी है, जो बुखारेस्ट विश्वविद्यालय के FMI में Operating Systems: Design And Security पाठ्यक्रम के लिए लिखी गई है।
अपने पेपर में मैंने दावा किया था कि आप Dirty COW का उपयोग करके बाइनरीज़ में चुपचाप बैकडोर लगा सकते हैं बिना तुरंत रूट विशेषाधिकार प्राप्त किए, ताकि इसका पता लगाना कठिन हो।
यह वास्तव में सत्य नहीं है क्योंकि संशोधित पृष्ठ को writeback करने का प्रयास करते समय कर्नेल को पता चलता है कि पृष्ठ dirty है (जो उसे कभी नहीं होना चाहिए) और वह पैनिक (panic) करता है, जिससे सिस्टम क्रैश हो जाता है।
ऐसा होने से रोकने के लिए आपको तुरंत रूट विशेषाधिकार प्राप्त करना होगा और स्वचालित writeback अक्षम करना होगा "echo 0 > /proc/sys/vm/dirty_writeback_centisecs" के द्वारा। मेरा प्रूफ ऑफ कॉन्सेप्ट ऐसा नहीं करता, इसलिए VM में परीक्षण के दौरान /etc/passwd को सफलतापूर्वक संशोधित करने के बाद यह जल्दी से क्रैश हो जाता है (जो डिस्क पर स्थायी रूप से सहेजा नहीं जाता)।
https://www.exploit-db.com/exploits/40847 एक एक्सप्लॉइट कोड का उदाहरण है जो /etc/passwd को अधिलेखित करता है और फिर क्रैश को रोकने के लिए writeback अक्षम करता है।
अन्य विधियों में फ़ाइल-समर्थित पृष्ठ के बजाय vDSO को पैच करना शामिल है (https://github.com/scumjr/dirtycow-vdso), जो सिस्टम पर सभी प्रक्रियाओं को प्रभावित करता है और क्रैश नहीं करता, और इसके अन्य लाभ भी हैं जैसे कंटेनरों से बचना, और यह SELinux प्रतिबंधों से प्रभावित नहीं होता जो हमले के लिए /etc/passwd को केवल-पठनीय रूप से खोलने को भी रोक सकते हैं।
जबकि आप रूट विशेषाधिकार प्राप्त करने के बाद वास्तव में सिस्टम में बैकडोर लगा सकते हैं (किसी भी अन्य विशेषाधिकार वृद्धि विधि की तरह), इसमें सामान्य फ़ाइलसिस्टम ऑपरेशन शामिल होंगे और इंट्रूज़न डिटेक्शन सिस्टम द्वारा इसका पता लगाया जा सकता है, जबकि यदि writeback मेरे मूल विचार के अनुसार काम करता, तो यह लेखन संचालन की निगरानी को बायपास कर सकता था, क्योंकि कर्नेल बिना किसी write सिस्टम कॉल के केवल पृष्ठ को writeback कर देता, परंतु वास्तव में यह इसके बजाय पैनिक करता है।