IPBUF安全漏洞报告
English
CVE-2026-30691 CVSS 6.1 中危

CVE-2026-30691 react-doc-viewer存储型XSS漏洞

披露日期: 2026-05-20

漏洞信息

漏洞编号
CVE-2026-30691
漏洞类型
XSS (跨站脚本攻击)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
@cyntler/react-doc-viewer

相关标签

XSSreact-doc-viewerReact前端安全CVE-2026-30691

漏洞概述

CVE-2026-30691 是 @cyntler/react-doc-viewer v1.17.1 版本中的跨站脚本漏洞。该漏洞源于 TXTRenderer 组件处理 .txt 文件时未过滤内容,直接将原始数据转为 ReactNode 渲染。攻击者可通过上传包含恶意 JS 的特制文本文件,诱导受害者查看以执行任意脚本。此漏洞可能导致用户数据泄露或会话劫持,危害较大。

技术细节

该漏洞的技术核心在于 @cyntler/react-doc-viewer 库中 TXTRenderer 组件对数据流处理的不当。通常情况下,React 会自动对插值数据进行 HTML 实体编码,从而阻断 XSS 攻击。然而,该组件在渲染 .txt 文件内容时,使用了不安全的类型转换方式,直接将未经过滤的字符串作为 ReactNode 渲染。这种处理方式等同于在 Vue 中使用 v-html 或在 React 中使用 dangerouslySetInnerHTML,且没有任何白名单过滤机制。攻击者利用此特性,可以构造包含恶意脚本标签(如 <script>)或事件处理器(如 onerror、onload)的文本文件。一旦受害者访问包含该文件的页面,浏览器便会解析这些恶意代码。由于漏洞涉及前端渲染逻辑,攻击者可借此窃取用户的 Session Token、本地存储数据,甚至结合 CSRF 进一步控制用户账户。

攻击链分析

STEP 1
侦察
攻击者确认目标应用使用了存在漏洞的 @cyntler/react-doc-viewer v1.17.1 组件,并且存在文件上传或预览功能。
STEP 2
武器化
攻击者创建一个名为 exploit.txt 的文件,其中包含用于触发 XSS 的恶意载荷(如 <img src=x onerror=alert(1)>)。
STEP 3
交付
攻击者通过应用程序的上传接口上传该恶意 .txt 文件,或将文件链接发送给受害者。
STEP 4
利用
当受害者使用应用预览该文本文件时,TXTRenderer 组件直接渲染恶意代码,导致浏览器执行攻击者指定的 JavaScript 脚本。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC Generator for CVE-2026-30691 import os def generate_malicious_txt(filename): # The payload exploits the TXTRenderer's lack of sanitization # and direct casting to ReactNode. payload = '<img src=x onerror=alert("CVE-2026-30691_PoC")>' with open(filename, 'w') as f: f.write(payload) print(f"[+] Malicious file '{filename}' created.") if __name__ == "__main__": generate_malicious_txt("exploit.txt")

影响范围

@cyntler/react-doc-viewer <= 1.17.1

防御指南

临时缓解措施
在未升级组件前,建议暂时禁用 .txt 文件的在线预览功能,或者在后端对上传的文本文件内容进行清洗,移除所有 HTML 标签和 JavaScript 关键字后再传递给前端渲染。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表