
प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट CVE-2022-31630 के लिए, PHP के GD एक्सटेंशन में एक आउट-ऑफ-बाउंड्स रीड कमजोरी। प्रभावित PHP संस्करणों में क्रैश और मेमोरी डिस्क्लोज़र प्रदर्शित करता है। सुरक्षित परीक्षण के लिए Docker-आधारित लैब शामिल है।
चेतावनी: यह कोड केवल शैक्षिक उद्देश्यों और पृथक प्रयोगशाला वातावरण में परीक्षण के लिए बनाया गया है। अन्य सिस्टम पर बिना अनुमति के उपयोग अवैध और गैर-जिम्मेदाराना है।
📌 विवरण
CVE-2022-31630 GD PHP एक्सटेंशन में Out-of-Bounds (OOB) Read भेद्यता है, विशेष रूप से imageloadfont() फ़ंक्शन में। यह भेद्यता उस हमलावर को अनुमति देती है जो PHP एप्लिकेशन द्वारा लोड किए गए फ़ॉन्ट फ़ाइल को नियंत्रित कर सकता है, आवंटित बफर की सीमा के बाहर डेटा पढ़ने की। संभावित प्रभाव:
· Denial of Service (क्रैश) – एप्लिकेशन प्रतिक्रिया देना बंद कर देता है। · सूचना प्रकटीकरण – मेमोरी से संवेदनशील डेटा (जैसे कुंजी, टोकन, या डेटा के अन्य टुकड़े) पढ़ा जा सकता है।
प्रभावित PHP संस्करण
· PHP 7.4.x, 7.4.33 से पहले · PHP 8.0.x, 8.0.25 से पहले · PHP 8.1.x, 8.1.12 से पहले
PHP 7.4.33 पहला संस्करण है जिसने इस CVE के लिए पैच प्राप्त किया। यह रिपॉजिटरी भेद्य संस्करण (≤ 7.4.32) और पैच किए गए संस्करण (≥ 7.4.33) के बीच व्यवहार में अंतर दिखाने के लिए प्रूफ ऑफ कॉन्सेप्ट (PoC) प्रदान करती है।
🔍 तकनीकी विवरण
भेद्यता GD फ़ॉन्ट फ़ाइल (.gdf प्रारूप) को पढ़ते समय इनपुट सत्यापन की कमी पर आधारित है। फ़ॉन्ट फ़ाइल का हेडर संरचना इस प्रकार है:
बाइट ऑफसेट आकार (बाइट) विवरण 0 2 मैजिक नंबर (0x01BE) 2 2 वर्णों की संख्या (nchars) 4 2 वर्ण की चौड़ाई (width) (पिक्सेल में) 6 2 वर्ण की ऊंचाई (height) 8 2 प्रति वर्ण बाइट्स की संख्या (char_offset)
यदि width का मान बहुत बड़ा (जैसे 65535) बनाया जाता है, तो वर्ण बिटमैप को संग्रहीत करने के लिए बफर आकार की गणना गलत हो जाती है। परिणामस्वरूप, आवंटित बफर बहुत छोटा होता है। जब imagechar() फ़ंक्शन उस फ़ॉन्ट से वर्ण पढ़ता है, तो यह बफर की सीमा के बाहर मेमोरी तक पहुंचता है – इसे Out-of-Bounds Read कहा जाता है।
🧪 परीक्षण आवश्यकताएँ
· Docker (पृथक वातावरण चलाने के लिए) · PHP संस्करण 7.4.32 या 7.4.33 (Docker इमेज php:7.4.32-cli / php:7.4.33-cli का उपयोग कर सकते हैं) · GD एक्सटेंशन (कंटेनर के अंदर स्थापित होगा)
🚀 PoC का उपयोग कैसे करें
git clone https://github.com/sepkascurty-cpu/php-exploit_cve-2022-31630.git
cd exploit_cve-2022-31630
भेद्य संस्करण (7.4.32) का परीक्षण करने के लिए:
docker run -it --rm -v $(pwd):/app php:7.4.32-cli bash
पैच किए गए संस्करण (7.4.33) का परीक्षण करने के लिए:
docker run -it --rm -v $(pwd):/app php:7.4.33-cli bash
cd /app
apt-get update
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
docker-php-ext-configure gd --with-freetype --with-jpeg
docker-php-ext-install gd
php exploit_cve-2022-31630.php
📊 नमूना आउटपुट
PHP संस्करण अपेक्षित परिणाम 7.4.32 (भेद्य) प्रोग्राम Segmentation Fault के साथ क्रैश हो जाता है या मेमोरी लीक होती है (मेमोरी से डमी डेटा दिखाई देता है)। 7.4.33 (पैच किया गया) निष्पादन सामान्य रूप से पूरा होता है, output.png फ़ाइल सहेजी जाती है, कोई क्रैश नहीं।
🛡️ शमन
· PHP को नवीनतम संस्करण में अपडेट करें जिसमें पैच शामिल हो: · PHP 7.4.33 या उससे नया · PHP 8.0.25 या उससे नया · PHP 8.1.12 या उससे नया · यदि तुरंत अपडेट नहीं कर सकते, तो GD एक्सटेंशन या imageloadfont() फ़ंक्शन को अक्षम करें यदि वास्तव में आवश्यक नहीं है। · मेमोरी लीक के प्रभाव को कम करने के लिए एप्लिकेशन पर कम से कम विशेषाधिकार का सिद्धांत लागू करें।
📚 संदर्भ
· NVD पर CVE-2022-31630 · php-src में पैच कमिट · PHP रिलीज़ घोषणाएँ
⚠️ अस्वीकरण
यह रिपॉजिटरी शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान की गई है। लेखक इस कोड के दुरुपयोग के लिए जिम्मेदार नहीं है। सुनिश्चित करें कि आप केवल अपने स्वामित्व वाले या जिसके लिए लिखित अनुमति प्राप्त हो, ऐसे वातावरण में परीक्षण करें।
इंडोनेशियाई साइबर सुरक्षा समुदाय के लिए बनाया गया।