
शोध कार्यान्वयन जो Linux eBPF उपप्रणाली के साथ अंतःक्रिया को प्रदर्शित करता है, जो CVE-2021-3490 से संबंधित है। इसमें BPF मैप निर्माण, syscall रैपर, नेमस्पेस सेटअप, और वेरिफ़ायर विश्लेषण शामिल हैं। केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए।
Research implementation demonstrating interaction with Linux eBPF subsystem related to CVE-2021-3490. Includes BPF map creation, syscall wrappers, namespace setup, and verifier analysis. For educational and security research purposes only.
CVE-2021-3490 – eBPF Verifier Bounds Tracking Analysis अवलोकन
यह रिपॉजिटरी Linux कर्नेल eBPF सबसिस्टम की CVE-2021-3490 से संबंधित C कार्यान्वयन प्रस्तुत करती है, जो eBPF verifier में गलत 32-बिट सीमा ट्रैकिंग से जुड़ी एक कमजोरी है।
इस प्रोजेक्ट का उद्देश्य यह समझना है कि bpf() सिस्टम कॉल आंतरिक रूप से कैसे काम करती है, BPF मैप्स को उपयोगकर्ता स्पेस से कैसे बनाया और प्रबंधित किया जाता है, और verifier रजिस्टर बाधाओं को कैसे संभालता है। यह कर्नेल आंतरिक और सुरक्षा विश्लेषण पर केंद्रित एक शोध और सीखने का प्रोजेक्ट है।
यह कोड उत्पादन उपयोग के लिए नहीं है।
पृष्ठभूमि
eBPF उपयोगकर्ता-स्पेस प्रोग्राम को Linux कर्नेल में सत्यापित बाइटकोड लोड करने की अनुमति देता है। निष्पादन से पहले, कर्नेल verifier जाँच करता है कि प्रोग्राम:
असुरक्षित मेमोरी एक्सेस नहीं करता
रजिस्टर सीमाओं के भीतर रहता है
कर्नेल सुरक्षा नियमों का उल्लंघन नहीं करता
कमजोर कर्नेल संस्करणों में, verifier ने कुछ ALU संचालनों के दौरान 32-बिट सीमाओं को गलत ट्रैक किया। यह दोष तैयार किए गए प्रोग्राम को सत्यापन तर्क को बायपास करने की अनुमति दे सकता था।
आधिकारिक विवरण के लिए:
NVD: https://nvd.nist.gov/vuln/detail/CVE-2021-3490
Ubuntu Security Notice: https://ubuntu.com/security/CVE-2021-3490
Red Hat Advisory: https://access.redhat.com/security/cve/CVE-2021-3490
यह प्रोजेक्ट क्या प्रदर्शित करता है
यह कार्यान्वयन निम्नलिखित पर केंद्रित है:
bpf() सिस्कॉल का सीधा उपयोग
union bpf_attr की मैन्युअल परिभाषा
BPF मैप निर्माण (BPF_MAP_TYPE_ARRAY)
मैप तत्वों को अद्यतन और क्वेरी करना
BPF ऑब्जेक्ट मेटाडेटा प्राप्त करना
नियंत्रित निष्पादन के लिए नेमस्पेस सेटअप
यह यह समझने में मदद करने के लिए डिज़ाइन किया गया है कि उपयोगकर्ता-स्पेस कर्नेल BPF बुनियादी ढांचे के साथ कैसे इंटरैक्ट करता है।
इस रिपॉजिटरी में स्वचालित शोषण पेलोड लॉजिक शामिल नहीं है।
परीक्षित वातावरण
Ubuntu 20.10 (Groovy)
Linux kernel 5.8.0-48-generic
आप अपने कर्नेल संस्करण की जाँच इसके साथ कर सकते हैं:
uname -r
पैच या नए कर्नेल पर व्यवहार भिन्न हो सकता है।
निर्माण
GCC का उपयोग करके संकलित करें:
gcc -o exploit exploit.c -lpthread
मानक लिनक्स हेडर के अलावा किसी बाहरी लाइब्रेरी की आवश्यकता नहीं है।
उपयोग
प्रोग्राम चलाएँ:
./exploit
प्रोग्राम निम्नलिखित करेगा:
उपयोगकर्ता और नेटवर्क नेमस्पेस कॉन्फ़िगर करें
BPF मैप बनाएँ
एक तत्व सम्मिलित करें
मैप मेटाडेटा क्वेरी करें
निष्पादन परिणाम प्रदर्शित करें
सुरक्षा नोट
यह प्रोजेक्ट इसके लिए है:
शैक्षिक उद्देश्य
कर्नेल सुरक्षा अनुसंधान
eBPF आंतरिक कार्यप्रणाली को समझना
नियंत्रित प्रयोगशाला वातावरण
इस कोड को उचित प्राधिकरण के बिना सिस्टम पर न चलाएँ।
सीखने के लक्ष्य
इस प्रोजेक्ट के माध्यम से, आप समझ सकते हैं:
Linux कर्नेल BPF इंटरफ़ेस को कैसे उजागर करता है
BPF मैप्स कैसे संरचित होते हैं
Verifier तर्क उपयोगकर्ता-स्पेस इनपुट के साथ कैसे इंटरैक्ट करता है
निम्न-स्तरीय syscalls को मैन्युअल रूप से कैसे बनाया जाता है