हैप्पी DOM ECMAScriptModuleCompiler: अस्वच्छ निर्यात नाम निष्पादन योग्य कोड के रूप में इंटरपोलेट किए जाते हैं
प्लेटफ़ॉर्म
nodejs
कॉम्पोनेन्ट
happy-dom
ठीक किया गया
20.8.8
### सारांश `ECMAScriptModuleCompiler` में एक कोड इंजेक्शन (code injection) भेद्यता हमलावर को हैप्पी-डोम (happy-dom) द्वारा संसाधित ES मॉड्यूल स्क्रिप्ट में `export { }` घोषणाओं के अंदर मनमाना जावास्क्रिप्ट (JavaScript) एक्सप्रेशन (expression) इंजेक्ट करके रिमोट कोड एक्जीक्यूशन (Remote Code Execution (RCE)) प्राप्त करने की अनुमति देती है। कंपाइलर (compiler) सीधे उत्पन्न कोड में निष्पादन योग्य एक्सप्रेशन (expression) के रूप में अस्वच्छ सामग्री को इंटरपोलेट (interpolate) करता है, और उद्धरण फ़िल्टर (quote filter) बैकटिक (backtick) को नहीं हटाता है, जिससे टेम्पलेट लिटरल (template literal) आधारित पेलोड (payload) सैनिटाइजेशन (sanitization) को बायपास (bypass) कर सकते हैं। ### विवरण **भेद्य फ़ाइल**: `packages/happy-dom/src/module/ECMAScriptModuleCompiler.ts`, लाइन 371-385 "एक्सपोर्ट ऑब्जेक्ट (Export object)" हैंडलर (handler) `export\s*{([^}]+)}` रेगएक्स (regex) का उपयोग करके `export { ... }` से सामग्री निकालता है, फिर इसे सीधे इंटरपोलेट (interpolate) करके निष्पादन योग्य कोड उत्पन्न करता है: } else if (match[16] && isTopLevel && PRECEDING_STATEMENT_TOKEN_REGEXP.test(precedingToken)) { // एक्सपोर्ट ऑब्जेक्ट (Export object) const parts = this.removeMultilineComments(match[16]).split(/\s*,\s*/); const exportCode: string[] = []; for (const part of parts) { const nameParts = part.trim().split(/\s+as\s+/); const exportName = (nameParts[1] || nameParts[0]).replace(/["']/g, ''); const import
कैसे ठीक करें
कोई आधिकारिक पैच उपलब्ध नहीं है। वैकल्पिक समाधान खोजें या अपडेट की निगरानी करें।
अपनी निर्भरताओं की स्वचालित निगरानी करें
जब नई कमज़ोरियाँ आपके प्रोजेक्ट को प्रभावित करें तो अलर्ट पाएं।
मुफ़्त शुरू करें