找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4173

积分

0

好友

562

主题
发表于 3 小时前 | 查看: 2| 回复: 0

漏洞概述:CVE-2026-31938

CVE ID:CVE-2026-31938
漏洞名称:jsPDF 输出方法中的 HTML 注入(HTML Injection in output methods)
发布日期:2026年3月17日(NVD/Mitre 记录于 2026-03-18)
发现者:sofianeelhor(GitHub 用户)
修复者:jsPDF 项目维护者
受影响库:jsPDF(npm 包 jspdf),一款广泛用于浏览器端生成 PDF 的 JavaScript 库。

该漏洞于 2026 年 3 月 17 日公开披露,目前尚未见公开的在野利用报告,但因严重性高,建议立即修复。

影响分析

该漏洞允许攻击者通过控制 output 函数的 options 参数,将任意 HTML 代码(例如恶意脚本)注入到打开所创建 PDF 文件的浏览器上下文中。这为 HTML注入攻击打开了大门。

受影响的重载方法和选项包括:

  • ”pdfobjectnewwindow”pdfObjectUrl 选项以及整个 options 对象,该对象会以 JSON 序列化的方式原封不动地包含在生成的 HTML 字符串中。
  • ”pdfjsnewwindow”pdfJsUrlfilename 选项。
  • ”dataurlnewwindow”filename 选项。

攻击场景与原理

攻击可能在以下场景成立:

  1. 应用程序将 output 方法的选项暴露给用户控制(常见于报告生成、动态 PDF 下载等 Web 界面)。
  2. 这些用户提供的值未经充分过滤,就被直接传递给存在漏洞的 output 方法重载。
  3. 受害者在其浏览器中使用该重载方法创建并打开 PDF 文件。
  4. 浏览器在解析生成的 HTML 内容时,会执行攻击者注入的脚本。

这样一来,攻击者就能在受害者的浏览器上下文中运行恶意代码,窃取 Cookie、LocalStorage、会话密钥,甚至修改页面内容,为进一步攻击铺平道路。

攻击向量示例

以下是一个简化的攻击代码示例,展示了如何通过控制 filename 参数注入脚本:

import { jsPDF } from ‘jspdf’;
const doc = new jsPDF();

const payload = ‘x“></iframe><script>window.__n=1</script><iframe src=“’;

doc.output(‘pdfjsnewwindow’, {
  filename: payload,
  pdfJsUrl: ‘viewer.html’
});

漏洞利用与攻击链

利用前提

  • 应用暴露 output 方法的选项给用户(常见于报告生成、动态 PDF 下载等 Web 界面)。
  • 受害者必须在浏览器中实际“打开”生成的 PDF(新窗口模式)。

典型攻击流程

  1. 注入:攻击者通过 Web 接口或 API 提交恶意的 filenamepdfJsUrl 等参数。
  2. 触发:受害者执行生成 PDF 的操作,并在浏览器中打开该 PDF 文件。
  3. 执行:浏览器解析嵌入 PDF 查看器的 HTML 时,执行了攻击者注入的恶意脚本,导致敏感信息泄露或后续攻击。

当前,虽然尚未有公开的 PoC(概念验证代码)或 Exploit(漏洞利用程序),但由于构造原理简单,理论上可被立即利用。目前该漏洞尚未被列入 CISA KEV(已知被利用漏洞)目录。

修复方案

官方补丁

  • 此漏洞已在 jspdf@4.2.1 版本中得到修复。强烈建议所有使用 jsPDF 的项目立即升级至此版本或更高版本。

临时变通方法
如果暂时无法升级,应在将任何用户输入传递给 output 方法之前,对其进行严格的清理和验证,确保其中不包含可执行的 HTML 或 JavaScript 代码。

总结与建议

CVE-2026-31938 是一个典型的客户端 HTML注入漏洞,它提醒我们,即使是在处理 PDF 生成这类看似“安全”的输出时,对用户输入的处理也绝不能掉以轻心。前端开发者应时刻保持安全意识,对来自用户或外部接口的所有数据保持怀疑态度。

对于此类安全问题,及时关注官方通告、更新依赖库是最有效的防御手段。如果你在项目中遇到了类似的安全挑战,欢迎到 云栈社区 与更多开发者交流探讨。




上一篇:CVE-2026-21236 AFD.sys 堆溢出漏洞全解析:从补丁分析到PoC构造
下一篇:从哈希算法原理到存储安全,详解为什么忘记密码只能重置
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-20 13:52 , Processed in 0.674931 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表