Astaruf/CVE-2026-41653
GitHub: Astaruf/CVE-2026-41653
针对 BentoPDF ≤ 2.8.2 的存储型 XSS 漏洞 PoC,演示了从 Markdown 注入到静默文件窃取的完整攻击链。
Stars: 0 | Forks: 0
# CVE-2026-41653: BentoPDF ≤ 2.8.2 — Markdown 转 PDF 存储型 XSS → 静默文件窃取
)
-> Victim opens it in Markdown-to-PDF
-> markdown-it renders raw HTML (html: true)
-> preview.innerHTML = html (no DOMPurify)
-> poc_payload.js loaded from attacker server (no CSP)
-> FileReader + hooked app-wide
-> hidden popup re-injects hooks on every tool navigation
-> every file the victim opens is silently exfiltrated
```
## 影响
- **静默文件窃取。** 受害者在当前会话中通过任何 BentoPDF 工具打开的每个文件(PDF、图像、文档)都会被 POST 到攻击者的服务器。
- **WASM 供应链劫持。** 载荷会覆盖 `localStorage['bentopdf:wasm-providers']`,将 PyMuPDF、Ghostscript 和 cpdf WASM 模块的下载重定向到受攻击者控制的主机。
- **跨页面持久化。** 一个隐藏的 1×1 弹窗会轮询 `window.opener`,并在受害者每次导航到不同的工具时重新注入文件挂钩,从而在整个会话期间保持访问权限。
- **Service Worker 缓存投毒(仅限 HTTPS)。** 在 HTTPS 部署环境下,载荷会注册一个 Service Worker 并对 `bentopdf-*` 缓存进行投毒,向浏览器提供的每个 `/assets/*.js` 文件中附加窃取挂钩,其影响可超越当前会话。
## 漏洞详情
### 1. `markdown-it` 中的原生 HTML 透传 (CWE-79)
`src/js/utils/markdown-editor.ts` (第 271–272 行):
```
private mdOptions: MarkdownItOptions = {
html: true, // raw HTML tags pass through the markdown parser
breaks: false,
linkify: true,
typographer: true,
};
```
像 `
`、`
标签:BentoPDF, CVE-2026-41653, CWE-79, DOM注入, Go语言工具, innerHTML, markdown-it, Markdown-to-PDF, PoC, Web安全, XSS, 代码执行, 前端安全, 存储型XSS, 数据可视化, 文件窃取, 暴力破解, 漏洞分析, 漏洞情报, 网络安全, 蓝队分析, 请求拦截, 跨站脚本攻击, 路径探测, 输入验证缺失, 逆向工具, 隐私保护