Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-32722 — ब्लूमबर्ग मेम्रे में अनएस्केप्ड कमांड-लाइन मेटाडेटा के माध्यम से संग्रहीत XSS | Kitploit
उपकरण/GitHubGitHub/0xmrma/cve-2026-32722
स्थैतिक कोड विश्लेषण (SAST)भेद्यता विश्लेषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगपेपर और शोधलर्निंग और शिक्षा
GitHub0xmrma/cve-2026-32722

CVE-2026-32722

ब्लूमबर्ग मेम्रे में अनएस्केप्ड कमांड-लाइन मेटाडेटा के माध्यम से संग्रहीत XSS

रिपॉजिटरी देखें
14 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-32722

ब्लूमबर्ग Memray की अनएस्केप्ड कमांड-लाइन मेटाडेटा के माध्यम से स्टोर्ड XSS

परिचय

मैंने यह समस्या Memray की समीक्षा करते समय पाई, जो Bloomberg का Python मेमोरी प्रोफाइलर है, और मन में एक सरल प्रश्न था:

क्या आक्रमणकारी-नियंत्रित रनटाइम मेटाडेटा असुरक्षित रूप से ब्राउज़र-रेंडर्ड रिपोर्ट आउटपुट में प्रवेश कर सकता है?

इस मामले में, उत्तर हाँ था।

बग Memray के HTML रिपोर्ट जनरेशन पथ में था, जहाँ कमांड-लाइन मेटाडेटा को बिना एस्केपिंग के ब्राउज़र में खोली गई रिपोर्ट में रेंडर किया गया था। इसने एक ऑपरेशनल फ़ील्ड को एक्ज़ीक्यूटेबल HTML सिंक में बदल दिया और अंततः CVE-2026-32722 बन गया।

प्रोजेक्ट: GitHub पर Memray
एडवाइज़री: GHSA-r5pr-887v-m2w9 /CVE-2026-32722

photo0

आक्रमण श्रृंखला

attacker-controlled argv → metadata.command_line → HTML template sink without escaping → raw markup in generated report → browser-side JavaScript execution


Memray क्या करता है

Memray एक Python मेमोरी प्रोफाइलर है।

यह Python प्रोसेस को इंस्ट्रूमेंट करता है, आवंटन व्यवहार रिकॉर्ड करता है, और रिपोर्ट तैयार करता है जो डेवलपर्स को समझने में मदद करती हैं:

  • मेमोरी कहाँ आवंटित होती है
  • कौन से कॉल पाथ जिम्मेदार हैं
  • पीक मेमोरी उपयोग कैसा दिखता है
  • समय के साथ मेमोरी कैसे बदलती है

उनमें से कुछ रिपोर्ट HTML के रूप में उत्सर्जित होती हैं और ब्राउज़र में खोली जाती हैं।

यह रिपोर्ट जनरेशन को एक वास्तविक सुरक्षा सीमा बनाता है।

प्रासंगिक प्रश्न यह नहीं है कि Memray एक “लोकल टूल” है या नहीं।
प्रासंगिक प्रश्न यह है कि क्या आक्रमणकारी-नियंत्रित डेटा असुरक्षित रूप से ब्राउज़र-रेंडर्ड आउटपुट में प्रवेश कर सकता है।

इस मामले में, यह कर सकता था।


यह बग देखने लायक क्यों था

बहुत से लोग डेवलपर टूलिंग को कम आंकते हैं।

यह एक गलती है।

जब कोई टूल:

  • रनटाइम मेटाडेटा रिकॉर्ड करता है,
  • आक्रमणकारी-प्रभावित मान संग्रहीत करता है,
  • और बाद में उन्हें HTML में रेंडर करता है,

तो वह एक वेब एप्लिकेशन के समान आउटपुट-एन्कोडिंग जोखिम प्राप्त कर लेता है।

यही यहाँ की मुख्य समस्या थी।

यह बग प्रोफाइलिंग लॉजिक में नहीं था। यह आवंटन ट्रैकिंग में नहीं था। यह नेटिव मेमोरी हैंडलिंग में नहीं था।

यह एक क्लासिक ट्रस्ट-बाउंड्री विफलता थी:

  • अविश्वसनीय मेटाडेटा सिस्टम में प्रवेश किया,
  • HTML सिंक में पहुँचा,
  • और बिना एस्केपिंग के रेंडर हुआ।

वास्तविक कमज़ोरी पैदा करने के लिए यह पर्याप्त है।


वह सीमा जिस पर मैंने ध्यान केंद्रित किया

मैंने Memray तक रैंडम CLI विकल्पों को फज़ करके या क्रैश का पीछा करके नहीं पहुँचा।

सबसे मज़बूत तरीका पहले उच्चतम-संभावना वाली सुरक्षा सतह की पहचान करना था।

Memray के लिए, वह HTML रिपोर्ट जनरेशन था।

क्यों?

क्योंकि HTML आउटपुट एक ब्राउज़र सिंक पेश करता है, और ब्राउज़र सिंक सामान्य मेटाडेटा बग को सुरक्षा समस्याओं में बदल देते हैं यदि:

  • इनपुट आक्रमणकारी-प्रभावित हो,
  • आउटपुट अनएस्केप्ड हो,
  • और ब्राउज़र परिणाम को टेक्स्ट के बजाय मार्कअप के रूप में व्याख्या करता है।

यहाँ ठीक यही हुआ।


मूल कारण

बग दो पंक्तियों में सिमट जाता है।

इसमें:

root@kitploit:~
def get_render_environment() -> jinja2.Environment:
    loader = jinja2.PackageLoader("memray.reporters")
    env = jinja2.Environment(loader=loader)

Jinja एन्वायरनमेंट बिना autoescape के बनाया गया है।

फिर इसमें:

root@kitploit:~
Command line: <code>{{ metadata.command_line }}</code><br>

metadata.command_line को सीधे HTML में रेंडर किया जाता है।

यही पूरी कमज़ोरी है।

यह शोषणीय क्यों है

क्योंकि metadata.command_line आक्रमणकारी-प्रभावित है।

Memray प्रोफाइल किए गए प्रोग्राम को चलाने के लिए उपयोग की गई कमांड लाइन रिकॉर्ड करता है।

इसका मतलब है कि argv से उपयोगकर्ता-नियंत्रित मान मेटाडेटा के रूप में संरक्षित रहते हैं और बाद में रिपोर्ट में डाले जाते हैं।

तो शोषण श्रृंखला सीधी है:

  • आक्रमणकारी कमांड-लाइन सामग्री को नियंत्रित करता है
  • Memray इसे metadata.command_line में संग्रहीत करता है
  • टेम्पलेट इसे HTML में उत्सर्जित करता है
  • एन्वायरनमेंट इसे autoescape नहीं करता
  • ब्राउज़र इसे लाइव मार्कअप के रूप में पार्स करता है

यह मेटाडेटा को एक्ज़ीक्यूटेबल ब्राउज़र सामग्री में बदल देता है।


यह सिर्फ खराब रेंडरिंग नहीं, बल्कि सुरक्षा समस्या क्यों है

महत्वपूर्ण अंतर एक्ज़ीक्यूशन है।

कई बग विकृत HTML उत्पन्न करते हैं। अकेला यह पर्याप्त नहीं है।

यहाँ, आक्रमणकारी-नियंत्रित सामग्री केवल पेज सोर्स में दिखाई नहीं दे रही थी। इसे ब्राउज़र द्वारा सक्रिय HTML के रूप में व्याख्या किया गया और JavaScript के रूप में निष्पादित किया गया।

यही अंतर है:

  • फ़ॉर्मेटिंग भ्रष्टाचार
  • और एक वास्तविक XSS सिंक

तो प्रश्न यह नहीं था:

“क्या HTML रिपोर्ट में प्रकट हो सकता है?”

असली प्रश्न था:

“क्या आक्रमणकारी-नियंत्रित HTML रिपोर्ट खोले जाने पर एक्ज़ीक्यूटेबल बन सकता है?”

उत्तर हाँ था।


PoC

मेरे शुरुआती रिप्रोड्यूसर ने एक स्पष्ट स्क्रिप्ट और एक आक्रमणकारी-नियंत्रित तर्क का उपयोग किया:

root@kitploit:~
cat > victim.py <<'PY'
x = [b"A" * 1024 for _ in range(1000)]
print("done")
PY

python -m memray run -o poc.bin victim.py ''
python -m memray flamegraph -o poc.html poc.bin

जनरेटेड HTML में कच्चा आक्रमणकारी-नियंत्रित मार्कअप था:

root@kitploit:~
Command line: <code>~/memray/src/memray/__main__.py run -o poc.bin victim.py </code><br>

जनरेटेड रिपोर्ट को खोलने या रीफ्रेश करने से JavaScript निष्पादन ट्रिगर हुआ।

इसने मूल दावे को स्थापित किया:

  • मान अनएस्केप्ड था,
  • ब्राउज़र ने इसे मार्कअप के रूप में पार्स किया,
  • और सिंक एक्ज़ीक्यूटेबल था।

बाद में, समन्वित प्रकटीकरण के दौरान, मेंटेनर ने रिप्रोड्यूसर को और सरल बना दिया:

root@kitploit:~
python -m memray run -o poc.bin -c '# '

यह संस्करण बेहतर है क्योंकि यह कमज़ोर सीमा को अधिक सीधे अलग करता है:

  • कोई अतिरिक्त फ़ाइल नहीं
  • कोई अतिरिक्त एप्लिकेशन लॉजिक नहीं
  • केवल आक्रमणकारी-नियंत्रित कमांड-लाइन सामग्री रिपोर्ट पाइपलाइन में प्रवेश करती है

पेलोड क्यों चुना गया

पेलोड जानबूझकर सरल था:

root@kitploit:~

यह आकर्षक पेलोड के बारे में नहीं है।

यह एक स्वच्छ निष्पादन जांच है क्योंकि:

  • इसे किसी बाहरी इंफ्रास्ट्रक्चर की आवश्यकता नहीं होती
  • यह रेंडर्ड HTML में स्पष्ट दिखता है
  • यह तुरंत HTML व्याख्या साबित करता है
  • यह रिमोट सामग्री पर निर्भर हुए बिना ब्राउज़र-साइड निष्पादन साबित करता है

इस प्रकार के बग के लिए, यह पर्याप्त है।


स्कोप सत्यापन

समस्या को उचित ठहराने के लिए एक रिपोर्ट प्रकार पहले से ही पर्याप्त होता।

लेकिन मैं जानना चाहता था कि यह अलग-थलग था या संरचनात्मक।

मैंने निम्नलिखित में समान व्यवहार की पुष्टि की:

  • flamegraph रिपोर्ट
  • टेबल रिपोर्ट
  • --no-web के साथ जनरेट की गई flamegraph रिपोर्ट

यह दो कारणों से महत्वपूर्ण था।

पहला

इसने दिखाया कि कमज़ोर सिंक कई HTML आउटपुट में पुनः उपयोग किया गया था।

दूसरा

इसने साबित किया कि बग बाहरी CDN-होस्टेड एसेट्स पर निर्भर नहीं था।

--no-web ने अभी भी समस्या को पुनः उत्पन्न किया, जिसका मतलब है कि समस्या Memray के स्वयं के जनरेटेड HTML और टेम्पलेट हैंडलिंग में थी, रिमोट JS व्यवहार में नहीं।

इसने मामले को और मज़बूत बना दिया।


इसे लो गंभीरता के रूप में वर्गीकृत क्यों किया गया

मेंटेनर की मुख्य चिंता व्यावहारिक आक्रमणकारी नियंत्रण थी।

यह उचित है।

यह उस प्रकार की समस्या नहीं है जहाँ एक अनप्रमाणित रिमोट आक्रमणकारी एक खुले HTTP एंडपॉइंट पर हमला करता है और तुरंत प्रभाव प्राप्त करता है।

शोषण की स्थिति संकीर्ण है:

  • आक्रमणकारी कमांड-लाइन इनपुट को प्रभावित करता है
  • एक पीड़ित बाद में जनरेटेड रिपोर्ट को ब्राउज़र में खोलता है

इसलिए यथार्थवादी वर्गीकरण लो गंभीरता था।

यह इसे एक कमज़ोर बग नहीं बनाता।

गंभीरता शोषण की स्थितियों और संभावित प्रभाव के बारे में है। वैधता इस बारे में है कि समस्या वास्तविक है या नहीं।

यह समस्या स्पष्ट रूप से वास्तविक थी:

  • आक्रमणकारी-नियंत्रित स्रोत
  • HTML सिंक
  • अनुपस्थित एस्केपिंग
  • वास्तविक JavaScript निष्पादन
  • डिटर्मिनिस्टिक फिक्स

इसीलिए यह अभी भी एक CVE बन गया।


फिक्स विश्लेषण

फिक्स न्यूनतम और सही था।

मेंटेनर ने बदला:

root@kitploit:~
{{ metadata.command_line }}

को:

root@kitploit:~
{{ metadata.command_line|e }}

यह सही फिक्स है क्योंकि यह कमज़ोर सिंक को सीधे संबोधित करता है।

इसके बजाय कच्चा मार्कअप उत्सर्जित करने के:

root@kitploit:~

टेम्पलेट अब एस्केप्ड टेक्स्ट उत्सर्जित करता है:

root@kitploit:~
&lt;img src=x onerror=alert(1)&gt;

यह कमांड-लाइन फ़ील्ड के सूचनात्मक मूल्य को संरक्षित करता है जबकि ब्राउज़र निष्पादन पथ को हटा देता है।

मेंटेनर ने शेष टेम्पलेट संदर्भ की भी समीक्षा की और निष्कर्ष निकाला कि:

  • कई फ़ील्ड संख्यात्मक थे
  • कुछ स्ट्रिंग्स पूरी तरह से Memray द्वारा नियंत्रित थीं
  • स्क्रिप्ट-बाउंड मान |tojson के साथ रेंडर किए गए थे

इसलिए समस्या को सही ढंग से metadata.command_line तक सीमित कर दिया गया।

वास्तविक प्रकटीकरण में आप ठीक इसी तरह की फिक्स समीक्षा चाहते हैं।


प्रकटीकरण

यह GitHub Security Advisories के माध्यम से निजी रूप से रिपोर्ट किया गया था।

मेंटेनर्स ने:

  • समस्या को मान्य किया
  • सहमति दी कि यह उनका बग था जिसे ठीक करना था
  • रिप्रोड्यूसर को सरल बनाया
  • कमज़ोर सिंक को पैच किया
  • 1.19.2 में फिक्स जारी किया
  • CVE का अनुरोध किया
  • एडवाइज़री प्रकाशित की

समस्या को सौंपा गया: CVE-2026-32722


यह बग वास्तव में क्या सिखाता है

यहाँ मुख्य सबक सरल है:

मेटाडेटा केवल इसलिए स्वचालित रूप से विश्वसनीय नहीं होता क्योंकि यह ऑपरेशनल दिखता है।

  • एक कमांड लाइन हानिरहित लगती है।
  • एक रिपोर्ट मोडल हानिरहित लगता है।
  • एक लोकल HTML फ़ाइल हानिरहित लगती है।

जब आक्रमणकारी-नियंत्रित सामग्री बिना एस्केपिंग के ब्राउज़र-रेंडर्ड आउटपुट में प्रवेश कर जाती है, तो इनमें से कुछ भी मायने नहीं रखता।

जिस क्षण कोई टूल HTML उत्सर्जित करता है, उसे HTML-उत्पादक एप्लिकेशन की तरह माना जाना चाहिए।

यही वास्तविक निष्कर्ष है।


मुख्य बिंदु

  • HTML रिपोर्ट जनरेटर सुरक्षा सतह हैं
  • डेवलपर टूलिंग को अभी भी आउटपुट एन्कोडिंग अनुशासन की आवश्यकता है
  • लोकल रिपोर्ट आर्टिफैक्ट्स में वास्तविक XSS सिंक हो सकते हैं
  • टेम्पलेट्स में एस्केपिंग की कमी तब पर्याप्त होती है जब आक्रमणकारी-नियंत्रित मेटाडेटा सिंक तक पहुँचता है
  • लो गंभीरता का मतलब कम गुणवत्ता नहीं है
  • यहाँ सही मानसिकता ट्रस्ट बाउंड्री विश्लेषण थी, अंधा फज़िंग नहीं

अंतिम शब्द

यह कमज़ोरी किसी चतुर पेलोड के बारे में नहीं थी।

यह सही सीमा की पहचान करने के बारे में थी।

Memray ने आक्रमणकारी-प्रभावित कमांड-लाइन मेटाडेटा लिया और इसे बिना एस्केपिंग के जनरेटेड HTML में रेंडर कर दिया।

बाकी काम ब्राउज़र ने किया।

इसीलिए यह CVE-2026-32722 बन गया।

Memray 1.19.2 में फिक्स किया गया।

photo0
टूल डाउनलोड करें