
CVE-2026-44431 का स्वतंत्र ऑफ़लाइन रिग्रेशन, pinned urllib3 रिलीज़ों में, मूल रिपोर्टर एट्रिब्यूशन के साथ।
CVE-2026-44431 · urllib3 2.6.3 → 2.7.0 · 27 सितंबर 2026 को पुनरुत्पादित
एक अनुरोध एक ओरिजिन पर तीन संवेदनशील हेडर ले जाता है। एक रीडायरेक्ट गंतव्य बदल देता है। क्या अगला अनुरोध अभी भी उन्हें ले जाता है?
यह स्वतंत्र रिग्रेशन दो सटीक urllib3 रिलीज़ से वास्तविक रीडायरेक्ट कार्यान्वयन चलाता है। संस्करण 2.6.3 प्रभावित लो-लेवल API के माध्यम से सभी तीन हेडर बनाए रखता है। संस्करण 2.7.0 उन्हें हटा देता है। एक बिनाइन हेडर बच जाता है, और सामान्य अनुरोध अभी भी काम करते हैं।
| फिक्स्चर | urllib3 2.6.3 | urllib3 2.7.0 |
|---|---|---|
| लो-लेवल क्रॉस-ओरिजिन रीडायरेक्ट | 3 संवेदनशील हेडर बनाए रखे | 0 बनाए रखे |
| लोअरकेस नामों के साथ वही केस | 3 बनाए रखे | 0 बनाए रखे |
| हाई-लेवल API नियंत्रण | 0 बनाए रखे | 0 बनाए रखे |
| सीधा 200 प्रतिक्रिया | 3 इच्छानुसार बनाए रखे | 3 इच्छानुसार बनाए रखे |
| रीडायरेक्ट स्पष्ट रूप से अक्षम | एक कॉल; 302 लौटाया | एक कॉल; 302 लौटाया |
| कस्टम रिमूवल सेट बिनाइन मार्कर जोड़ता है | सभी 4 हेडर बनाए रखे | सभी 4 हटाए गए |
12/12 परिदृश्य अपेक्षाएँ पास हुईं। प्रत्येक परिदृश्य प्रतिक्रिया स्थिति, ट्रांसपोर्ट कॉल गणना, प्रारंभिक हेडर सेट, बिनाइन-हेडर परिणाम, और यह भी जाँचता है कि कॉलर के हेडर परिवर्तित नहीं किए गए थे। भेद्य परिणाम एक अपेक्षित बेसलाइन परिणाम है, पास होने वाला सुरक्षा जाँच नहीं।
मशीन-पठनीय परिणाम में कैप्चर किए गए आर्गुमेंट, सटीक व्हील हैश, रनटाइम, टेस्ट-सोर्स हैश, एट्रिब्यूशन, और पुनरुत्पादन समय शामिल हैं।
अपस्ट्रीम एडवाइज़री, जो 7 मई 2026 को प्रकाशित हुई, urllib3 के प्रॉक्सीड लो-लेवल रीडायरेक्ट पथ में एक सूचना-प्रकटीकरण मुद्दे की पहचान करती है। यह संस्करणों >=1.23, <2.7.0 को प्रभावित के रूप में सूचीबद्ध करती है। ProxyManager.connection_from_url(...).urlopen(..., assert_same_host=False) को कॉल करने से कॉन्फ़िगर किए गए संवेदनशील हेडर किसी अन्य ओरिजिन पर रीडायरेक्ट किए गए अनुरोध में चले जाते थे। हाई-लेवल मैनेजर API पहले से ही उन्हें हटा देता था।
अपस्ट्रीम फिक्स रिकर्सिव लो-लेवल अनुरोध से पहले Retry.remove_headers_on_redirect लागू करता है। हमारा लोअरकेस-हेडर केस हेडर-नाम केसिंग पर अपस्ट्रीम रिग्रेशन के ध्यान का अनुसरण करता है। कस्टम-रिमूवल केस जाँचता है कि नियम कॉन्फ़िगर किए गए सेट का सम्मान करता है, केवल तीन डिफ़ॉल्ट नामों से परे।
एडवाइज़री christos-cantina-security को रिपोर्टर, illia-v को समन्वयक, और sethmlarson को उपचार समीक्षक के रूप में श्रेय देती है। यहाँ Sergio Rodriguez का योगदान स्वतंत्र ऑफ़लाइन हार्नेस और पहले/बाद का विश्लेषण है। यह उनके प्रकाशित CVE का पुनरुत्पादन है।
Python 3.10 या बाद का उपयोग करें। pip install या वर्चुअल एनवायरनमेंट आवश्यक नहीं है: प्रत्येक संस्करण को एक नए पृथक सबप्रोसेस में सीधे उसके प्योर-Python व्हील से इम्पोर्ट किया जाता है।
पोर्टफोलियो रिपॉज़िटरी रूट से:
python -B ./labs/cve-replay/run_replay.py --fetch
python -B ./labs/cve-replay/run_replay.py
पहला कमांड दो सटीक व्हील को लैब की अनदेखी की गई .cache/wheels/ डायरेक्टरी में डाउनलोड करता है और उनके SHA-256 हैश को मैनिफ़ेस्ट के विरुद्ध जाँचता है। दूसरा कमांड उस कैश का उपयोग बिना डाउनलोड किए करता है। स्टैंडअलोन सोर्स चेकआउट के लिए, python -B run_replay.py --fetch चलाएँ, फिर वही कमांड --fetch के बिना। --cache एक भिन्न स्थानीय कैश डायरेक्टरी स्वीकार करता है।
HTTPConnectionPool._make_request को दो-प्रतिक्रिया ट्रांसपोर्ट से बदल दिया जाता है: एक निश्चित लोकेशन के साथ 302, फिर एक 200। फिक्स्चर उस सीमा तक पहुँचने वाले आर्गुमेंट को कैप्चर करता है। urllib3 की पार्सिंग, रिट्राई पॉलिसी, हेडर फ़िल्टरिंग, और रिकर्सिव रीडायरेक्ट हैंडलिंग चयनित व्हील से अपरिवर्तित निष्पादित होती हैं।
सभी गंतव्य निश्चित आरक्षित .invalid नाम हैं; सभी हेडर मान DUMMY से शुरू होते हैं। सॉकेट निर्माण और DNS फ़ंक्शन तुरंत त्रुटि उठाते हैं। लाइब्रेरी की इम्पोर्ट-टाइम IPv6 क्षमता जाँच को अस्वीकार किया जाता है और अलग से रिकॉर्ड किया जाता है; रीप्ले परिदृश्य कोई नेटवर्क ऑपरेशन का प्रयास नहीं करते। कोई सुनने वाला सर्वर या लाइव लक्ष्य नहीं है।
यह रीडायरेक्ट आर्गुमेंट हैंडलिंग को मान्य करता है। यह एंड-टू-एंड प्रॉक्सी ट्रैफ़िक को नहीं मापता। संस्करण 2.7.0 इस विशेष CVE के लिए पहला फिक्स है; यह ऐतिहासिक तुलना इसे नए समर्थित रिलीज़ों पर चुनने की सिफ़ारिश नहीं है।
फिक्स्चर स्क्रिप्ट और विश्लेषण मूल पोर्टफोलियो कार्य हैं। urllib3 एक अपस्ट्रीम प्रोजेक्ट है जो इसके MIT लाइसेंस के अंतर्गत वितरित किया जाता है; इसका कोड और रिलीज़ व्हील पोर्टफोलियो सोर्स आर्काइव में पुनर्वितरित नहीं किए जाते। उन्हें PyPI से अलग से डाउनलोड किया जाता है और प्रयोग के लिए अपरिवर्तित इम्पोर्ट किया जाता है।