
CVE-2026-30691: @cyntler/react-doc-viewer में संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
[Suggested description]
Cross-Site Scripting (XSS) vulnerability in @cyntler/react-doc-viewer v1.17.1 allows remote attackers to execute arbitrary JavaScript via a crafted .txt file. The TXTRenderer component fails to sanitize file content and explicitly casts raw data as a ReactNode.
[Additional Information]
"The TXTRenderer is used by default for any text-based files. Since the library is widely used in React applications to preview user-uploaded content, this vulnerability poses a significant risk for applications that do not strictly validate file contents before passing them to the viewer."
[Vulnerability Type] Cross Site Scripting (XSS)
[Vendor of Product] cyntler
[Affected Product Code Base] @cyntler/react-doc-viewer - 1.17.1
[Affected Component] src/renderers/txt/index.tsx
[Attack Type] Remote
[Impact Code execution] true
[Impact Information Disclosure] true
[Attack Vectors]
"An attacker must provide a specially crafted .txt file containing malicious HTML or JavaScript code. When the victim opens this file using the DocViewer component, the script executes in their browser."
[Reference] https://github.com/cyntler/react-doc-viewer/issues/317
[Discoverer] Walid Riouah
Use CVE-2026-30691.
-----BEGIN PGP SIGNATURE-----
-----END PGP SIGNATURE-----
@cyntler/react-doc-viewer पैकेज (v1.17.1) में एक संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS) भेद्यता पाई गई। यह भेद्यता TXTRenderer घटक में मौजूद है, जो .txt फ़ाइलों की कच्ची सामग्री को बिना किसी स्वच्छता या एंटिटी एस्केपिंग के सीधे ReactNode के रूप में डालता है।
src/renderers/txt/index.tsx में:
{currentDocument?.fileData as ReactNode}
भेद्यता को पुन: उत्पन्न करने के लिए, निम्नलिखित स्पष्ट स्क्रिप्ट पेलोड के साथ exploit.txt नामक एक फ़ाइल बनाएं और इसे डॉक्यूमेंट व्यूअर घटक में लोड करें:
<h1 style="color: red;">Vulnerable!</h1>
<script>alert('XSS_SUCCESS'); document.body.style.background='red';</script>
<img src=x onerror="console.log('XSS_Executed_Successfully')">
हमलावर पीड़ित के ब्राउज़र संदर्भ में मनमाना JavaScript निष्पादित कर सकता है। इससे निम्नलिखित परिणाम हो सकते हैं:
गतिशील टेक्स्ट इनपुट को प्रस्तुत करने से पहले DOMPurify जैसी HTML स्वच्छता लाइब्रेरी का उपयोग करके स्वच्छ करें, या कच्चे स्ट्रिंग इनपुट को ReactNode ऑब्जेक्ट में अनसुरक्षित कास्टिंग से बचें:
import DOMPurify from 'dompurify';
const sanitizedHTML = DOMPurify.sanitize(currentDocument?.fileData);
return <div dangerouslySetInnerHTML={{ __html: sanitizedHTML }} />;
सलाह Walid Riouah (साइबर सुरक्षा अनुसंधानकर्ता और रेड टीम सदस्य) द्वारा क्यूरेट की गई