0xN4no/CVE-2026-30048
GitHub: 0xN4no/CVE-2026-30048
NotChatbot WebChat 组件存储型 XSS 漏洞(CVE-2026-30048)的概念验证与完整技术分析文档。
Stars: 0 | Forks: 0
# CVE-2026-30048 - NotChatbot WebChat <= 1.5.0 中的存储型跨站脚本攻击 (XSS)
## 摘要
`@developer.notchatbot/webchat` 包及其之前的版本(含 `1.5.0`)中存在一个存储型跨站脚本攻击 (XSS) 漏洞。
用户提供的输入在被存储和渲染到 AI 驱动的聊天对话历史记录之前,未经过适当的净化处理。这允许攻击者注入任意 JavaScript 代码,并在聊天历史记录被渲染或重新加载时执行。
由于该问题存在于可复用的 WebChat 组件本身,而非单一的网站实现中,因此任何集成了受影响包版本的应用程序都可能受到影响,无论其部署环境如何。
## 受影响产品
- **供应商:** NotChatbot
- **包:** `@developer.notchatbot/webchat`
- **受影响版本:** `1.5.0` 及之前版本
## 漏洞类型
- 存储型跨站脚本攻击 (XSS)
## 受影响组件
- WebChat 消息渲染
- 对话历史记录渲染
## 攻击载体
攻击者可以发送包含恶意 HTML/JavaScript payload 的构造聊天消息。
该 payload 被存储,并在对话历史记录再次渲染时执行。
## 概念验证
### Payload
```
```
```
```
```
```
### 视频演示
https://youtu.be/HklaoNKP9H8
## 复现步骤
1. 使用官方 package/CDN 集成 WebChat 组件
2. 打开聊天界面
3. 将上述 payload 作为聊天消息发送
4. 重新加载或重新打开对话
5. 观察浏览器中的 JavaScript 执行情况
## 影响
- 在受害者浏览器中执行任意 JavaScript
- 会话劫持
- 信息泄露
- 视上下文而定,可能导致账户接管
## 根本原因
用户输入在聊天历史记录渲染逻辑中渲染时,未经过适当的输出编码或 HTML 净化处理。
## 建议修复方案
- 在渲染前对用户输入进行净化和转义
- 使用安全的净化器,例如 DOMPurify
- 默认对输出进行编码
- 实施严格的 Content Security Policy (CSP)
## CVE
CVE-2026-30048
## 参考资料
- https://www.npmjs.com/package/@developer.notchatbot/webchat
- https://app.unpkg.com/@developer.notchatbot/webchat@1.5.0
- https://app.unpkg.com/@developer.notchatbot/webchat@1.4.4
- https://gist.github.com/0xN4no/0601f398942a29259d217ea650f694fe
## 发现者
- Nano (@0xNano)
- https://0xnano.com/
## 时间线
- 发现时间:2026-01
- CVE 分配时间:2026-03
标签:AI聊天, CISA项目, CVE-2026-30048, Github安全, HTML注入, JavaScript注入, NotChatbot WebChat, Web安全漏洞, 会话劫持, 信息泄露, 前端安全, 多模态安全, 存储型XSS, 客户端攻击, 教育, 数据可视化, 漏洞复现, 聊天组件漏洞, 跨站脚本攻击, 输入验证缺失, 输出编码