开源PDF生成库jsPDF曝高危漏洞 全球每周下载量达350万项目面临数据泄露风险

日前,安全研究机构披露了广泛应用于Web开发领域的JavaScript PDF生成库jsPDF存在的严重安全漏洞。该库作为开源项目,在npm注册表上周均下载量超过350万次,被广泛应用于需要动态生成PDF文档的前端应用中,包括报表、发票等场景。 漏洞的严重性不容小觑。根据通用漏洞评分系统(CVSS)评估,该漏洞评分高达9.2,属于严重级别。漏洞编号为CVE-2025-68428,其核心问题在于jsPDF的Node.js构建版本存在本地文件包含和路径遍历缺陷。攻击者可通过操纵文件路径参数,指向系统敏感文件如/etc/passwd或配置文件,进而读取服务器本地文件系统中的机密数据,并将其直接嵌入生成的PDF文件中导出,最终导致敏感信息泄露。 漏洞的触发机制相对直接。当应用程序将未经验证的用户输入直接作为文件路径传递给jsPDF的loadFile、addImage、html、addFont等文件加载方法时,攻击者便可利用路径遍历技术访问非预期的系统文件。该设计缺陷在jsPDF的多个文件加载接口中均存在,扩大了潜在的攻击面。 针对这一威胁,jsPDF维护团队已在4.0.0版本中推出修复方案。新版本通过默认限制文件系统访问权限,转而依赖Node.js的权限模型来管理文件读取操作。然而,安全研究人员指出,该权限模型在Node.js 20版本中仍处于实验阶段,稳定性存在隐患。为确保修复方案有效生效,专家建议开发者将运行环境升级至Node.js 22.13.0、23.5.0或24.0.0及更高版本。 有一点是,升级库版本并非一劳永逸的解决方案。安全研究机构警告,开发者在启用修复方案建议的--permission标志时需格外谨慎。该标志会影响整个Node.js进程的权限配置,若在设置--allow-fs-read参数时权限范围过宽,可能会削弱补丁的防护效果,使系统再次暴露于风险之中。这要求开发者在权限配置上采取最小权限原则,精确限制文件系统的访问范围。 对无法立即升级Node.js版本的旧项目,jsPDF团队建议采取防御性编程措施。开发者应在将用户提供的路径传递给库函数之前,进行严格的输入验证和清洗。具体来说,若文件路径为硬编码、来自受信任的配置源,或经过严格的白名单过滤,可以大幅降低漏洞被利用的风险。这一建议强调了输入验证在安全防护中的重要性。

开源技术推动了创新,但也对安全管理提出更高要求。面对高危漏洞,关键在于能否实现依赖可追踪、权限可控、风险可管理。只有将补丁升级、配置优化与工程化治理结合,才能有效控制漏洞影响,确保系统长期稳定运行。