
Looney Tunables स्थानीय विशेषाधिकार वृद्धि (CVE-2023-4911) कार्यशाला
Looney Tunables Local privilege escalation (CVE-2023-4911) workshop (for educational purposes only)
कंप्यूटिंग में, एक डायनामिक लिंकर ऑपरेटिंग सिस्टम का वह हिस्सा है जो एक्ज़ीक्यूटेबल के चलने पर उसके लिए आवश्यक शेर्ड लाइब्रेरीज़ को लोड और लिंक करता है, लाइब्रेरीज़ की सामग्री को स्थायी स्टोरेज से RAM में कॉपी करके, जंप टेबल भरकर और पॉइंटर्स को रीलोकेट करके।
उदाहरण के लिए, हमारे पास एक प्रोग्राम है जो md5 हैश की गणना करने के लिए openssl लाइब्रेरी का उपयोग करता है:``` $ head md5_hash.c #include <stdio.h> #include <string.h> #include <openssl/md5.h>
ld.so बाइनरी को पार्स करता है और <openssl/md5.h> से संबंधित लाइब्रेरी खोजने का प्रयास करता है।```
$ ldd md5_hash
linux-vdso.so.1 (0x00007fffa530b000)
libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007f19cda00000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f19cd81e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f19ce032000)
जैसा कि हम देख सकते हैं, यह आवश्यक क्रिप्टो लाइब्रेरी को /lib/x86_64-linux-gnu/libcrypto.so.3 पर ढूंढता है। प्रोग्राम स्टार्टअप के दौरान, यह इस लाइब्रेरी के कोड को प्रोसेस RAM में डालता है और इस लाइब्रेरी के सभी संदर्भों को लिंक करता है।
जब कोई प्रोग्राम प्रारंभ किया जाता है, यह लोडर सबसे पहले प्रोग्राम की जांच करता है कि उसे किन साझा लाइब्रेरियों की आवश्यकता है। फिर यह इन लाइब्रेरियों की खोज करता है, उन्हें मेमोरी में लोड करता है, और उन्हें रनटाइम पर एक्ज़ीक्यूटेबल से लिंक करता है। इस प्रक्रिया में, डायनेमिक लोडर प्रतीक संदर्भों, जैसे फ़ंक्शन और वेरिएबल संदर्भों, को हल करता है, यह सुनिश्चित करता है कि प्रोग्राम के निष्पादन के लिए सब कुछ सेट है। इसकी भूमिका को देखते हुए, डायनेमिक लोडर अत्यधिक सुरक्षा-संवेदनशील है, क्योंकि जब कोई स्थानीय उपयोगकर्ता set-user-ID या set-group-ID प्रोग्राम चलाता है तो इसका कोड उन्नत विशेषाधिकारों के साथ चलता है।