CVE-2026-45034
PhpSpreadsheet: File::prohibitWrappers बाईपास
- प्रकाशित
- 22 जून 2026
- अद्यतन
- 23 जून 2026
- सीएनए असाइन करना
- GitHub_M
- साक्ष्य देखे गए
- 14 अग॰ 2026
प्राथमिक सीवीएसएस
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:Xकम · अगले 30 दिन
- प्रतिशत
- 39.2%
- मॉडल दिनांक
- 21 सित॰ 2026
ईपीएसएस एक सांख्यिकीय अनुमान है, कोई निश्चितता या प्रभाव का माप नहीं। इसे सीवीएसएस, केईवी स्थिति, एक्सपोज़र और अपने वातावरण के साथ मिलाएं।
सारांश
PhpSpreadsheet एक शुद्ध PHP लाइब्रेरी है जो स्प्रेडशीट फ़ाइलों को पढ़ने और लिखने के लिए उपयोग की जाती है। 1.30.5 से पहले, CVE-2026-34084 को सहायक फ़ंक्शन File::prohibitWrappers द्वारा पैच किया गया था। यह सहायक फ़ंक्शन parse_url($filename, PHP_URL_SCHEME) को कॉल करता है और फिर phar://, php://, data:// या expect:// जैसे स्ट्रीम रैपर को अस्वीकार करने के लिए is_string($scheme) && strlen($scheme) > 1 की जाँच करता है। यह जाँच "क्या पथ में रैपर है" के बराबर नहीं है। जब इनपुट का रूप phar:///path/file.phar/inner होता है, जिसमें स्कीम के बाद तीन या अधिक स्लैश होते हैं, तो parse_url स्कीम स्ट्रिंग लौटाने के बजाय boolean false लौटाता है। इसलिए is_string($scheme) शाखा को छोड़ दिया जाता है, सहायक फ़ंक्शन बिना कोई अपवाद फेंके लौट आता है, और कॉलर आगे बढ़ जाता है। हालाँकि, PHP की स्ट्रीम परत फिर भी phar:///... को एक वैध phar रैपर के रूप में मानती है और अंतर्निहित phar फ़ाइल को खोलती है। परिणाम यह है कि IOFactory::load($attackerPath) पैच को पार कर जाता है और फिर भी phar रैपर को छूता है। PHP 7.x पर, is_file के माध्यम से केवल phar रैपर तक पहुँचना ही PHP के लिए phar मेटाडेटा को स्वचालित रूप से deserialize करने के लिए पर्याप्त है, जो बदले में हमलावर द्वारा नियंत्रित ऑब्जेक्ट के जादुई तरीकों __wakeup और __destruct को आमंत्रित करता है और पूर्ण RCE देता है। PHP 8.x पर, सादे फ़ाइल संचालन के लिए स्वचालित मेटाडेटा deserialization हटा दिया गया था, इसलिए PhpSpreadsheet परत पर श्रृंखला एक phar रैपर फ़ाइल पढ़ने की प्राइमिटिव तक सीमित हो जाती है, और RCE केवल तभी फिर से उभरता है जब डाउनस्ट्रीम उपभोक्ता कभी Phar::getMetadata को कॉल करता है। यह भेद्यता 1.30.5 में ठीक कर दी गई है।
स्रोत
1PHPSpreadsheet के phar:// डिसीरियलाइज़ेशन भेद्यता के लिए PoC एक्सप्लॉइट, जो असुरक्षित PHP अनुप्रयोगों पर रिमोट कोड निष्पादन प्राप्त करने के लिए prohibitWrappers को बायपास करता है।
जिम्मेदारीपूर्ण उपयोग
भेद्यता जानकारी का उपयोग केवल उन प्रणालियों पर करें जिनके मालिक आप हैं या परीक्षण के लिए अधिकृत हैं। किटप्लॉइट सार्वजनिक अनुसंधान मेटाडेटा से लिंक करता है और शोषण कोड या दुर्भावनापूर्ण पेलोड को संग्रहीत नहीं करता है।