
स्थानीय curl/libcurl बिल्ड्स की CVE-2026-92392 HTTP/2 अपलोड use-after-free जोखिम के लिए जाँच करता है, जिसमें निष्क्रिय इन्वेंटरी, माउंटेड-इमेज स्कैनिंग, और एक सीमित लूपबैक PoC प्रोब शामिल है।
cve_2026_92392_check.py स्थानीय curl और libcurl आर्टिफैक्ट्स का आकलन
CVE-2026-92392 के लिए करता है, जो curl/libcurl में एक HTTP/2 अपलोड
use-after-free है।
यह पैसिव स्थानीय इन्वेंटरी, प्रदत्त-बैनर आकलन, निष्पादन-रहित माउंटेड-इमेज स्कैनिंग, और एक सीमित लूपबैक HTTP/2 प्रोटोकॉल प्रोब का समर्थन करता है। यह प्रोब रक्षात्मक और गैर-हथियारीकृत है। इसमें कोई कमांड पेलोड, शेलकोड, मेमोरी-एड्रेस हेरफेर, सूचना-लीक लॉजिक, या RCE पेलोड नहीं है।
सक्रिय प्रोब केवल 127.0.0.1 से बाइंड होता है, कोई रिमोट टारगेट URL या
होस्ट स्वीकार नहीं करता, और केवल चयनित स्थानीय curl बाइनरी को निष्पादित करता है।
चेकर चार अलग-अलग साक्ष्य स्तरों को अलग करता है:
| साक्ष्य स्तर | यह क्या स्थापित करता है | यह क्या स्थापित नहीं करता |
|---|---|---|
| बिल्ड वर्गीकरण | क्या कोई संस्करण-योग्य curl/libcurl आर्टिफैक्ट अपस्ट्रीम प्रभावित रेंज से बाहर है, अपस्ट्रीम-प्रभावित है जिसकी विक्रेता पैच स्थिति अज्ञात है, या प्रदत्त पैच-स्थिति साक्ष्य का उपयोग करके पुष्टि-प्रभावित है | क्या कोई एप्लिकेशन वास्तव में प्रभावित HTTP/2 अपलोड पथ का उपयोग करता है |
| रनटाइम एक्सपोज़र संदर्भ | क्या प्रदत्त एप्लिकेशन तथ्य दर्शाते हैं कि HTTP/2 अपलोड किसी हमलावर-नियंत्रित एंडपॉइंट तक पहुँच सकते हैं | क्या भेद्यता ट्रिगर हुई थी |
| प्रोटोकॉल उद्दीपन | क्या स्थानीय लूपबैक हार्नेस ने एक HTTP/2 कनेक्शन पर दो अपलोड के साथ दोनों प्रलेखित रीसेट वेरिएंट वितरित किए | use-after-free, क्रैश का कारण, या कोड निष्पादन |
| CVE-श्रेयित सैनिटाइज़र परिणाम | क्या उम्मीदवार अनुक्रम, एक AddressSanitizer heap-use-after-free, एक अपस्ट्रीम-प्रभावित आर्टिफैक्ट पहचान, और एक मेल खाता HTTP/2 स्टैक सभी देखे गए | किसी अन्य सिस्टम पर विश्वसनीयता या व्यावहारिक शोषणीयता |
एक स्वच्छ रन, एक अपूर्ण प्रोटोकॉल रन, या एक गैर-क्रैशिंग सैनिटाइज़र रन यह सिद्ध नहीं करता कि कोई बिल्ड सुरक्षित है।
CVE-2026-92392 curl/libcurl HTTP/2 अपलोड हैंडलिंग को प्रभावित करता है। एक अपलोड के दौरान,
एक प्रभावित बिल्ड एक HTTP/2 RST_STREAM को प्रोसेस कर सकता है जो या तो
REFUSED_STREAM या HTTP_1_1_REQUIRED ले जाता है। बफ़र्ड अपलोड डेटा तब
मूल ट्रांसफर का HTTP/2 स्टेट डिटैच होने के बाद एक नए अनुरोध के रूप में
पार्स किया जा सकता है। एक बाद का HTTP/2 कॉलबैक एक स्टेल Curl_easy पॉइंटर को
डीरेफ़रेंस कर सकता है।
इस चेकर को संशोधित करने के लिए उपयोग की गई REA तुलना ने प्रासंगिक क्लीनअप क्रम अंतर की पुष्टि की:
Curl_conn_ev_data_done को कॉल करता है, लंबित
हैंडल्स को प्रोसेस करता है, और केवल तब Curl_req_done को कॉल करता है।Curl_req_done req_flush तक पहुँचता है, जबकि HTTP/2 data-done पथ
पहले ही स्ट्रीम संदर्भ को साफ़ कर चुका होता है।Curl_conn_ev_data_done से पहले Curl_req_done करता है,
जिससे वह स्टेल क्रम समाप्त हो जाता है।यह चेकर के प्रूफ़ मॉडल का समर्थन करने वाला कार्यान्वयन साक्ष्य है। विक्रेता पैच स्थिति के लिए अभी भी स्वतंत्र सत्यापन की आवश्यकता है।
अपस्ट्रीम एडवाइज़री भेद्य कार्यान्वयन को curl 8.12.0 में पेश किया गया बताती है। चेकर अपस्ट्रीम रिलीज़ को निम्नानुसार वर्गीकृत करता है:
| रिलीज़ स्थिति | वर्गीकरण |
|---|---|
| 8.12.0 से पहले | NOT AFFECTED |
| 8.12.0 से 8.22.0 तक, फ़िक्स्ड बैकपोर्ट्स को छोड़कर | अपस्ट्रीम प्रभावित |
| 8.14 ब्रांच 8.14.3 या बाद में | फ़िक्स्ड बैकपोर्ट |
| 8.16 ब्रांच 8.16.2 या बाद में | फ़िक्स्ड बैकपोर्ट |
| 8.20 ब्रांच 8.20.2 या बाद में | फ़िक्स्ड बैकपोर्ट |
| 8.23.0 या बाद में | NOT AFFECTED |
| डेवलपमेंट, स्नैपशॉट, नाइटली, या अस्पष्ट संस्करण | INDETERMINATE |
एक विक्रेता curl के अपस्ट्रीम संस्करण स्ट्रिंग को बदले बिना फ़िक्स को बैकपोर्ट कर सकता है। इसलिए, एक प्रभावित अपस्ट्रीम संस्करण इन्वेंटरी साक्ष्य है, यह निर्णायक प्रमाण नहीं कि कोई विक्रेता बिल्ड अनपैच्ड है।
--patch-state का उपयोग केवल तब करें जब डाउनस्ट्रीम सेमांटिक-फ़िक्स स्थिति को
विक्रेता एडवाइज़री, पैकेज चेंजलॉग, स्रोत तुलना, या
किसी अन्य विश्वसनीय आर्टिफैक्ट-स्तरीय विधि के माध्यम से सत्यापित किया गया हो।
--patch-state मान | अर्थ |
|---|---|
unknown | डिफ़ॉल्ट। एक प्रभावित अपस्ट्रीम संस्करण UPSTREAM-AFFECTED VERSION उत्पन्न करता है। |
absent | ऑपरेटर ने स्वतंत्र रूप से सत्यापित किया है कि डाउनस्ट्रीम फ़िक्स अनुपस्थित है। एक HTTP/2-सक्षम प्रभावित बिल्ड AFFECTED BUILD उत्पन्न करता है। |
present | ऑपरेटर ने स्वतंत्र रूप से सत्यापित किया है कि डाउनस्ट्रीम सिमैंटिक फ़िक्स मौजूद है। यह एक ऑपरेटर का दावा है, curl के अपस्ट्रीम फ़िक्स के साथ बाइनरी समतुल्यता का स्वचालित प्रमाण नहीं। |
--poc के लिए एक स्थानीय curl निष्पादन योग्य।--poc-proof asan के लिए AddressSanitizer-इंस्ट्रुमेंटेड curl बिल्ड।openssl कमांड केवल तब जब --tls का उपयोग किया जाता है।सक्रिय PoC मोड स्क्रिप्ट, रैपर, अज्ञात नेटिव निष्पादन योग्य, और PE/Windows बाइनरी को अस्वीकार करता है। बैनर और माउंट किए गए फ़ाइलसिस्टम के लिए निष्क्रिय आकलन उपलब्ध रहता है।
PATH में मिले curl बाइनरी का निरीक्षण करें:
python3 cve_2026_92392_check.py
उत्सर्जित JSON:
python3 cve_2026_92392_check.py --json
आंतरिक स्व-परीक्षण चलाएँ:
python3 cve_2026_92392_check.py --self-test
python3 -O cve_2026_92392_check.py --self-test
चयनित curl executable और libcurl shared library का निरीक्षण करें:
python3 cve_2026_92392_check.py \
--curl-binary /opt/curl/bin/curl \
--libcurl-path /opt/curl/lib/libcurl.so \
--json
विश्वसनीय curl बैनर का मूल्यांकन बिना किसी बाइनरी को निष्पादित किए करें:
python3 cve_2026_92392_check.py \
--version-string 'curl 8.12.0 libcurl/8.12.0 nghttp2/1.61.0' \
--json
8.12.0 जैसा केवल एक संस्करण सत्यापित curl/libcurl पहचान प्रमाण के रूप में स्वीकार नहीं किया जाता है।
चेकर जानबूझकर रिमोट होस्ट से संपर्क नहीं करता है। बैनर को किसी अधिकृत प्रशासनिक चैनल के माध्यम से प्राप्त करें, उसे स्थानीय रूप से सहेजें, फिर उसका स्थानीय रूप से मूल्यांकन करें:
ssh [email protected] 'curl --version' > host-curl-version.txt
python3 cve_2026_92392_check.py \
--version-file host-curl-version.txt \
--http2-use unknown \
--untrusted-upload unknown \
--https-certificate unknown \
--json
यदि एप्लिकेशन समीक्षा या किसी विश्वसनीय ट्रेस से यह स्थापित होता है कि अपलोड HTTP/2 का उपयोग करते हैं, हमलावर-नियंत्रित एंडपॉइंट तक पहुँच सकते हैं, और उसका HTTPS प्रमाणपत्र स्वीकार करते हैं, तो उन तथ्यों को स्पष्ट रूप से प्रदान करें:
python3 cve_2026_92392_check.py \
--version-file host-curl-version.txt \
--http2-use yes \
--untrusted-upload yes \
--https-certificate yes \
--patch-state unknown \
--json
स्पष्टटेक्स्ट h2c के लिए, --https-certificate not-applicable का उपयोग करें।
--http2-use yes रनटाइम HTTP/2 उपयोग की पहचान करता है। यह यह सिद्ध नहीं करता कि
आर्टिफ़ैक्ट को HTTP/2 समर्थन के साथ संकलित किया गया था। इसी तरह, --untrusted-upload yes
एप्लिकेशन डेटा प्रवाह का वर्णन करता है, जबकि --https-certificate yes अलग HTTPS
ट्रस्ट स्थिति को रिकॉर्ड करता है।
खोजी गई फ़ाइलों को निष्पादित किए बिना माउंटेड कंटेनर इमेज, VM इमेज, या निकाले गए
फ़ाइलसिस्टम को स्कैन करने के लिए --root का उपयोग करें:
python3 cve_2026_92392_check.py \
--root /mnt/rootfs \
--json
रूट स्कैन:
curl, curl.exe, और libcurl आर्टिफ़ैक्ट्स की जाँच करता है।INDETERMINATE रह सकता है।बिल्ड निर्णय दो शर्तों द्वारा निर्धारित होता है: