CVE-2026-17566
pgAdmin 4: इम्पोर्ट/एक्सपोर्ट डेटा क्वेरी गार्ड में बैकस्लैश-एस्केप बेमेल के माध्यम से RCE (अधूरा बचाव, CVE-2025-13780 का सहोदर अंतराल)
- प्रकाशित
- 31 जुल॰ 2026
- अद्यतन
- 1 अग॰ 2026
- सीएनए असाइन करना
- PostgreSQL
- साक्ष्य देखे गए
- 4 अग॰ 2026
प्राथमिक सीवीएसएस
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/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 दिन
- प्रतिशत
- 45.0%
- मॉडल दिनांक
- 21 सित॰ 2026
ईपीएसएस एक सांख्यिकीय अनुमान है, कोई निश्चितता या प्रभाव का माप नहीं। इसे सीवीएसएस, केईवी स्थिति, एक्सपोज़र और अपने वातावरण के साथ मिलाएं।
सारांश
pgAdmin 4 का Import/Export Data टूल एक psql \copy (...) कमांड लाइन बनाता है, जिसमें उपयोगकर्ता द्वारा आपूर्ति किए गए SQL क्वेरी को एक Jinja टेम्पलेट में इंटरपोलेट किया जाता है और रेंडर की गई लाइन को psql को --command के माध्यम से पास किया जाता है। किसी हमलावर को (...) रैपर से बाहर निकलने से रोकने के लिए, create_import_export_job() (रूट POST /import_export/job/<sid>, जो केवल सामान्य, आमतौर पर दी जाने वाली tools_import_export_data अनुमति से सुरक्षित है) ने क्वेरी को एक हाथ से लिखे गए कोष्ठक-संतुलन जाँचकर्ता, _is_query_parens_balanced() से मान्य किया। वह जाँचकर्ता हमेशा एकल उद्धरण (') से पहले बैकस्लैश को उद्धरण को एस्केप करने के रूप में मानता था, यानी जैसे कि standard_conforming_strings बंद हो। PostgreSQL ने 9.1 (2010) से standard_conforming_strings को डिफ़ॉल्ट रूप से चालू रखा है, जो pgAdmin 4 द्वारा वर्तमान में समर्थित हर PostgreSQL संस्करण (13-18) पर डिफ़ॉल्ट है; उस डिफ़ॉल्ट के तहत psql का अपना \copy टोकनाइज़र \ को एक सामान्य वर्ण मानता है, इसलिए उसके तुरंत बाद आने वाला एकल उद्धरण स्ट्रिंग लिटरल को बंद कर देता है। इसलिए SELECT 'a\') TO PROGRAM 'echo pwned' x' जैसी क्वेरी को pgAdmin के जाँचकर्ता द्वारा "संतुलित" के रूप में स्वीकार कर लिया गया (जो मानता था कि ) अभी भी स्ट्रिंग के अंदर है), जबकि psql, वास्तविक रेंडर की गई कमांड लाइन के माध्यम से चलने पर, उस बिंदु पर स्ट्रिंग को बंद कर देता है और अगले ) को रैपिंग \copy (...) सबक्वेरी के अंत के रूप में मानता है, जिससे हमलावर द्वारा चुना गया TO PROGRAM '<command>' क्लॉज उजागर होता है, जिसे psql popen() के माध्यम से निष्पादित करता है -- भले ही उसी लाइन पर बाद में सिंटैक्स त्रुटि आए। यह CVE-2025-12762/CVE-2025-13780 (PLAIN-format डंप रिस्टोर के दौरान psql मेटा-कमांड/COPY इंजेक्शन के माध्यम से RCE) के समान श्रेणी की बग है, जो एक अलग मॉड्यूल (Restore के बजाय Import/Export Data) में स्वतंत्र रूप से लिखे गए बचाव के माध्यम से पहुँची, जिसमें अपना स्वयं का, अलग लॉजिक बग था (BOM-पराजित regex एंकर के बजाय उल्टे बैकस्लैश-एस्केप सेमेंटिक्स)। फिक्स क्वेरी में एकल-उद्धरण वाली स्ट्रिंग के अंदर किसी भी बैकस्लैश को सीधे अस्वीकार कर देता है, बजाय psql की दो संभावित व्याख्याओं में से एक को चुनने के। यह जानबूझकर रूढ़िवादी है: क्योंकि \ की सही व्याख्या लक्ष्य सर्वर की standard_conforming_strings सेटिंग पर निर्भर करती है, जिसे जाँचकर्ता मान्यता के समय विश्वसनीय रूप से नहीं जान सकता, क्वेरी को अस्वीकार करना अनुमान लगाने से सुरक्षित है। यह समस्या pgAdmin 4 को प्रभावित करती है: 9.18 से पहले _is_query_parens_balanced() की शुरुआत से।
स्रोत
1जिम्मेदारीपूर्ण उपयोग
भेद्यता जानकारी का उपयोग केवल उन प्रणालियों पर करें जिनके मालिक आप हैं या परीक्षण के लिए अधिकृत हैं। किटप्लॉइट सार्वजनिक अनुसंधान मेटाडेटा से लिंक करता है और शोषण कोड या दुर्भावनापूर्ण पेलोड को संग्रहीत नहीं करता है।