
CVE-2026-9809 एक Stored Cross-Site Scripting (Stored XSS) भेद्यता है जो Mautic 7 (संस्करण 7.0.0 से 7.1.1) को प्रभावित करती है।
CVE-2026-9809 एक स्टोर्ड क्रॉस-साइट स्क्रिप्टिंग (Stored XSS) भेद्यता है जो Mautic 7 (संस्करण 7.0.0 से 7.1.1 तक) को प्रभावित करती है। यह दोष Projects घटक में मौजूद है, जहाँ प्रोजेक्ट नामों को प्रशासनिक पृष्ठों (जैसे कैंपेन, ईमेल और फॉर्म) पर टैग और होवर पॉपओवर के रूप में उचित आउटपुट सैनिटाइज़ेशन के बिना प्रदर्शित किया जाता है। प्रोजेक्ट बनाने या संपादित करने की अनुमति रखने वाला एक प्रमाणित उपयोगकर्ता प्रोजेक्ट नाम में दुर्भावनापूर्ण HTML/JavaScript संग्रहीत कर सकता है। जब कोई व्यवस्थापक बाद में उस प्रोजेक्ट से जुड़ी किसी इकाई को देखता है और उसके टैग पर होवर करता है, तो दुर्भावनापूर्ण स्क्रिप्ट व्यवस्थापक के ब्राउज़र में निष्पादित हो जाती है।
| गुण | मान |
|---|---|
| उत्पाद | Mautic |
| प्रभावित संस्करण | 7.0.0 – 7.1.1 |
| सुधारा गया संस्करण | 7.1.2 |
| प्रभावित घटक | प्रोजेक्ट्स (टैग और पॉपओवर) |
एप्लिकेशन प्रमाणित उपयोगकर्ताओं द्वारा प्रदान किए गए प्रोजेक्ट नामों को संग्रहीत करता है। बाद में, जब प्रोजेक्ट टैग और पॉपओवर सामग्री को प्रशासनिक पृष्ठों पर प्रस्तुत किया जाता है, तो संग्रहीत मान को उचित आउटपुट एन्कोडिंग या सैनिटाइज़ेशन के बिना HTML में डाला जाता है।
अवधारणात्मक रूप से:
User creates project
│
▼
Project name stored in database
│
▼
Administrator opens Campaign / Email / Form
│
▼
Project tag & popover rendered
│
▼
Project name inserted into HTML without sanitization
│
▼
Browser executes embedded JavaScript
प्रोजेक्ट नाम को सादे पाठ के रूप में मानने के बजाय, ब्राउज़र इसे HTML के रूप में व्याख्या करता है, जिससे एम्बेडेड JavaScript को निष्पादित होने दिया जाता है।
Attacker
│
▼
Creates a project with a malicious project name
│
▼
Payload stored in database
│
▼
Administrator views Campaign / Email / Form
│
▼
Administrator hovers over the project tag
│
▼
Popover renders unsanitized project name
│
▼
Browser executes JavaScript
│
▼
Actions performed with administrator's privileges
मान लीजिए कि एक प्रमाणित उपयोगकर्ता एक ऐसा प्रोजेक्ट बनाता है जिसके नाम में सामान्य पाठ के बजाय HTML शामिल है।
प्रोजेक्ट सफलतापूर्वक सहेज लिया जाता है, क्योंकि एप्लिकेशन इनपुट पर प्रोजेक्ट नाम को सैनिटाइज़ नहीं करता है।
बाद में, एक व्यवस्थापक उस प्रोजेक्ट से जुड़ा एक कैंपेन खोलता है। जब व्यवस्थापक प्रोजेक्ट के टैग पर होवर करता है, तो एप्लिकेशन संग्रहीत प्रोजेक्ट नाम का उपयोग करके एक पॉपओवर उत्पन्न करता है। चूँकि सामग्री को उचित आउटपुट एन्कोडिंग के बिना पृष्ठ में डाला जाता है, ब्राउज़र इसे सादे पाठ के बजाय HTML के रूप में व्याख्या करता है, जिससे एम्बेडेड JavaScript व्यवस्थापक के सत्र में निष्पादित हो जाता है।
सफल शोषण से एक हमलावर निम्नलिखित कार्य कर सकता है:
यह भेद्यता मुख्य रूप से गोपनीयता और अखंडता को प्रभावित करती है।
| मीट्रिक | स्कोर |
|---|---|
| CVSS v3.1 (CNA) | 7.6 (उच्च) |
NVD ने अभी तक अपना स्वयं का CVSS मूल्यांकन प्रकाशित नहीं किया है; वर्तमान स्कोर Mautic CNA द्वारा प्रदान किया गया है।
नोट: विक्रेता ने सटीक संवेदनशील स्रोत कोड प्रकाशित नहीं किया है। निम्नलिखित भेद्यता पैटर्न को दर्शाता है।
// Project name retrieved from the server
const projectName = response.project.name;
// Unsafe: inserts user-controlled HTML
popover.innerHTML = `
<span class="project-tag">
${projectName}
</span>
`;
innerHTML के कारण ब्राउज़र संग्रहीत प्रोजेक्ट नाम को HTML के रूप में पार्स करता है। यदि प्रोजेक्ट नाम में JavaScript इवेंट हैंडलर वाले HTML तत्व शामिल हैं, तो ब्राउज़र पॉपओवर प्रस्तुत करते समय उन्हें निष्पादित करता है।
const tag = document.createElement("span");
tag.className = "project-tag";
// Safe: treat input as plain text
tag.textContent = response.project.name;
popover.replaceChildren(tag);
textContent का उपयोग यह सुनिश्चित करता है कि प्रोजेक्ट नाम को HTML के बजाय शाब्दिक पाठ के रूप में माना जाए। कोई भी HTML विशेष वर्ण ब्राउज़र द्वारा व्याख्या किए जाने के बजाय प्रदर्शित किए जाते हैं, जिससे एम्बेडेड स्क्रिप्ट का निष्पादन रुक जाता है। जहाँ HTML रेंडरिंग आवश्यक हो, डेवलपर्स को अविश्वसनीय सामग्री को सम्मिलित करने से पहले एक अच्छी तरह से बनाए रखे गए HTML सैनिटाइज़र का उपयोग करके सैनिटाइज़ करना चाहिए।