
यह एक रिपॉजिटरी है जो अपने लिनक्स सिस्टम में एक एस्केलेशन समस्या का सामना कर रही है और 'Dirty pipeline' समस्या के बारे में एक खबर है।
मैक्स केलरमैन, CM4all (एक जर्मन वेब होस्टिंग कंपनी) के एक डेवलपर, ने इसे 2022 की शुरुआत में पाया, लेकिन कमजोरी की जाँच करने के लिए नहीं। वह डीबग कर रहा था जब उसे पता चला कि ग्राहक इस बात से नाखुश थे कि उनके सर्वर पर लॉग स्वतः ही दूषित हो रहे थे। केलरमैन ने इसका पता लगाने में महीनों बिताए। उनके काम ने अंततः उन्हें लिनक्स कर्नेल द्वारा पाइप और पेज कैश को संभालने के तरीके में एक गहरी स्थिति तक पहुँचाया। उन्होंने महसूस किया कि लॉग भ्रष्टाचार को समझाने के लिए उन्होंने जो बग पाया था, वह वास्तव में कहीं अधिक गंभीर था — एक पूर्ण विशेषाधिकार एस्केलेशन भेद्यता (पूर्ण विशेषाधिकार एस्केलेशन भेद्यता एक महत्वपूर्ण सुरक्षा दोष है जो एक हमलावर को निम्न-स्तरीय पहुँच—जैसे कि एक सामान्य उपयोगकर्ता, अतिथि, या असुरक्षित एप्लिकेशन—के साथ सिस्टम पर प्रशासनिक, सुपरयूज़र, या रूट-स्तरीय नियंत्रण प्राप्त करने की अनुमति देता है। इसका मतलब है कि हमलावर सभी इच्छित सुरक्षा सीमाओं को दरकिनार कर देता है, जिससे उन्हें सिस्टम फ़ाइलों को संशोधित करने, सॉफ़्टवेयर स्थापित करने, डेटा चुराने या फ़ाइलों को हटाने का पूर्ण नियंत्रण मिल जाता है)। उन्होंने जिम्मेदारीपूर्वक इसकी सूचना लिनक्स कर्नेल टीम और लिनक्स टॉर्वाल्ड्स को दी। कुछ ही दिनों में इसे पैच कर दिया गया। असली समस्या यह है—जब splice() पाइप में डेटा स्थानांतरित करता है, तो वह गंतव्य बफर पर इस फ़्लैग को साफ़ करना भूल जाता है। इसलिए splice'd पेज (जो सीधे किसी फ़ाइल के केवल-पढ़ने योग्य पेज कैश में इंगित करता है) पर अभी भी CAN_MERGE सेट था। अब यदि आप उस पाइप में लिखते हैं, तो कर्नेल CAN_MERGE देखता है, मान लेता है कि पेज लिखने योग्य है, और आपके डेटा को सीधे पेज कैश में मर्ज कर देता है — जो फ़ाइल की इन-मेमोरी सामग्री है — बिना किसी अनुमति जाँच के। परिणाम: आप अपने द्वारा पढ़ने योग्य किसी भी फ़ाइल की सामग्री को अधिलेखित कर सकते हैं, जिसमें SUID (set user ID) रूट बाइनरी जैसे su, passwd, sudo शामिल हैं। बग इतना महत्वपूर्ण क्यों था? कुछ कारण: