CVE-2026-31938jsPDF是一个纯JavaScript编写的PDF生成库,广泛应用于前端项目中。该库在4.2.1之前的版本中存在严重的跨站脚本(XSS)漏洞,源于output函数对用户控制的options参数缺乏充分的输入验证。攻击者可以通过构造恶意的output选项参数,向生成的PDF文档中注入任意HTML标签和JavaScript脚本。当受害者在其浏览器中打开包含恶意代码的PDF文件时,注入的脚本将在受害者的浏览器上下文中执行,从而允许攻击者窃取敏感信息(如Cookie、会话令牌、用户数据等)或执行恶意操作。此漏洞的CVSS评分高达9.6,属于严重级别,对使用该库的所有Web应用构成重大安全威胁。攻击者通常通过Web界面或API接口注入恶意参数,整个攻击过程无需认证,但需要一定的用户交互(如诱导用户打开PDF)。
jsPDF库的output函数负责将生成的PDF文档以不同格式输出,该函数接受一个options参数来指定输出方式。在4.2.1之前的版本中,options参数直接传递给内部处理逻辑而未进行安全过滤。攻击者可以通过设置特定的output选项值,注入HTML标签或script标签。漏洞利用的关键在于:当用户通过浏览器打开生成的PDF文件时,嵌入的恶意脚本会被浏览器解析执行。例如,攻击者可以构造包含<script>标签或带有事件处理器的HTML元素(如<img src=x onerror=...>)的output选项。当受害者打开这个精心制作的PDF时,JavaScript代码会在与原网站相同的上下文中执行,从而绕过同源策略限制,获取完整的浏览器访问权限。攻击者利用此漏洞可实现会话劫持、敏感数据窃取、钓鱼攻击等多种恶意行为。