
प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट CVE-2026-14669 के लिए, एक PostgreSQL to_char() timezone संक्षेप हीप बफर ओवरफ्लो जो सूचना लीक और ROP चेन के माध्यम से RCE सक्षम करता है; इसमें Docker लैब और स्वचालित PoC शामिल है।
PostgreSQL के to_char() फ़ंक्शन में टाइमज़ोन फ़ॉर्मेटिंग संसाधित करते समय हीप बफर ओवरफ्लो भेद्यता मौजूद है। हमलावर अत्यधिक लंबा POSIX टाइमज़ोन संक्षिप्त नाम सेट करके 25-बाइट फिक्स्ड बफर में सीमा से बाहर लेखन ट्रिगर कर सकता है, और सूचना लीक तथा ROP चेन के सहयोग से रिमोट कोड एक्ज़िक्यूशन प्राप्त कर सकता है।
to_char(timestamptz) फ़ंक्शन| PostgreSQL श्रृंखला | प्रभावित सीमा |
|---|---|
| 18.x | 18.0 – 18.5 |
| 17.x | 17.0 – 17.10 |
| 16.x | 16.0 – 16.14 |
| 15.x | 15.0 – 15.18 |
| 14.x | 14.0 – 14.23 |
formatting.c में DCH_TZ / DCH_tz हैंडलिंग पथ टाइमज़ोन संक्षिप्त नाम संग्रहीत करने के लिए 25-बाइट फिक्स्ड स्टैक बफर का उपयोग करता है, लेकिन इनपुट लंबाई की कोई जाँच नहीं होती है। जब टाइमज़ोन संक्षिप्त नाम 24 बाइट्स से अधिक होता है, तो strcpy() हीप मेमोरी में सीमा से बाहर लिखता है।
ट्रिगर पथ:
SET TIME ZONE '<超长缩写>+00';
SELECT to_char(now()::timestamptz, 'TZ');
↓
DCH_to_char() → DCH_from_char_action()
↓
strcpy(buf, tmtcTzn(...)) ← 堆溢出
V12 Security के PoC में तीन चरण शामिल हैं:
हीप ओवरफ्लो द्वारा आसन्न हीप ऑब्जेक्ट्स को नष्ट करके PIE बेस एड्रेस और हीप पॉइंटर्स लीक किए जाते हैं, जिससे ASLR टूट जाता है।
हीप पर ROP गैजेट चेन व्यवस्थित करने के लिए बड़े ऑब्जेक्ट या bytea फ़ील्ड का उपयोग किया जाता है।
दूसरा ओवरफ्लो हीप पर फ़ंक्शन पॉइंटर को अधिलेखित करता है और ROP चेन पर कूदकर मनमाना कमांड निष्पादित करता है (postgres उपयोगकर्ता विशेषाधिकारों के साथ)।
poc.py - पूर्ण शोषण स्क्रिप्ट (210 पंक्तियाँ, PostgreSQL 19beta1 के लिए)requirements.txt - Python निर्भरताएँ (psycopg, pwntools)docker-compose.yml - भेद्यता परीक्षण वातावरणdocker-compose up -d
कंटेनर के प्रारंभ होने की प्रतीक्षा करें (हेल्थ चेक पास होने तक):
docker logs pg-tzlab
pip install -r requirements.txt
python3 poc.py
डिफ़ॉल्ट रूप से 127.0.0.1:55432 से कनेक्ट होता है, उपयोगकर्ता नाम postgres, पासवर्ड postgres है।
सफल शोषण के बाद, कंटेनर लॉग में कमांड निष्पादन आउटपुट देखा जा सकता है:
docker logs pg-tzlab | grep PWNED
poc.py में स्थिरांक संपादित करें:
HOST, PORT - लक्ष्य पताDEFAULT_COMMAND - निष्पादित किया जाने वाला कमांड⚠️ महत्वपूर्ण: यह PoC विशेष बिल्ड के ऑफसेट पते हार्डकोड करता है (postgres:19beta1 Docker इमेज sha256:a6bdd01...)। अन्य संस्करणों के लिए गैजेट्स का पुनः पता लगाना आवश्यक है।
SET TIME ZONE स्टेटमेंट (> 50 वर्ण) की निगरानी करें⚠️ यह PoC केवल सुरक्षा अनुसंधान, भेद्यता सत्यापन और रक्षात्मक परीक्षण के लिए है।
इस PoC का उपयोग करने का अर्थ है कि आप स्थानीय कानूनों, विनियमों और लक्षित प्रणाली की प्राधिकरण सीमाओं का पालन करने के लिए सहमत हैं।