Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-42089 — एक स्थानीय पैकेज स्थापना सहायक ने कॉलर-आपूर्ति पैकेज नामों पर बहुत अधिक भरोसा किया। yeoman-environment में, लापता जनरेटर उपयोगकर्ता की पुष्टि के बिना स्थापित किए जा सकते हैं, जिससे हमलावर-नियंत्रित प्रोजेक्ट मेटाडेटा पैकेज-स्थापना और कोड-निष्पादन पथ में बदल जाता है। | Kitploit
उपकरण/GitHubGitHub/0xmrma/cve-2026-42089
भेद्यता विश्लेषणकोड विश्लेषणशोषणआपूर्ति श्रृंखला सुरक्षापेपर और शोधलर्निंग और शिक्षा
GitHub0xmrma/cve-2026-42089

CVE-2026-42089

एक स्थानीय पैकेज स्थापना सहायक ने कॉलर-आपूर्ति पैकेज नामों पर बहुत अधिक भरोसा किया। yeoman-environment में, लापता जनरेटर उपयोगकर्ता की पुष्टि के बिना स्थापित किए जा सकते हैं, जिससे हमलावर-नियंत्रित प्रोजेक्ट मेटाडेटा पैकेज-स्थापना और कोड-निष्पादन पथ में बदल जाता है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-42089

एक स्थानीय पैकेज इंस्टॉलेशन हेल्पर ने कॉलर द्वारा प्रदान किए गए पैकेज नामों पर बहुत अधिक भरोसा किया। yeoman-environment में, लापता जनरेटर उपयोगकर्ता की पुष्टि के बिना स्थापित किए जा सकते थे, जिससे हमलावर-नियंत्रित प्रोजेक्ट मेटाडेटा पैकेज-इंस्टॉल और कोड-निष्पादन पथ में बदल गया।

परिचय

मुझे यह मुद्दा generator-jhipster की समीक्षा करते समय एक सरल सुरक्षा प्रश्न के साथ मिला:

क्या हमलावर-नियंत्रित प्रोजेक्ट मेटाडेटा एक डेवलपर टूल को तीसरे पक्ष का कोड लाने और निष्पादित करने के लिए मजबूर कर सकता है, इससे पहले कि उपयोगकर्ता स्पष्ट रूप से ऐसा करने के लिए कहे?

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

जो शुरू में JHipster मुद्दा लग रहा था, वह yeoman-environment में एक गहरे अपस्ट्रीम मूल कारण के रूप में सामने आया।

कमजोर व्यवहार Yeoman के स्थानीय जनरेटर इंस्टॉलेशन फ्लो में था, जहां कॉलर द्वारा प्रदान किए गए लापता पैकेज उपयोगकर्ता की पुष्टि के बिना स्वचालित रूप से स्थापित हो जाते थे। एक डाउनस्ट्रीम उपभोक्ता में जो हमलावर-नियंत्रित पैकेज नामों को उस पथ में पास करता था, यह एक वास्तविक पैकेज-इंस्टॉलेशन और कोड-निष्पादन श्रृंखला बनाने के लिए पर्याप्त था।

That issue became CVE-2026-42089.

yeoman-environment: GitHub पर yeoman-environment
Package: yeoman-environment (npm)
CVE: CVE-2026-42089

इसने yeoman-environment को प्रभावित किया, जो Yeoman के जनरेटर-लोडिंग और बूटस्ट्रैपिंग फ्लो के पीछे का रनटाइम लेयर है। आधिकारिक प्रोजेक्ट इसे जनरेटर जीवनचक्र और खोज को संभालने वाले घटक के रूप में वर्णित करता है, और 26 जून, 2026 तक, npm पैकेज पेज ने 1,466,426 साप्ताहिक डाउनलोड सूचीबद्ध किए, जो इसे जावास्क्रिप्ट टूलिंग इकोसिस्टम में व्यापक रूप से तैनात पैकेज बनाता है।

photo0

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

attacker-controlled project config -> caller-supplied generator package names -> yeoman-environment silently installs missing packages -> downstream tool loads installed generator code -> package installation and code execution during CLI bootstrap


yeoman-environment क्या करता है

yeoman-environment Yeoman-आधारित टूलिंग के पीछे का रनटाइम और जनरेटर-लोडिंग लेयर है।

अन्य चीजों के अलावा, यह संभालता है:

  • जनरेटर लुकअप
  • स्थानीय रिपॉजिटरी प्रबंधन
  • लापता जनरेटर के लिए पैकेज इंस्टॉलेशन
  • जनरेटर का पंजीकरण और लोडिंग

इसका मतलब है कि यह सीधे एक विश्वास सीमा पर बैठता है।

प्रासंगिक प्रश्न यह नहीं है कि Yeoman "सिर्फ एक स्थानीय उपकरण" है या नहीं।

प्रासंगिक प्रश्न यह है कि क्या अविश्वसनीय इनपुट पैकेज स्थापना और कोड लोडिंग व्यवहार को प्रभावित कर सकता है।

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


यह सतह देखने लायक क्यों थी

मैं यहां मेमोरी भ्रष्टाचार या केवल क्रैश बग की तलाश में नहीं था।

मजबूत लक्ष्य एक्सटेंशन और पैकेज-समाधान सतह था।

कोई भी सिस्टम जो:

  • दूसरे लेयर से पैकेज नाम स्वीकार करता है,
  • उन्हें स्वचालित रूप से स्थापित करता है,
  • और फिर उन्हें लोड करने के लिए उपलब्ध कराता है,

करीबी जांच का हकदार है।

यह विशेष रूप से तब सच है जब डाउनस्ट्रीम उपभोक्ता उन पैकेज नामों को प्रोजेक्ट-स्थानीय डेटा से प्राप्त कर सकता है।

यह बिल्कुल वैसी जगह है जहां सामान्य कॉन्फ़िगरेशन चुपचाप एक सुरक्षा सीमा बन सकता है।

यह देखने के लिए सही जगह थी।


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

मैंने पहले generator-jhipster के माध्यम से व्यवहार को पुन: उत्पन्न किया।

महत्वपूर्ण पथ था:

  • एक प्रोजेक्ट-स्थानीय .yo-rc.json एक ब्लूप्रिंट पैकेज घोषित करता है
  • JHipster CLI बूटस्ट्रैप के दौरान उस ब्लूप्रिंट प्रविष्टि को पढ़ता है
  • लापता ब्लूप्रिंट पैकेज Yeoman के इंस्टॉल पथ में पास किए जाते हैं
  • Yeoman उन्हें चुपचाप स्थापित करता है
  • डाउनस्ट्रीम लॉजिक फिर ब्लूप्रिंट CLI मॉड्यूल आयात करता है

इसका मतलब था कि एक सौम्य कमांड भी जैसे:

jhipster --help

अनुरोधित कमांड पूर्ण होने से पहले पैकेज इंस्टॉलेशन तक पहुँच सकता था।

यह एक वास्तविक विश्वास-सीमा विफलता है।

डाउनस्ट्रीम ट्रिगर ने इसे उजागर करने में मदद की, लेकिन असुरक्षित डिफ़ॉल्ट व्यवहार Yeoman में था।


मूल कारण

बग सरल था।

yeoman-environment में, कमजोर विधि थी:

async installLocalGenerators(packages) {
    const entries = Object.entries(packages);
    const specs = entries.map(([packageName, version]) => `${packageName}${version ? `@${version}` : ''}`);
    const installResult = await this.repository.install(specs);
    const failToInstall = installResult.find(result => !result.path);
    if (failToInstall) {
        throw new Error(`Fail to install ${failToInstall.pkgid}`);
    }
    await this.lookup({ packagePaths: installResult.map(result => result.path) });
    return true;
}

वह विधि कॉलर द्वारा प्रदान किए गए पैकेज नामों को सीधे इसके माध्यम से स्थापित करती थी:

this.repository.install(specs)

बिना पहले उपयोगकर्ता से पूछे।

यह मुख्य कमजोरी है।

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

क्योंकि पैकेज नामों को किसी विश्वसनीय स्रोत से आने की आवश्यकता नहीं है।

यदि कोई डाउनस्ट्रीम उपभोक्ता उन्हें हमलावर-नियंत्रित प्रोजेक्ट मेटाडेटा से प्राप्त करता है, तो शोषण श्रृंखला सीधी है:

  • हमलावर अप्रत्यक्ष रूप से पैकेज नामों को नियंत्रित करता है
  • डाउनस्ट्रीम टूल उन्हें Yeoman को पास करता है
  • Yeoman उन्हें चुपचाप स्थापित करता है
  • डाउनस्ट्रीम कोड नए स्थापित पैकेज के साथ जारी रहता है जो लोड करने के लिए उपलब्ध है

यह सिर्फ "पैकेज इंस्टॉल हुआ" नहीं है।

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


यह एक सुरक्षा मुद्दा क्यों बनाता है, सिर्फ उपकरण व्यवहार नहीं

महत्वपूर्ण अंतर अविश्वसनीय इनपुट से मौन स्थापना है।

एक वास्तविक अंतर है:

  • एक उपयोगकर्ता स्पष्ट रूप से एक पैकेज स्थापित करने का निर्णय लेता है, और
  • एक ढांचा चुपचाप एक पैकेज स्थापित करता है क्योंकि प्रोजेक्ट-स्थानीय डेटा ने कॉलर को इसके लिए पूछने के लिए प्रेरित किया

वह अंतर तब और भी मायने रखता है जब पैकेज तुरंत बाद लोड करने योग्य हो जाता है।

मुद्दा यह नहीं था कि तृतीय-पक्ष जनरेटर मौजूद हैं।

मुद्दा यह था कि Yeoman ने कॉलर द्वारा प्रदान किए गए पैकेज नामों को उपयोगकर्ता की पुष्टि के बिना डिफ़ॉल्ट रूप से स्थापित करने योग्य माना।

यह असुरक्षित डाउनस्ट्रीम विश्वास धारणाओं को काफी खराब बनाता है।

यही कारण है कि फिक्स ने एक पुष्टि गेट जोड़ा।


PoC

मैंने दो स्तरों के प्रमाण का उपयोग किया क्योंकि उन्होंने मूल कारण और वास्तविक डाउनस्ट्रीम प्रभाव दोनों का प्रदर्शन किया।

PoC 1: मूल डाउनस्ट्रीम ट्रिगर

पहला प्रमाण अपरिवर्तित generator-jhipster का उपयोग करता था।

मैंने एक प्रोजेक्ट बनाया जिसमें एक रूट .yo-rc.json था जो एक ब्लूप्रिंट पैकेज को संदर्भित करता था जो पहले से स्थापित नहीं था, फिर चलाया:

jhipster --help

इसके कारण JHipster ने हेल्प पूर्ण होने से पहले लापता ब्लूप्रिंट को Yeoman के स्थानीय जनरेटर इंस्टॉलेशन फ्लो में पास कर दिया।

महत्वपूर्ण परिणाम था:

  • एक हानिरहित दिखने वाला कमांड पैकेज समाधान और स्थापना व्यवहार तक पहुंच गया
  • प्रोजेक्ट-स्थानीय मेटाडेटा इंस्टॉल पथ को ट्रिगर करने के लिए पर्याप्त था

इसने वास्तविक ट्रिगर स्थिति को स्पष्ट रूप से स्थापित किया।

PoC 2: नियंत्रित पैकेज निष्पादन पथ

दूसरे प्रमाण में एक नियंत्रित स्थानीय रजिस्ट्री और एक पैकेज का उपयोग किया गया जो आयात-समय के दुष्प्रभावों को सुरक्षित रूप से प्रदर्शित करने के लिए डिज़ाइन किया गया था।

यह मायने रखता था क्योंकि मैं मजबूत कहानी दिखाना चाहता था:

  • प्रोजेक्ट-स्थानीय मेटाडेटा पैकेज चयन को प्रभावित करता है
  • Yeoman पैकेज को चुपचाप स्थापित करता है
  • डाउनस्ट्रीम लॉजिक स्थापित ब्लूप्रिंट CLI मॉड्यूल लोड करता है
  • बूटस्ट्रैप के दौरान कोड निष्पादन पहुंच योग्य हो जाता है

यह सबसे मजबूत साक्ष्य श्रृंखला थी क्योंकि इसने मुद्दे को आगे बढ़ाया:

"अप्रत्याशित स्थापना प्रयास"

और इसमें:

"इंस्टॉल प्लस डाउनस्ट्रीम कोड-लोडिंग पथ वास्तव में पहुंच योग्य है"

यह वह बिंदु है जहां विश्वास-सीमा विफलता को खारिज करना बहुत कठिन हो जाता है।


PoCs को इस तरह क्यों चुना गया

पहला PoC मौन स्थापना व्यवहार साबित करता है।

दूसरा PoC साबित करता है कि वह व्यवहार क्यों मायने रखता है।

यह विभाजन महत्वपूर्ण था।

एक रिपोर्ट जो यहीं रुक जाती है:

"एक पैकेज स्थापित किया जा सकता है"

एक ऐसी रिपोर्ट से कमजोर है जो दिखाती है:

  • हमलावर-नियंत्रित इनपुट इंस्टॉल पथ तक पहुंचता है
  • स्थापना बिना पुष्टि के होती है
  • डाउनस्ट्रीम लॉजिक कोड निष्पादन को पहुंच योग्य बनाता है

यह पूरी कहानी है।


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