
CVE-2026-7482 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Ollama के GGUF लोडर में एक अनप्रमाणित हीप आउट-ऑफ-बाउंड्स रीड है, जो एक क्राफ्टेड मॉडल फ़ाइल के माध्यम से मेमोरी एक्सफ़िल्ट्रेशन प्रदर्शित करता है।
इस रिपॉजिटरी में CVE-2026-7482 के लिए एक 1-दिवसीय प्रूफ ऑफ कॉन्सेप्ट (PoC) शोषण श्रृंखला शामिल है, जो Ollama के GGUF मॉडल लोडर (0.17.1 से पहले के संस्करण) में एक अनप्रमाणित आउट-ऑफ-बाउंड्स (OOB) रीड भेद्यता है।
नोट: यह एक 1-दिवसीय शोध पुनरुत्पादन है। मैंने मूल CVE की खोज नहीं की थी। यह PoC सार्वजनिक सलाह विवरणों के आधार पर शैक्षिक और रक्षात्मक शोध उद्देश्यों के लिए भेद्यता की कार्यप्रणाली प्रदर्शित करने हेतु तैयार किया गया था।
/api/create एंडपॉइंट पर एक दुर्भावनापूर्ण रूप से तैयार, छोटा किया गया GGUF फ़ाइल प्रदान करके, एक हमलावर fs/ggml/gguf.go और server/quantization.go में क्वांटाइज़ेशन पार्सर को आवंटित हीप बफर से आगे पढ़ने के लिए मजबूर कर सकता है। लीक हुई मेमोरी को फिर /api/push एंडपॉइंट के माध्यम से परिणामी मॉडल आर्टिफैक्ट को हमलावर-नियंत्रित Docker रजिस्ट्री में धकेल कर बाहर निकाला जाता है।
इस 1-दिवसीय शोध के दौरान, क्रैश को पुनरुत्पादित करना आसान था, लेकिन सर्वर को क्रैश किए बिना या API सत्यापन ब्लॉकों से टकराए बिना स्थिर बहिर्निष्कासन प्राप्त करने के लिए विशिष्ट आर्किटेक्चरल फोर्जिंग की आवश्यकता थी:
F16 (general.file_type = 1) के रूप में टैग किया जाना चाहिए।Q4_K_M डाउन-क्वांटाइज़ेशन का अनुरोध करते हैं। चूंकि पेलोड को F16 के रूप में देखा जाता है, C++ ggml बैकएंड सुरक्षित, 1:1 मेमोरी कॉपी करने के बजाय पेलोड को संसाधित करने के लिए मजबूर होता है।token_embd.weight) को एक 2D मैट्रिक्स के रूप में आकार दिया जाना चाहिए जहां सबसे भीतरी आयाम बिल्कुल 256 हो (जैसे, [num_rows, 256])। यह Q4_K_M ब्लॉक आवश्यकताओं के साथ सख्ती से संरेखित होता है, जिससे बैकएंड परत को छोड़ने से रोका जा सके।pip install requests numpy gguf
आपको बहिर्निष्कासित Docker लेयर पुश को पकड़ने के लिए एक सार्वजनिक रूप से सुलभ HTTP लिसनर (जैसे Ngrok) की भी आवश्यकता है।
1. रोग रजिस्ट्री प्रारंभ करें लीक हुई मेमोरी ब्लॉब्स को पकड़ने के लिए लिसनर प्रारंभ करें।
sudo python3 registry.py
2. दुर्भावनापूर्ण पेलोड फोर्ज करें
छोटा किया गया GGUF फ़ाइल उत्पन्न करें। आप प्रति अनुरोध कितनी हीप मेमोरी स्क्रैप की जाती है, इसे नियंत्रित करने के लिए स्क्रिप्ट के अंदर TARGET_LEAK_SIZE_MB समायोजित कर सकते हैं। (अनुशंसित: अनमैप्ड पेजों को सेगफॉल्ट करने से बचने के लिए 0.5MB से 2.0MB)।
python3 forge.py
3. शोषण दागें
exploit.py में अपना लक्ष्य IP और अपना रोग रजिस्ट्री URL शामिल करें, फिर निष्पादित करें:
python3 exploit.py
4. आर्टिफैक्ट का विश्लेषण करें
रजिस्ट्री लीक हुए हीप डंप को exfils/ निर्देशिका में छोड़ देगी।
डेटा अखंडता पर नोट (क्वांटाइज़ेशन जाल): जबकि शोषण सफलतापूर्वक सर्वर हीप मेमोरी के कई मेगाबाइट्स तक कैप्चर और बहिर्निष्कासित करता है, डेटा OOB रीड के दौरान Ollama के Q4_K_M डाउन-क्वांटाइज़ेशन एल्गोरिदम के अधीन होता है। बैकएंड कच्चे मेमोरी बाइट्स को float16 में परिवर्तित करता है और एक हानिपूर्ण 4-बिट ब्लॉक संपीड़न योजना लागू करता है। परिणामस्वरूप, लीक हुई मेमोरी गणितीय रूप से विकृत हो जाती है। मानक ASCII निष्कर्षण उपकरण बाइनरी कचरा उत्पन्न करेंगे, जिससे इस विशिष्ट बाध्यता पथ के माध्यम से सादा-पाठ क्रेडेंशियल पुनर्प्राप्ति व्यावहारिक रूप से असंभव हो जाती है।
यह परियोजना केवल शैक्षिक और अधिकृत भेद्यता अनुसंधान उद्देश्यों के लिए है। इस उपकरण का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति नहीं है।